package cokr.xit.fims.sndb.web; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.apache.poi.ss.usermodel.CellStyle; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import cokr.xit.applib.Print; import cokr.xit.base.code.CommonCode; import cokr.xit.base.docs.xls.CellDef; import cokr.xit.base.docs.xls.Format; import cokr.xit.base.docs.xls.Style; import cokr.xit.base.docs.xls.XLSWriter; import cokr.xit.base.file.service.FileQuery; import cokr.xit.base.file.service.bean.FileBean; import cokr.xit.base.web.ApplicationController; import cokr.xit.fims.base.service.bean.OgdpBean; import cokr.xit.fims.cmmn.CmmnQuery; import cokr.xit.fims.cmmn.FimsPrintOption; import cokr.xit.fims.cmmn.OtptStngQuery; import cokr.xit.fims.cmmn.OutsourcingFileMaker; import cokr.xit.fims.cmmn.OutsourcingStngQuery; import cokr.xit.fims.cmmn.dao.OtptStngMapper; import cokr.xit.fims.cmmn.hwp.format.SvbtcList; import cokr.xit.fims.cmmn.pdf.print.format.Advntce; import cokr.xit.fims.cmmn.pdf.print.format.Nht; import cokr.xit.fims.cmmn.service.bean.OutsourcingStngBean; import cokr.xit.fims.cmmn.service.bean.StngBean; import cokr.xit.fims.cmmn.xls.FormatMaker; import cokr.xit.fims.cmmn.xls.StyleMaker; import cokr.xit.fims.crdn.Crdn; import cokr.xit.fims.mngt.service.bean.TaskBean; import cokr.xit.fims.mngt.service.bean.TaskProcessor; import cokr.xit.fims.sndb.SndbQuery; import cokr.xit.fims.sndb.Sndng; import cokr.xit.fims.sndb.SndngDtl; import cokr.xit.fims.sndb.Svbtc; import cokr.xit.fims.sndb.service.SndngDtlService; import cokr.xit.fims.sndb.service.SndngService; import cokr.xit.fims.sndb.service.SvbtcService; import cokr.xit.fims.sndb.service.bean.SvbtcBean; import cokr.xit.fims.sprt.SprtQuery; import cokr.xit.fims.sprt.dao.IntegrationSearchMapper; import cokr.xit.fims.sprt.service.IntegrationSearchService; import cokr.xit.fims.sprt.service.bean.MediaBean; import cokr.xit.fims.task.Task; import cokr.xit.foundation.UserInfo; import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataProc; /**발송대장 서비스의 웹 컨트롤러 * *
상세 설명: * *
* ============ 변경 이력 ============ * 2023-08-24 JoJH 최초 작성 * ================================ **/ @Controller @RequestMapping(name="발송반송", value=Sndb01Controller.CLASS_URL) public class Sndb01Controller extends ApplicationController { public static final String CLASS_URL = "/sndb/sndb01"; public class METHOD_URL { public static final String warningTargetMain = "/010/main.do" // 계고장 발송 대상 메인 화면 , getWarningTargetList = "/010/list.do" // 계고장 발송 대상 목록 조회 , getWarningTargetInfo = "/020/info.do" // 계고장 발송 대상 조회 , 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" // 사전통지 발송 대상 메인 화면 , getAdvanceNoticeTargetList = "/050/list.do" // 사전통지 발송 대상 목록 조회 , getAdvanceNoticeTargetInfo = "/060/info.do" // 사전통지 발송 대상 조회 , createAdvanceNoticeSendingList = "/060/createList.do" // 사전통지 발송 대상 목록의 발송 등록 , advanceNoticeSendingMain = "/070/main.do" // 사전통지 발송 현황 메인 화면 , getAdvanceNoticeSendingList = "/070/list.do" // 사전통지 발송 현황 목록 조회 , removeAdvanceNoticeSending = "/070/remove.do" // 사전통지 발송 현황 삭제 , getAdvanceNoticeSendingDetailInfo = "/080/info.do" // 사전통지 발송 현황 상세 화면 , getAdvanceNoticeSendingDetailList = "/080/list.do" // 사전통지 발송 현황 상세 목록 조회 , createSendingLink = "/080/createSndngLink.do" // 사전통지 발송 현황 상세 목록의 우편통합 발송 연계 등록 , makeAdvanceNoticePdf = "/080/makeAdvntcePdf.do" // 사전통지 발송 현황 사전통지서 출력(PDF) , makeAdvanceNoticeOutsourcing = "/080/makeAdvntceOutsourcing.do" // 사전통지 발송 현황 사전통지서 출력(외주파일) , noticeSheetTargetMain = "/090/main.do" // 고지서 발송 대상 메인 화면 , getNoticeSheetTargetList = "/090/list.do" // 고지서 발송 대상 목록 조회 , getNoticeSheetTargetInfo = "/100/info.do" // 고지서 발송 대상 조회 , createNoticeSheetSendingList = "/100/createList.do" // 고지서 발송 대상 목록의 발송 등록 , noticeSheetSendingMain = "/110/main.do" // 고지서 발송 현황 메인 화면 , getNoticeSheetSendingList = "/110/list.do" // 고지서 발송 현황 상세 목록 조회 , removeNoticeSheetSending = "/110/remove.do" // 고지서 발송 현황 삭제 , getNoticeSheetSendingDetailInfo = "/120/info.do" // 고지서 발송 현황 화면 , getNoticeSheetSendingDetailList = "/120/list.do" // 고지서 발송 현황 상세 목록 조회 , makeNoticeSheetPdf = "/120/makeNhtPdf.do" // 고지서 발송 현황 사전통지서 출력(PDF) , makeNoticeSheetOutsourcing = "/120/makeNhtOutsourcing.do" // 고지서 발송 현황 사전통지서 출력(외주파일) , sendingDetailInfo = "/210/info.do" // 수기 반송 등록 상세 , getSendingDetailList = "/210/list.do" // 수기 반송 등록 조회 , sendBackMain = "/220/main.do" // 반송 현황 메인 화면 , getSendBackList = "/220/list.do" // 반송 현황 목록 조회 , removeSendBack = "/220/remove.do" // 반송 삭제 , getSendBackInfo = "/230/info.do" // 반송 정보 조회 , createSendBackList = "/230/createSndbkList.do" // 사전통지 발송 상세 목록의 반송 확인(등록) , createSendBack = "/230/create.do" // 반송 등록 , updateSendBack = "/230/update.do" // 반송 수정 , serviceByPublicNoticeMain = "/240/main.do" // 공시송달 현황 메인 화면 , getServiceByPublicNoticeList = "/240/list.do" // 공시송달 현황 목록 조회 , removeServiceByPublicNotice = "/240/remove.do" // 공시송달 삭제 , makeSvbtcFileFromHwpFormat = "/240/makeSvbtcHwp.do" // 공시송달 한글 파일 출력 , getServiceByPublicNoticeDetailInfo = "/250/info.do" // 공시송달 상세 화면 , getServiceByPublicNoticeDetailList = "/250/list.do" // 공시송달 상세 목록 조회 , makeSvbtcDetailsFileFromHwpFormat = "/250/makeSvbtcDtlHwp.do" // 공시송달 상세 한글 파일 출력 , removeServiceByPublicNoticeEach = "/250/remove.do" // 공시송달 개별 삭제 , getServiceByPublicNoticeInfo = "/260/info.do" // 공시송달 정보 , createServiceByPublicNotice = "/260/create.do" // 공시송달 등록 , updateServiceByPublicNotice = "/260/update.do" // 공시송달 수정 , setNonTaxReceiptIndividualA01List = "/991/nxrpA01List.do" // 과태료대장 단속정보 등록(실시간) A01 , getNonTaxReceiptIndividualA03List = "/991/nxrpA03List.do" // 과태료대장 상세조회(실시간) A03 , getNonTaxReceiptSpecialB01List = "/991/nxrpB01List.do" // 체납상세세목정보(실시간) B01 ; } /**발송대장 서비스*/ @Resource(name="sndngService") private SndngService sndngService; /**발송 상세 서비스*/ @Resource(name="sndngDtlService") private SndngDtlService sndngDtlService; /**공시송달 대장 서비스*/ @Resource(name="svbtcService") private SvbtcService svbtcService; /**업무 정보 서비스*/ @Resource(name="taskBean") private TaskBean taskBean; /**통합 조회 서비스*/ @Resource(name="integrationSearchService") private IntegrationSearchService integrationSearchService; @Resource(name="stngBean") private StngBean stngBean; @Resource(name="fileBean") private FileBean fileBean; @Resource(name = "ogdpBean") private OgdpBean ogdpBean; @Resource(name="svbtcBean") private SvbtcBean svbtcBean; @Resource(name="mediaBean") private MediaBean mediaBean; @Resource(name="otptStngMapper") private OtptStngMapper otptStngMapper; @Resource(name="outsourcingStngBean") protected OutsourcingStngBean outsourcingStngBean; @Resource(name="integrationSearchMapper") private IntegrationSearchMapper integrationSearchMapper; /**계고장 발송 대상 자료 메인화면(sndb/sndb01/010-main)을 연다. * @return /sndb/sndb01/010-main */ @RequestMapping(name = "계고장 발송 대상 메인", value = METHOD_URL.warningTargetMain) public ModelAndView warningTargetMain() { // View(jsp)에서 사용할 공통코드를 조회 List
{
* "wrngSndngTrgtList": [계고장 발송 대상 목록]
* "wrngSndngTrgtStart": 계고장 발송 대상 목록 시작 인덱스
* "wrngSndngTrgtFetch": 한 번에 가져오는 계고장 발송 대상 목록 수
* "wrngSndngTrgtTotal": 조회 결과 찾은 전체 계고장 발송 대상 수
* }
*/
@Task
@RequestMapping(name="계고장 발송 대상 목록 조회", value=METHOD_URL.getWarningTargetList)
public ModelAndView getWarningTargetList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List> result = sndngService.getWrngTrgtList(setFetchSize(req));
return setPagingInfo(new ModelAndView("jsonView"), result, "");
} else {
List{
* "wrngSndngTrgts": [계고장 발송 대상 목록]
* }
*/
@Task
@RequestMapping(name="계고장 발송 대상 상세조회", value=METHOD_URL.getWarningTargetInfo)
public ModelAndView getWarningTargetInfo(HttpServletRequest hReq, SndbQuery req) {
ModelAndView mav = getWarningTargetList(req);
if (jsonResponse()) {
mav.setViewName("jsonView");
} else {
String egp002 = "EGP002"; // 우편취급 구분
Map {
* "saved": 등록되었으면 true, 그렇지 않으면 false
* }
*/
@Task
@RequestMapping(name="계고장 발송 등록", value=METHOD_URL.createWarningSendingList)
public ModelAndView createWarningSendingList(SndbQuery req, Sndng sndng) {
DataProc result = sndngService.createWrngSndngList(req, sndng);
return new ModelAndView("jsonView")
.addObject("saved", result.isSuccess())
.addObject("sndng", result.getTarget())
.addObject("rtnMsg", result.getMessage());
}
/**계고장 발송 현황 메인화면(sndb/sndb01/030-main)을 연다.
* @return /sndb/sndb01/030-main
*/
@RequestMapping(name = "계고장 발송 현황 메인", value = METHOD_URL.warningSendingMain)
public ModelAndView warningSendingMain() {
// View(jsp)에서 사용할 공통코드를 조회
Map {
* "sndngList": [계고장 발송 현황 목록]
* "sndngStart": 계고장 발송 현황 목록 시작 인덱스
* "sndngFetch": 한 번에 가져오는 계고장 발송 현황 목록 수
* "sndngTotal": 조회 결과 찾은 전체 계고장 발송 현황 수
* }
*/
@Task
@RequestMapping(name="계고장 발송 현황 목록 조회", value=METHOD_URL.getWarningSendingList)
public ModelAndView getWarningSendingList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List> result = sndngService.getWrngSndngList(setFetchSize(req));
return setPagingInfo(new ModelAndView("jsonView"), result, "");
} else {
List{
* "sndngDtls": [계고장 발송 상세 목록]
* }
*/
@Task
@RequestMapping(name="계고장 발송 현황 상세 화면", value=METHOD_URL.getWarningSendingDetailInfo)
public ModelAndView getWarningSendingDetailInfo(HttpServletRequest hReq, SndbQuery req) {
ModelAndView mav = getWarningSendingDetailList(req);
if (jsonResponse()) {
mav.setViewName("jsonView");
} else {
mav.setViewName("fims/sndb/sndb01040-info");
mav.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("mainQuery", toJson(req)) // 검색 조건
.addObject("List", toJson(mav.getModel().get("List"))) // 데이터
.addObject("Paging", toJson(mav.getModel().get("Paging"))) // 페이징
;
}
return mav;
}
/**계고장 발송 현황 - 발송상세 목록을 조회하여 반환한다.
* {@link SndngService#getSndngList(SndngQuery)} 참고
* @param req 발송대장 조회 조건
* @return jsonView
* {
* "sndngDtlList": [발송상세 목록]
* "sndngDtlStart": 발송상세 목록 시작 인덱스
* "sndngDtlFetch": 한 번에 가져오는 발송상세 목록 수
* "sndngDtlTotal": 조회 결과 찾은 전체 발송상세 수
* }
*/
@Task
@RequestMapping(name="계고장 발송 현황 상세 목록 조회", value=METHOD_URL.getWarningSendingDetailList)
public ModelAndView getWarningSendingDetailList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List> result = sndngDtlService.getSndngDtlList(setFetchSize(req));
return setPagingInfo(new ModelAndView("jsonView"), result, "");
} else {
List {
* "saved": 등록되었으면 true, 그렇지 않으면 false
* }
*/
@Task
@RequestMapping(name="계고장 발송대장 제거", value=METHOD_URL.removeWarningSending)
public ModelAndView removeWarningSending(Sndng sndng) {
String rtnMsg = "";
// 발송 ID 단건 삭제
if (isEmpty(sndng.getSndngIds())) {
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;
}
}
return new ModelAndView("jsonView")
.addObject("saved", rtnMsg.contains("[S]"))
.addObject("rtnMsg", rtnMsg);
}
/**사전통지 발송 대상 자료 메인화면(sndb/sndb01/050-main)을 연다.
* @return /sndb/sndb01/050-main
*/
@RequestMapping(name = "사전통지 발송 대상 메인", value = METHOD_URL.advanceNoticeTargetMain)
public ModelAndView advanceNoticeTargetMain() {
// View(jsp)에서 사용할 공통코드를 조회
List {
* "sndngList": [사전통지 발송 대상 목록]
* "sndngStart": 사전통지 발송 대상 목록 시작 인덱스
* "sndngFetch": 한 번에 가져오는 사전통지 발송 대상 목록 수
* "sndngTotal": 조회 결과 찾은 전체 사전통지 발송 대상 수
* }
*/
@Task
@RequestMapping(name="사전통지 발송 대상 목록 조회", value=METHOD_URL.getAdvanceNoticeTargetList)
public ModelAndView getAdvanceNoticeTargetList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List> result = sndngService.getAdvntceTrgtList(setFetchSize(req));
return setPagingInfo(new ModelAndView("jsonView"), result, "");
} else {
List{
* "advntceSndngTrgs": [사전통지 발송 대상 목록]
* }
*/
@Task
@RequestMapping(name="사전통지 발송 대상 상세조회", value=METHOD_URL.getAdvanceNoticeTargetInfo)
public ModelAndView getAdvanceNoticeTargetInfo(HttpServletRequest hReq, SndbQuery req) {
ModelAndView mav = getAdvanceNoticeTargetList(req);
if (jsonResponse()) {
mav.setViewName("jsonView");
} else {
String egp002 = "EGP002"; // 우편취급 구분
Map {
* "saved": 등록되었으면 true, 그렇지 않으면 false
* }
*/
@Task
@RequestMapping(name="사전통지 발송 등록", value=METHOD_URL.createAdvanceNoticeSendingList)
public ModelAndView createAdvanceNoticeSendingList(SndbQuery req, Sndng sndng) {
DataProc result = sndngService.createAdvntceSndngList(req, sndng);
return new ModelAndView("jsonView")
.addObject("saved", result.isSuccess())
.addObject("sndng", result.getTarget())
.addObject("rtnMsg", result.getMessage());
}
/**사전통지 발송 현황 메인화면(sndb/sndb01/070-main)을 연다.
*
* @return /sndb/sndb01/070-main
*/
@RequestMapping(name = "사전통지 발송 현황 메인", value = METHOD_URL.advanceNoticeSendingMain)
public ModelAndView advanceNoticeSendingMain() {
// View(jsp)에서 사용할 공통코드를 조회
Map {
* "sndngList": [사전통지 발송 현황 목록]
* "sndngStart": 사전통지 발송 현황 목록 시작 인덱스
* "sndngFetch": 한 번에 가져오는 사전통지 발송 현황 목록 수
* "sndngTotal": 조회 결과 찾은 전체 사전통지 발송 현황 수
* }
*/
@Task
@RequestMapping(name="사전통지 발송 현황 목록 조회", value=METHOD_URL.getAdvanceNoticeSendingList)
public ModelAndView getAdvanceNoticeSendingList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List> result = sndngService.getAdvntceSndngList(setFetchSize(req));
return setPagingInfo(new ModelAndView("jsonView"), result, "");
} else {
List {
* "saved": 삭제되었으면 true, 그렇지 않으면 false
* }
*/
@Task
@RequestMapping(name="사전통지 발송대장 제거", value=METHOD_URL.removeAdvanceNoticeSending)
public ModelAndView removeAdvanceNoticeSending(Sndng sndng) {
String rtnMsg = "";
// 발송 ID 단건 삭제
if (isEmpty(sndng.getSndngIds())) {
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;
}
}
return new ModelAndView("jsonView")
.addObject("saved", rtnMsg.contains("[S]"))
.addObject("rtnMsg", rtnMsg);
}
/**사전통지 발송 현황 - 발송상세 화면(sndb/sndb01/080-info)을 연다.
* @param sndngId 발송 ID
* @return fims/sndb/sndb01080-info 또는 jsonView
* {
* "sndngDtls": [사전통지 발송 상세 목록]
* }
*/
@Task
@RequestMapping(name="사전통지 발송 현황 상세 화면", value=METHOD_URL.getAdvanceNoticeSendingDetailInfo)
public ModelAndView getAdvanceNoticeSendingDetailInfo(HttpServletRequest hReq, SndbQuery req) {
ModelAndView mav = getAdvanceNoticeSendingDetailList(req);
if (jsonResponse()) {
mav.setViewName("jsonView");
} else {
mav.setViewName("fims/sndb/sndb01080-info");
mav.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("pageName", "sndb01080") // 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("mainQuery", toJson(req)) // 검색 조건
.addObject("List", toJson(mav.getModel().get("List"))) // 데이터
.addObject("Paging", toJson(mav.getModel().get("Paging"))) // 페이징
;
}
return mav;
}
/**사전통지 발송 현황 - 발송상세 목록을 조회하여 반환한다.
* {@link SndngService#getSndngList(SndngQuery)} 참고
* @param req 발송대장 조회 조건
* @return jsonView
* {
* "sndngDtlList": [발송상세 목록]
* "sndngDtlStart": 발송상세 목록 시작 인덱스
* "sndngDtlFetch": 한 번에 가져오는 발송상세 목록 수
* "sndngDtlTotal": 조회 결과 찾은 전체 발송상세 수
* }
*/
@Task
@RequestMapping(name="사전통지 발송 현황 상세 목록 조회", value=METHOD_URL.getAdvanceNoticeSendingDetailList)
public ModelAndView getAdvanceNoticeSendingDetailList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List> result = sndngDtlService.getSndngDtlList(setFetchSize(req));
return setPagingInfo(new ModelAndView("jsonView"), result, "");
} else {
List {
* "sndngList": [사전통지 발송 대상 목록]
* "sndngStart": 사전통지 발송 대상 목록 시작 인덱스
* "sndngFetch": 한 번에 가져오는 사전통지 발송 대상 목록 수
* "sndngTotal": 조회 결과 찾은 전체 사전통지 발송 대상 수
* }
*/
@Task
@RequestMapping(name="고지서 발송 대상 목록 조회", value=METHOD_URL.getNoticeSheetTargetList)
public ModelAndView getNoticeSheetTargetList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List> result = sndngService.getNhtTrgtList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "nhtTrgt");
} else {
List{
* "sndngDtls": [고지서 발송 대상 상세 목록]
* }
*/
@Task
@RequestMapping(name="고지서 발송 대상 상세 화면", value=METHOD_URL.getNoticeSheetTargetInfo)
public ModelAndView getNoticeSheetTargetInfo(HttpServletRequest hReq, SndbQuery req) {
// View(jsp)에서 사용할 공통코드를 조회
List {
* "saved": 등록되었으면 true, 그렇지 않으면 false
* }
*/
@Task
@RequestMapping(name="고지서 발송대장 등록", value=METHOD_URL.createNoticeSheetSendingList)
public ModelAndView createNoticeSheetSendingList(SndbQuery req, Sndng sndng) {
DataProc result = sndngService.createNhtSndngList(req, sndng);
return new ModelAndView("jsonView")
.addObject("saved", result.isSuccess())
.addObject("sndng", result.getTarget())
.addObject("rtnMsg", result.getMessage());
}
/**고지서 발송 현황 메인화면(sndb/sndb01/110-main)을 연다.
*
* @return /sndb/sndb01/110-main
*/
@RequestMapping(name = "고지서 발송 현황 메인", value = METHOD_URL.noticeSheetSendingMain)
public ModelAndView noticeSheetSendingMain() {
// View(jsp)에서 사용할 공통코드를 조회
Map {
* "sndngList": [고지서 발송 현황 목록]
* "sndngStart": 고지서 발송 현황 목록 시작 인덱스
* "sndngFetch": 한 번에 가져오는 고지서 발송 현황 목록 수
* "sndngTotal": 조회 결과 찾은 전체 고지서 발송 현황 수
* }
*/
@Task
@RequestMapping(name="고지서 발송 현황 목록 조회", value=METHOD_URL.getNoticeSheetSendingList)
public ModelAndView getNoticeSheetSendingList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List> result = sndngService.getSndngList(setFetchSize(req));
return setPagingInfo(new ModelAndView("jsonView"), result, "");
} else {
List {
* "saved": 저장되었으면 true, 그렇지 않으면 false
* }
*/
@Task
@RequestMapping(name="고지서 발송대장 삭제", value=METHOD_URL.removeNoticeSheetSending)
public ModelAndView removeNoticeSheetSending(Sndng sndng) {
String rtnMsg = "";
// 발송(sndngId) 단건 삭제
if (isEmpty(sndng.getSndngIds())) {
rtnMsg = sndngService.removeSndng(sndng);
} else {
// 발송 IDs 만큼 삭제 반복..
for (String sndngId : sndng.getSndngIds()) {
Sndng deltSndng = new Sndng();
deltSndng.setSndngId(sndngId);
deltSndng.setDelRsn(sndng.getDelRsn());
// 발송 삭제 호출
rtnMsg = sndngService.removeSndng(deltSndng);
if (!rtnMsg.contains("[S]")) // 오류가 발생하였으면 종료..
break;
}
}
return new ModelAndView("jsonView")
.addObject("saved", rtnMsg.contains("[S]"))
.addObject("rtnMsg", rtnMsg);
}
/**고지서 발송 현황 - 발송상세 화면(sndb/sndb01/120-info)을 연다.
* @param sndngId 발송 ID
* @return fims/sndb/sndb01120-info 또는 jsonView
* {
* "sndngDtls": [고지서 발송 상세 목록]
* }
*/
@Task
@RequestMapping(name="고지서 발송 현황 상세 화면", value=METHOD_URL.getNoticeSheetSendingDetailInfo)
public ModelAndView getNoticeSheetSendingDetailInfo(HttpServletRequest hReq, SndbQuery req) {
boolean json = jsonResponse();
ModelAndView mav = getNoticeSheetSendingDetailList(req);
if (json) {
mav.setViewName("jsonView");
} else {
mav.setViewName("fims/sndb/sndb01120-info");
mav.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("pageName", "sndb01120") // 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("mainQuery", toJson(req)) // 검색 조건
.addObject("List", toJson(mav.getModel().get("List"))) // 데이터
.addObject("Paging", toJson(mav.getModel().get("Paging"))) // 페이징
;
}
return mav;
}
/**고지서 발송 현황 - 발송상세 목록을 조회하여 반환한다.
* {@link SndngService#getSndngList(SndngQuery)} 참고
* @param req 발송대장 조회 조건
* @return jsonView
* {
* "sndngDtlList": [발송상세 목록]
* "sndngDtlStart": 발송상세 목록 시작 인덱스
* "sndngDtlFetch": 한 번에 가져오는 발송상세 목록 수
* "sndngDtlTotal": 조회 결과 찾은 전체 발송상세 수
* }
*/
@Task
@RequestMapping(name="고지서 발송 현황 상세 목록 조회", value=METHOD_URL.getNoticeSheetSendingDetailList)
public ModelAndView getNoticeSheetSendingDetailList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List> result = sndngDtlService.getSndngDtlList(setFetchSize(req));
return setPagingInfo(new ModelAndView("jsonView"), result, "");
} else {
List {
* "saved": 등록되었으면 true, 그렇지 않으면 false
* }
*/
@Task
@RequestMapping(name="우편통합 발송 연계 등록", value=METHOD_URL.createSendingLink)
public ModelAndView createSendingLink(Sndng sndng) {
String rtnMsg = sndngService.createSndngLink(sndng);
return new ModelAndView("jsonView")
.addObject("saved", rtnMsg.contains("[S]"))
.addObject("rtnMsg", rtnMsg);
}
/**수기 반송 등록 정보(sndb/sndb01/210-info)을 연다.
*
* @return /sndb/sndb01/210-info
*/
@Task
@RequestMapping(name = "수기 반송 등록 정보 조회", value = METHOD_URL.sendingDetailInfo)
public ModelAndView sendingDetailInfo(HttpServletRequest hReq, SndbQuery req) {
// View(jsp)에서 사용할 공통코드를 조회
Map {
* "sndngDtlList": [발송상세 목록]
* "sndngDtlStart": 발송상세 목록 시작 인덱스
* "sndngDtlFetch": 한 번에 가져오는 발송상세 목록 수
* "sndngDtlTotal": 조회 결과 찾은 전체 발송상세 수
* }
*/
@Task
@RequestMapping(name="반송 대상 목록 조회", value=METHOD_URL.getSendingDetailList)
public ModelAndView getSendingDetailList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List> result = sndngDtlService.getSndngDtlList(setFetchSize(req));
return setPagingInfo(new ModelAndView("jsonView"), result, "");
} else {
List {
* "saved": 수정되었으면 true, 그렇지 않으면 false
* }
*/
@Task
@RequestMapping(name="발송상세 목록의 반송 정보 등록", value=METHOD_URL.createSendBackList)
public ModelAndView createSendBackList(SndbQuery req) {
String rtnMsg = sndngDtlService.createSndbkList(req);
return new ModelAndView("jsonView")
.addObject("saved", rtnMsg.contains("[S]"))
.addObject("rtnMsg", rtnMsg);
}
/**발송상세 정보의 반송 정보를 등록한다.
* @param sndngDtl 발송상세 정보
* @return jsonView
* {
* "saved": 수정되었으면 true, 그렇지 않으면 false
* }
*/
@Task
@RequestMapping(name="발송상세의 반송 정보 등록", value=METHOD_URL.createSendBack)
public ModelAndView createSendBack(SndngDtl sndngDtl) {
String rtnMsg = sndngDtlService.createSndbk(sndngDtl);
return new ModelAndView("jsonView")
.addObject("saved", rtnMsg.contains("[S]"))
.addObject("rtnMsg", rtnMsg);
}
/**발송상세 정보의 반송 정보를 수정한다.
* @param sndngDtl 발송상세 정보
* @return jsonView
* {
* "saved": 수정되었으면 true, 그렇지 않으면 false
* }
*/
@Task
@RequestMapping(name="발송상세의 반송 정보 수정", value=METHOD_URL.updateSendBack)
public ModelAndView updateSendBack(SndngDtl sndngDtl) {
String rtnMsg = sndngDtlService.updateSndbk(sndngDtl);
return new ModelAndView("jsonView")
.addObject("saved", rtnMsg.contains("[S]"))
.addObject("rtnMsg", rtnMsg);
}
/**발송상세 정보의 반송 정보를 삭제한다.
* @param sndngDtl 발송상세 정보
* @return jsonView
* {
* "saved": 수정되었으면 true, 그렇지 않으면 false
* }
*/
@Task
@RequestMapping(name="발송 상세의 반송 정보 삭제", value=METHOD_URL.removeSendBack)
public ModelAndView removeSendBack(SndngDtl sndngDtl) {
String rtnMsg = "";
// 발송상세의 반송 정보 삭제
if (isEmpty(sndngDtl.getSndngDtlIds())) {
rtnMsg = sndngDtlService.removeSndbk(sndngDtl);
} else {
// 발송상세 IDs 만큼 반송 삭제 반복..
for (String sndngDtlId : sndngDtl.getSndngDtlIds()) {
SndngDtl deltSndngDtl = new SndngDtl();
deltSndngDtl.setSndngDtlId(sndngDtlId);
// 반송 삭제 호출
rtnMsg = sndngDtlService.removeSndbk(deltSndngDtl);
if (!rtnMsg.contains("[S]")) // 오류가 발생하였으면 종료..
break;
}
}
return new ModelAndView("jsonView")
.addObject("saved", rtnMsg.contains("[S]"))
.addObject("rtnMsg", rtnMsg);
}
/**반송 현황 메인화면(sndb/sndb01/220-main)을 연다.
*
* @return /sndb/sndb01/220-main
*/
@RequestMapping(name = "반송 현황 메인", value = METHOD_URL.sendBackMain)
public ModelAndView sendBackMain() {
// View(jsp)에서 사용할 공통코드를 조회
Map {
* "sndngList": [반송 현황 목록]
* "sndngStart": 반송 현황 목록 시작 인덱스
* "sndngFetch": 한 번에 가져오는 반송 현황 목록 수
* "sndngTotal": 조회 결과 찾은 전체 반송 현황 수
* }
*/
@Task
@RequestMapping(name="반송 목록 조회", value=METHOD_URL.getSendBackList)
public ModelAndView getSendBackList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List> result = sndngDtlService.getSndbkList(setFetchSize(req));
return setPagingInfo(new ModelAndView("jsonView"), result, "");
} else {
List{
* "sndngDtls":
* }
*/
@Task
@RequestMapping(name="발송상세의 반송(미배달) 정보 조회", value=METHOD_URL.getSendBackInfo)
public ModelAndView getSendBackInfo(HttpServletRequest hReq, SndbQuery req) {
DataObject info = sndngDtlService.getSndbkInfo(req);
// 등록을 호출하였지만 등록된 미배달 사유가 있는지 확인.
if ("create".equals(req.getCallPurpose()) && !isEmpty(info.get("UNDLVR_RSN_NM"))) {
return new ModelAndView("jsonView")
.addObject("pageName", "sndb01230")
.addObject("rtnMsg", "이미 등록된 미배달 사유가 있습니다.");
} else {
boolean json = jsonResponse();
// View(jsp)에서 사용할 공통코드를 조회
Map {
* "sndngList": [공시송달 현황 목록]
* "sndngStart": 공시송달 현황 목록 시작 인덱스
* "sndngFetch": 한 번에 가져오는 공시송달 현황 목록 수
* "sndngTotal": 조회 결과 찾은 전체 공시송달 현황 수
* }
*/
@Task
@RequestMapping(name="공시송달 목록 조회", value=METHOD_URL.getServiceByPublicNoticeList)
public ModelAndView getServiceByPublicNoticeList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List> result = svbtcService.getSvbtcList(setFetchSize(req));
return setPagingInfo(new ModelAndView("jsonView"), result, "");
} else {
List{
* "sndngDtls": [발송 상세 목록]
* }
*/
@Task
@RequestMapping(name="공시송달 상세 화면", value=METHOD_URL.getServiceByPublicNoticeDetailInfo)
public ModelAndView getServiceByPublicNoticeDetailInfo(HttpServletRequest hReq, SndbQuery req) {
ModelAndView mav = getServiceByPublicNoticeDetailList(req);
if (jsonResponse()) {
mav.setViewName("jsonView");
} else {
mav.setViewName("fims/sndb/sndb01250-info");
mav.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("pageName", "sndb01250") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("prefixUrl", CLASS_URL) // prefixUrl
.addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD)
.addObject("taskSeCd", req.getTaskSeCd()) // 업무 구분 코드(TASK_SE_CD)
.addObject("svbtcId", req.getSvbtcId()) // 업무 구분 코드(TASK_SE_CD)
.addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("List", toJson(mav.getModel().get("List"))) // 데이터
.addObject("Paging", toJson(mav.getModel().get("Paging"))) // 페이징
;
}
return mav;
}
/**공시송달 발송 현황 - 공시송달 상세 목록을 조회하여 반환한다.
* {@link SndngService#getSndngList(SndngQuery)} 참고
* @param req 발송대장 조회 조건
* @return jsonView
* {
* "sndngDtlList": [공시송달 상세 목록]
* "sndngDtlStart": 공시송달 상세 목록 시작 인덱스
* "sndngDtlFetch": 한 번에 가져오는 공시송달 상세 목록 수
* "sndngDtlTotal": 조회 결과 찾은 전체 공시송달 상세 수
* }
*/
@Task
@RequestMapping(name="공시송달 상세 목록 조회", value=METHOD_URL.getServiceByPublicNoticeDetailList)
public ModelAndView getServiceByPublicNoticeDetailList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List> result = svbtcService.getSvbtcDtlList(setFetchSize(req));
return setPagingInfo(new ModelAndView("jsonView"), result, "");
} else {
List{
* "svbtcInfo": 공시송달 정보
* }
*/
@Task
@RequestMapping(name="공시송달 정보 상세조회", value=METHOD_URL.getServiceByPublicNoticeInfo)
public ModelAndView getServiceByPublicNoticeInfo(HttpServletRequest hReq, SndbQuery req) {
boolean json = jsonResponse();
// 공시송달 정보 조회
DataObject svbtcInfo = new DataObject();
if (req.getSvbtcId() == null) {
svbtcInfo.set("SGG_CD", req.getSggCd()); // 시군구 코드
svbtcInfo.set("TASK_SE_CD", req.getTaskSeCd()); // 업무 구분 코드
svbtcInfo.set("SNDNG_SE_CD", req.getSchSndngSeCd()); // 발송 구분 코드
svbtcInfo.set("TNOCS", req.getTnocs()); // 총건수
} else {
svbtcInfo = svbtcService.getSvbtcInfo(req);
}
// View(jsp)에서 사용할 공통코드를 조회
Map {
* "saved": 수정되었으면 true, 그렇지 않으면 false
* }
*/
@Task
@RequestMapping(name="공시송달 등록", value=METHOD_URL.createServiceByPublicNotice)
public ModelAndView createServiceByPublicNotice(SndbQuery req, Svbtc svbtc) {
String rtnMsg = svbtcService.createSvbtc(req, svbtc);
return new ModelAndView("jsonView")
.addObject("saved", rtnMsg.contains("[S]"))
.addObject("rtnMsg", rtnMsg);
}
/**공시송달 대장에 공시송달 정보를 수정한다.
* @param svbtc 공시송달 정보
* @return jsonView
* {
* "saved": 수정되었으면 true, 그렇지 않으면 false
* }
*/
@Task
@RequestMapping(name="공시송달 수정", value=METHOD_URL.updateServiceByPublicNotice)
public ModelAndView updateServiceByPublicNotice(Svbtc svbtc) {
String rtnMsg = svbtcService.updateSvbtc(svbtc);
return new ModelAndView("jsonView")
.addObject("saved", rtnMsg.contains("[S]"))
.addObject("rtnMsg", rtnMsg);
}
/**지정한 공시송달 ID에 해당하는 공시송달 대장을 제거한다.
* @param svbtcId 공시송달 ID
* @return jsonView
* {
* "affected": 저장된 정보수
* "saved": 저장되었으면 true, 그렇지 않으면 false
* }
*/
@Task
@RequestMapping(name="공시송달 삭제", value=METHOD_URL.removeServiceByPublicNotice)
public ModelAndView removeServiceByPublicNotice(Svbtc svbtc) {
String rtnMsg = "";
if (isEmpty(svbtc.getSvbtcIds())) {
rtnMsg = svbtcService.removeSvbtc(svbtc);
} else {
// 공시송달 Ids 만큼 삭제 반복..
for (String svbtcId : svbtc.getSvbtcIds()) {
Svbtc deltSvbtc = new Svbtc();
deltSvbtc.setSvbtcId(svbtcId);
deltSvbtc.setDelRsn(svbtc.getDelRsn());
// 공시송달 삭제 호출
rtnMsg = svbtcService.removeSvbtc(deltSvbtc);
if (!rtnMsg.contains("[S]")) // 오류가 발생하였으면 종료..
break;
}
}
return new ModelAndView("jsonView")
.addObject("saved", rtnMsg.contains("[S]"))
.addObject("rtnMsg", rtnMsg);
}
/**지정한 공시송달 ID에 해당하는 공시송달 대장을 제거한다.
* @param svbtcId 공시송달 ID
* @return jsonView
* {
* "affected": 저장된 정보수
* "saved": 저장되었으면 true, 그렇지 않으면 false
* }
*/
@Task
@RequestMapping(name="공시송달 개별 삭제", value=METHOD_URL.removeServiceByPublicNoticeEach)
public ModelAndView removeServiceByPublicNoticeEach(Svbtc svbtc) {
String rtnMsg = svbtcService.removeSvbtcEach(svbtc);
return new ModelAndView("jsonView")
.addObject("saved", rtnMsg.contains("[S]"))
.addObject("rtnMsg", rtnMsg);
}
/** 사전통지서를 PDF 파일로 작성한다.
* @return 사전통지서 PDF파일
*/
@Task
@RequestMapping(name="사전통지서 pdf 파일 생성", value=METHOD_URL.makeAdvanceNoticePdf)
public ModelAndView makeAdvanceNoticePdf(SndbQuery req, FimsPrintOption printOption) {
List {
* "saved": 등록되었으면 true, 그렇지 않으면 false
* }
*/
@Task({"ECA","DPV","PES","DVS"})
@RequestMapping(name="세외수입 과태료대장 단속정보 등록", value=METHOD_URL.setNonTaxReceiptIndividualA01List)
public ModelAndView setNonTaxReceiptIndividualA01List(SndbQuery req, Sndng sndng) {
if ("lntris".equals(TaskProcessor.get().getNtrisInterface(req.getTaskSeCd()))) { // 지방 세외수입
boolean saved = false;
String rtnMsg = "";
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setTaskSeCd(req.getTaskSeCd());
// 발송상세 Ids 만큼 반복..
for (DataObject dtl: sndngDtlService.getSndngTrgtDtlIds(req)) {
sndngDtl.setSndngDtlId(dtl.string("SNDNG_DTL_ID"));
sndngDtl.setCrdnId(dtl.string("CRDN_ID"));
sndngDtl.setLinkTrgtCd(dtl.string("LINK_TRGT_CD"));
sndngDtl.setLinkMngKey(dtl.string("LINK_MNG_KEY"));
sndngDtl.setSndngDtlSttsCd(dtl.string("SNDNG_DTL_STTS_CD"));
sndngDtl.setDelYn("N");
sndngDtl.setSndngYmd(sndng.getSndngYmd());
rtnMsg = sndngDtlService.setNxrpIndivA01List(sndngDtl);
saved = rtnMsg.contains("[S]");
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
} else { // 서울 세외수입
if (!"xls".equals(req.getDownload())) {
String resp = sndngDtlService.registerPreNotice(req);
return new ModelAndView("jsonView")
.addObject("saved", true)
.addObject("rtnMsg", resp);
} else {
return new ModelAndView("downloadView")
.addObject("download", sndngDtlService.downloadPreNotices(req));
}
}
}
/**과태료대장 상세조회(실시간)한다.
* @param req 발송대장 조회 조건
* @return jsonView
* {
* "saved": 등록되었으면 true, 그렇지 않으면 false
* }
*/
@Task({"ECA","DPV","PES","DVS"})
@RequestMapping(name="세외수입 과태료대장 상세조회", value=METHOD_URL.getNonTaxReceiptIndividualA03List)
public ModelAndView getNonTaxReceiptIndividualA03List(SndbQuery req) {
boolean saved = false;
List {
* "saved": 등록되었으면 true, 그렇지 않으면 false
* }
*/
@Task
@RequestMapping(name="세외수입 체납상세 세목정보 조회", value=METHOD_URL.getNonTaxReceiptSpecialB01List)
public ModelAndView getNonTaxReceiptSpecialB01List(SndbQuery req) {
ModelAndView mav = getNonTaxReceiptIndividualA03List(req);
if (Boolean.TRUE.equals(mav.getModel().get("saved"))) {
List