공시송달 수정.

main
jjh 10 months ago
parent e6acf793c8
commit 8be358f532

@ -12,16 +12,6 @@ import lombok.Setter;
@Setter
public class Svbtc extends AbstractEntity {
/**
* IDs
*/
private String[] sndngDtlIDs;
/**
* ID
*/
private String sndngDtlId;
/**
* ID
*/
@ -70,11 +60,26 @@ public class Svbtc extends AbstractEntity {
/**
*
*/
private String delYn;
private String delYN;
/**
*
*/
private String delRsn;
/**
* IDs
*/
private String[] svbtcIDs;
/**
* IDs
*/
private String[] sndngDtlIDs;
/**
* ID
*/
private String sndngDtlId;
}

@ -40,6 +40,10 @@ public interface SvbtcMapper extends AbstractMapper {
* @return
*/
default DataObject selectSvbtcInfo(SndbQuery req) {
// 삭제 여부 확인
if (req.getDelYN() == null) {
req.setDelYN("N");
}
// 기본 정렬
if (req.getOrderBy() == null) {
req.setOrderBy("SV.SVBTC_ID DESC");
@ -50,6 +54,12 @@ public interface SvbtcMapper extends AbstractMapper {
return !svbtcs.isEmpty() ? svbtcs.get(0) : null;
}
/** .<br />
* @param req
* @return
*/
List<DataObject> selectSvbtcDtlList(SndbQuery req);
/** .
* @param req
* @return

@ -121,59 +121,22 @@ public interface SndngDtlService {
*/
List<DataObject> getSndbkList(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getSvbtcList(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getSvbtcs(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getSvbtcDtls(SndbQuery req);
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String createSvbtc(Svbtc svbtc);
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String updateSvbtc(Svbtc svbtc);
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String removeSvbtc(Svbtc svbtc);
/** .
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String removeSvbtcList(SndbQuery req);
String createSvbtc(Svbtc svbtc);
/** .
* @param svbtc

@ -0,0 +1,80 @@
package cokr.xit.fims.sndb.service;
import java.util.List;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.sndb.Svbtc;
import cokr.xit.fims.sndb.SndbQuery;
/** .
*
* <p> :
*
* <pre>
* ============ ============
* 2024-01-09 mjkhan
* ================================
* </pre>
*/
public interface SvbtcService {
/** .
* @param req
* @return
*/
List<DataObject> getSvbtcList(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getSvbtcs(SndbQuery req);
/** 1 .
* @param req
* @return
*/
DataObject getSvbtcInfo(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getSvbtcDtlList(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getSvbtcDtls(SndbQuery req);
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String create(Svbtc svbtc);
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String update(Svbtc svbtc);
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String removeSvbtc(Svbtc svbtc);
}

@ -313,37 +313,7 @@ public class SndngDtlBean extends AbstractComponent {
/** .
* @param req
* @return
*/
public List<DataObject> getSvbtcList(SndbQuery req) {
return svbtcMapper.selectSvbtcList(req);
}
/** .
* @param req
* @return
*/
public List<DataObject> getSvbtcs(SndbQuery req) {
return svbtcMapper.selectSvbtcs(req);
}
/** .
* @param req
* @return
*/
public DataObject getSvbtcInfo(SndbQuery req) {
return svbtcMapper.selectSvbtcInfo(req);
}
/** .
* @param req
* @return
*/
public List<DataObject> getSvbtcDtls(SndbQuery req) {
return svbtcMapper.selectSvbtcDtls(req);
}
/** .
* @param svbtc
@ -384,52 +354,7 @@ public class SndngDtlBean extends AbstractComponent {
return rtnMsg;
}
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String updateSvbtc(Svbtc svbtc) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 공시송달(TB_SNDNG_DTL) 대장에 공시송달 정보를 수정 한다.
rtnScs = svbtcMapper.update(svbtc);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("공시송달 정보 수정에 실패하였습니다.");
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
}
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String removeSvbtc(Svbtc svbtc) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 공시송달(TB_SVBTC) 대장을 삭제 한다.
rtnScs = svbtcMapper.delete(svbtc);
if (!rtnScs) {
throw new RuntimeException("공시송달 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
}
/**ID .
* @param req
@ -463,39 +388,4 @@ public class SndngDtlBean extends AbstractComponent {
return rtnMsg;
}
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String removeSvbtcSndngDtl(Svbtc svbtc) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 공시송달(TB_SVBTC) 대장을 삭제 한다.
rtnScs = svbtcMapper.delete(svbtc);
if (!rtnScs) {
throw new RuntimeException("공시송달 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 발송 상세(TB_SNDNG_DTL) 대장에서 공시송달 정보를 삭제 한다.
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setSvbtcId(svbtc.getSvbtcId());
sndngDtl.setSndngDtlSttsCd("05");
rtnScs = sndngDtlMapper.deleteSndngDtlSvbtc(sndngDtl);
if (!rtnScs) {
throw new RuntimeException("발송상세 대장에 공시송달 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
}
}

@ -31,6 +31,10 @@ public class SndngDtlServiceBean extends AbstractServiceBean implements SndngDtl
@Resource(name = "sndngDtlBean")
private SndngDtlBean sndngDtlBean;
/** 공시송달 대장 정보 Bean */
@Resource(name = "svbtcBean")
private SvbtcBean svbtcBean;
@Override
public List<DataObject> getSndngDtlList(SndbQuery req) {
return sndngDtlBean.getSndngDtlList(req);
@ -100,65 +104,14 @@ public class SndngDtlServiceBean extends AbstractServiceBean implements SndngDtl
@Override
public List<DataObject> getSvbtcList(SndbQuery req) {
return sndngDtlBean.getSvbtcList(req);
}
@Override
public List<DataObject> getSvbtcs(SndbQuery req) {
return sndngDtlBean.getSvbtcs(req);
}
@Override
public List<DataObject> getSvbtcDtls(SndbQuery req) {
return sndngDtlBean.getSvbtcDtls(req);
}
@Override
public String createSvbtc(Svbtc svbtc) {
return sndngDtlBean.createSvbtc(svbtc);
}
@Override
public String updateSvbtc(Svbtc svbtc) {
return sndngDtlBean.updateSvbtc(svbtc);
}
@Override
public String removeSvbtc(Svbtc svbtc) {
return sndngDtlBean.removeSvbtc(svbtc);
}
@Override
public String removeSvbtcList(SndbQuery req) {
// 변수 선언
String retMessage = ""; // 처리 결과 메시지
// 공시송달 IDs 건수를 확인하여 1건이하면.. 종료
if (req.getSvbtcIDs().length < 1) {
retMessage = "작업 중 선택 자료가 존재하지 않습니다.";
return retMessage;
}
// 공시송달 IDs 만큼 반복..
for (int iLoop = 0; iLoop < req.getSvbtcIDs().length; iLoop++) {
Svbtc svbtc = new Svbtc();
svbtc.setSvbtcId(req.getSvbtcIDs()[iLoop]); // 공시송달 ID
svbtc.setDelRsn(req.getDelRsn()); // 삭제 사유
// 공시송달 삭제 호출
retMessage = sndngDtlBean.removeSvbtcSndngDtl(svbtc);
// 오류가 발생하였으면 종료..
if (retMessage.contains("[F]")) {
return retMessage;
}
}
return retMessage;
}
@Override
public String removeSvbtcEach(Svbtc svbtc) {
// 변수 선언
@ -189,11 +142,10 @@ public class SndngDtlServiceBean extends AbstractServiceBean implements SndngDtl
int svbtcTnocs = sndngDtlBean.selectTnocsSndngDtlSvbtc(svbtc.getSvbtcId());
if (svbtcTnocs == 0) { // 총건수가 0건이라면 공시송달 대장에서 삭제
retMessage = sndngDtlBean.removeSvbtc(svbtc);
retMessage = svbtcBean.removeSvbtc(svbtc);
} else { // 총건수를 확인하여 공시송달 대장에서 수정
// 공시송달 정보 호출
DataObject svbtcInfo = sndngDtlBean.getSvbtcInfo(new SndbQuery().setSvbtcId(svbtc.getSvbtcId())
.setDelYN("N"));
DataObject svbtcInfo = svbtcBean.getSvbtcInfo(new SndbQuery().setSvbtcId(svbtc.getSvbtcId()));
Svbtc mdfSvbtc = new Svbtc();
@ -204,7 +156,7 @@ public class SndngDtlServiceBean extends AbstractServiceBean implements SndngDtl
mdfSvbtc.setTnocs(svbtcTnocs);
mdfSvbtc.setSvbtcId(svbtc.getSvbtcId());
retMessage = sndngDtlBean.updateSvbtc(mdfSvbtc);
retMessage = svbtcBean.update(mdfSvbtc);
}
// 오류가 발생하였으면 종료..

@ -0,0 +1,193 @@
package cokr.xit.fims.sndb.service.bean;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import cokr.xit.foundation.AbstractComponent;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.sndb.Svbtc;
import cokr.xit.fims.cmmn.CmmnUtil;
import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.fims.sndb.dao.SndngDtlMapper;
import cokr.xit.fims.sndb.dao.SvbtcMapper;
/** Bean
*
* <p> :
*
* <pre>
* ============ ============
* 2024-01-09 JoJH
* ================================
* </pre>
*/
@Component("svbtcBean")
public class SvbtcBean extends AbstractComponent {
/** 공시송달 대장 정보 DAO */
@Resource(name = "svbtcMapper")
private SvbtcMapper svbtcMapper;
/** 발송 상세 정보 DAO */
@Resource(name = "sndngDtlMapper")
private SndngDtlMapper sndngDtlMapper;
/** .
* @param req
* @return
*/
public List<DataObject> getSvbtcList(SndbQuery req) {
// 삭제 여부 확인
if (req.getDelYN() == null) {
req.setDelYN("N");
}
// 정렬 확인
if (req.getOrderBy() == null) {
if (req.getBy() == null) {
req.setOrderBy("REG_DT");
} else {
req.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(req.getBy()));
}
}
return svbtcMapper.selectSvbtcList(req);
}
/** .
* @param req
* @return
*/
public List<DataObject> getSvbtcs(SndbQuery req) {
// 삭제 여부 확인
if (req.getDelYN() == null) {
req.setDelYN("N");
}
if (req.getOrderBy() == null) {
req.setOrderBy("SV.SVBTC_ID");
}
return svbtcMapper.selectSvbtcs(req);
}
/** 1 .
* @param req
* @return
*/
public DataObject getSvbtcInfo(SndbQuery req) {
DataObject svbtcInfo = new DataObject();
if (req.getCallPurpose().equals("create")) {
svbtcInfo.set("SGG_CD", req.getSggCd()); // 시군구 코드
svbtcInfo.set("TASK_SE_CD", req.getTaskSeCd()); // 업무 구분 코드
svbtcInfo.set("SNDNG_SE_CD", req.getSndngSeCd()); // 발송 구분 코드
} else {
svbtcInfo = svbtcMapper.selectSvbtcInfo(req);
}
return svbtcInfo;
}
/** .
* @param req
* @return
*/
public List<DataObject> getSvbtcDtlList(SndbQuery req) {
return svbtcMapper.selectSvbtcDtlList(req);
}
/** .
* @param req
* @return
*/
public List<DataObject> getSvbtcDtls(SndbQuery req) {
return svbtcMapper.selectSvbtcDtls(req);
}
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String create(Svbtc svbtc) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 공시송달(TB_SVBTC) 정보를 등록 한다.
rtnScs = svbtcMapper.insert(svbtc);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("공시송달 정보 등록에 실패하였습니다.");
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
}
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String update(Svbtc svbtc) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 공시송달(TB_SVBTC) 정보를 수정 한다.
rtnScs = svbtcMapper.update(svbtc);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("공시송달 정보 수정에 실패하였습니다.");
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
}
/** .
* @param svbtc
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String removeSvbtc(Svbtc svbtc) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 공시송달(TB_SVBTC) 대장을 삭제 한다.
rtnScs = svbtcMapper.delete(svbtc);
if (!rtnScs) {
throw new RuntimeException("공시송달 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 발송 상세(TB_SNDNG_DTL) 대장에서 공시송달 정보를 삭제 한다.
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setSvbtcId(svbtc.getSvbtcId());
sndngDtl.setSndngDtlSttsCd("05");
rtnScs = sndngDtlMapper.deleteSndngDtlSvbtc(sndngDtl);
if (!rtnScs) {
throw new RuntimeException("발송상세 대장에 공시송달 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
}
}

@ -0,0 +1,107 @@
package cokr.xit.fims.sndb.service.bean;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.sndb.Svbtc;
import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.fims.sndb.service.SvbtcService;
/** .
*
* <p> :
*
* <pre>
* ============ ============
* 2024-01-09 JoJH
* ================================
* </pre>
*/
@Service("svbtcService")
public class SvbtcServiceBean extends AbstractServiceBean implements SvbtcService {
/** 공시송달 대장 정보 Bean */
@Resource(name = "svbtcBean")
private SvbtcBean svbtcBean;
@Override
public List<DataObject> getSvbtcList(SndbQuery req) {
return svbtcBean.getSvbtcList(req);
}
@Override
public List<DataObject> getSvbtcs(SndbQuery req) {
return svbtcBean.getSvbtcs(req);
}
@Override
public DataObject getSvbtcInfo(SndbQuery req) {
return svbtcBean.getSvbtcInfo(req);
}
@Override
public List<DataObject> getSvbtcDtlList(SndbQuery req) {
return svbtcBean.getSvbtcDtlList(req);
}
@Override
public List<DataObject> getSvbtcDtls(SndbQuery req) {
return svbtcBean.getSvbtcDtls(req);
}
@Override
public String create(Svbtc svbtc) {
return svbtcBean.create(svbtc);
}
@Override
public String update(Svbtc svbtc) {
return svbtcBean.update(svbtc);
}
@Override
public String removeSvbtc(Svbtc svbtc) {
// 변수 선언
String rtnMsg = "[F] "; // 처리 결과 메시지
// 공시송달 ID 및 공시송달 IDs 확인하여 null이면 종료
if (svbtc.getSvbtcId() == null && svbtc.getSvbtcIDs() == null) {
rtnMsg = "[F] 작업 중 선택 자료가 존재하지 않습니다.";
return rtnMsg;
}
// 공시송달 삭제 처리
if (svbtc.getSvbtcId() != null) {
rtnMsg = svbtcBean.removeSvbtc(svbtc);
} else {
// 공시송달 IDs 를 확인하여 건수가 1보다 작다면 종료..
if (svbtc.getSvbtcIDs().length < 1) {
rtnMsg = "[F] 작업 중 선택 자료가 존재하지 않습니다.";
return rtnMsg;
}
// 공시송달 IDs 만큼 반복..
for (int iLoop = 0; iLoop < svbtc.getSvbtcIDs().length; iLoop++) {
// 부과제외 ID 설정
svbtc.setSvbtcId(svbtc.getSvbtcIDs()[iLoop]);
// 공시송달 삭제 호출
rtnMsg = svbtcBean.removeSvbtc(svbtc);
// 오류가 발생하였으면 종료..
if (rtnMsg.contains("[F]")) {
return rtnMsg;
}
}
}
return rtnMsg;
}
}

@ -28,6 +28,7 @@ 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.foundation.data.DataObject;
/**
@ -46,49 +47,52 @@ public class Sndb01Controller extends ApplicationController {
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" // 계고장발송 현황 목록 조회
, getWarningSendingInfo = "/040/info.do" // 계고장발송 현황 상세 화면
, getWarningSendingDetailsList = "/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" // 사전통지발송 대상 목록 조회
, getAdvanceNoticeSendingInfo = "/080/info.do" // 사전통지발송 현황 상세 화면
, getAdvanceNoticeSendingDetailsList= "/080/list.do" // 사전통지발송 현황 상세 목록 조회
, createSendingLink = "/080/createSndngLink.do" // 발송상세 목록의 우편통합 발송 연계 등록
, createSendBackList = "/080/createSndbkList.do" // 발송상세 목록의 반송 확인(등록)
, noticeSheetSendingMain = "/090/main.do" // 고지서발송 현황 메인 화면
, getNoticeSheetSendingList = "/090/list.do" // 고지서발송 대상 목록 조회
, getNoticeSheetSendingInfo = "/100/info.do" // 고지서발송 현황 상세 화면
, getNoticeSheetSendingDetailsList = "/100/list.do" // 고지서발송 현황 상세 목록 조회
, noticeSheetSendingTargetInfo = "/110/info.do" // 고지서발송 대상 화면
, sendBackMain = "/230/main.do" // 반송 현황 메인 화면
, getSendBackList = "/230/list.do" // 반송 현황 목록 조회
, serviceByPublicNoticeMain = "/240/main.do" // 공시송달 현황 메인 화면
, getServiceByPublicNoticeList = "/240/list.do" // 공시송달 현황 목록 조회
, unitySendBackTargetMain = "/210/main.do" // 통합 반송 등록 메인
, getSendBackInfo = "/220/info.do" // 반송 정보 조회
, createSendBack = "/220/create.do" // 반송 등록
, updateSendBack = "/220/update.do" // 반송 수정
, deleteSendBack = "/210/delete.do" // 반송 삭제
, createServiceByPublicNotice = "/240/create.do" // 공시송달 등록
, updateServiceByPublicNotice = "/240/update.do" // 공시송달 수정
, removeServiceByPublicNotice = "/240/remove.do" // 공시송달 삭제
, removeServiceByPublicNoticeList = "/240/removes.do" // 공시송달 삭제 리스트
, getServiceByPublicNoticeInfo = "/250/info.do" // 공시송달 상세 조회
, removeServiceByPublicNoticeEach = "/250/remove.do" // 공시송달 삭제 개별
warningTargetMain = "/010/main.do" // 계고장발송 대상 메인 화면
, getWarningTargetList = "/010/list.do" // 계고장발송 대상 목록 조회
, getWarningTargetInfo = "/020/info.do" // 계고장발송 대상 조회
, createWarningSendingList = "/020/createList.do" // 계고장발송 대상 목록의 발송 등록
, warningSendingMain = "/030/main.do" // 계고장발송 현황 메인 화면
, getWarningSendingList = "/030/list.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" // 사전통지발송 대상 목록 조회
, getAdvanceNoticeSendingDetailInfo = "/080/info.do" // 사전통지발송 현황 상세 화면
, getAdvanceNoticeSendingDetailList = "/080/list.do" // 사전통지발송 현황 상세 목록 조회
, createSendingLink = "/080/createSndngLink.do" // 발송상세 목록의 우편통합 발송 연계 등록
, createSendBackList = "/080/createSndbkList.do" // 발송상세 목록의 반송 확인(등록)
, noticeSheetSendingMain = "/090/main.do" // 고지서발송 현황 메인 화면
, getNoticeSheetSendingList = "/090/list.do" // 고지서발송 대상 목록 조회
, getNoticeSheetSendingDetailInfo = "/100/info.do" // 고지서발송 현황 상세 화면
, getNoticeSheetSendingDetailList = "/100/list.do" // 고지서발송 현황 상세 목록 조회
, noticeSheetSendingTargetInfo = "/110/info.do" // 고지서발송 대상 화면
, sendBackMain = "/230/main.do" // 반송 현황 메인 화면
, getSendBackList = "/230/list.do" // 반송 현황 목록 조회
, serviceByPublicNoticeMain = "/240/main.do" // 공시송달 현황 메인 화면
, getServiceByPublicNoticeList = "/240/list.do" // 공시송달 현황 목록 조회
, removeServiceByPublicNotice = "/240/remove.do" // 공시송달 삭제
, getServiceByPublicNoticeDetailInfo = "/250/info.do" // 공시송달 상세 목록 조회
, getServiceByPublicNoticeDetailList = "/250/list.do" // 공시송달 상세 목록 조회
, getServiceByPublicNoticeInfo = "/260/info.do" // 공시송달 정보
, createServiceByPublicNotice = "/260/create.do" // 공시송달 등록
, updateServiceByPublicNotice = "/260/update.do" // 공시송달 수정
, unitySendBackTargetMain = "/210/main.do" // 통합 반송 등록 메인
, getSendBackInfo = "/220/info.do" // 반송 정보 조회
, createSendBack = "/220/create.do" // 반송 등록
, updateSendBack = "/220/update.do" // 반송 수정
, deleteSendBack = "/210/delete.do" // 반송 삭제
, removeServiceByPublicNoticeEach = "/250/remove.do" // 공시송달 개별 삭제
;
}
@ -100,6 +104,10 @@ public class Sndb01Controller extends ApplicationController {
@Resource(name = "sndngDtlService")
private SndngDtlService sndngDtlService;
/**공시송달 대장 서비스*/
@Resource(name = "svbtcService")
private SvbtcService svbtcService;
/**업무 정보 서비스*/
@Resource(name = "taskService")
private TaskService taskService;
@ -353,9 +361,9 @@ public class Sndb01Controller extends ApplicationController {
* "sndngDtls": [ ]
* }</pre>
*/
public ModelAndView getWarningSendingInfo(SndbQuery req) {
public ModelAndView getWarningSendingDetailInfo(SndbQuery req) {
//
ModelAndView mav = getWarningSendingDetailsList(req);
ModelAndView mav = getWarningSendingDetailList(req);
mav.setViewName("fims/sndb/sndb01040-info");
@ -377,7 +385,7 @@ public class Sndb01Controller extends ApplicationController {
* "sndngDtlTotal":
* }</code></pre>
*/
public ModelAndView getWarningSendingDetailsList(SndbQuery req) {
public ModelAndView getWarningSendingDetailList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List<?> result = sndngDtlService.getSndngDtlList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "wrngSndngDtl");
@ -689,9 +697,9 @@ public class Sndb01Controller extends ApplicationController {
* "sndngDtls": [ ]
* }</pre>
*/
public ModelAndView getAdvanceNoticeSendingInfo(SndbQuery req) {
public ModelAndView getAdvanceNoticeSendingDetailInfo(SndbQuery req) {
//
ModelAndView mav = getAdvanceNoticeSendingDetailsList(req);
ModelAndView mav = getAdvanceNoticeSendingDetailList(req);
mav.setViewName("fims/sndb/sndb01080-info");
@ -713,7 +721,7 @@ public class Sndb01Controller extends ApplicationController {
* "sndngDtlTotal":
* }</code></pre>
*/
public ModelAndView getAdvanceNoticeSendingDetailsList(SndbQuery req) {
public ModelAndView getAdvanceNoticeSendingDetailList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List<?> result = sndngDtlService.getSndngDtlList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "advntceSndngDtl");
@ -875,9 +883,9 @@ public class Sndb01Controller extends ApplicationController {
* "sndngDtls": [ ]
* }</pre>
*/
public ModelAndView getNoticeSheetSendingInfo(SndbQuery req) {
public ModelAndView getNoticeSheetSendingDetailInfo(SndbQuery req) {
//
ModelAndView mav = getNoticeSheetSendingDetailsList(req);
ModelAndView mav = getNoticeSheetSendingDetailList(req);
mav.setViewName("fims/sndb/sndb01100-info");
@ -899,7 +907,7 @@ public class Sndb01Controller extends ApplicationController {
* "sndngDtlTotal":
* }</code></pre>
*/
public ModelAndView getNoticeSheetSendingDetailsList(SndbQuery req) {
public ModelAndView getNoticeSheetSendingDetailList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List<?> result = sndngDtlService.getSndngDtlList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "nhtSndngDtl");
@ -995,12 +1003,6 @@ public class Sndb01Controller extends ApplicationController {
;
}
/** .
* @param sndng
* @return jsonView
@ -1269,7 +1271,6 @@ public class Sndb01Controller extends ApplicationController {
.addObject("infoPrefix", "svbtc") // prefix
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("TaskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 시군구에서 사용하는 업무 목록
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
.addObject("FIM047List", commonCodes.get("FIM047")) // 발송 구분 코드(SNDNG_SE_CD)
;
}
@ -1287,7 +1288,7 @@ public class Sndb01Controller extends ApplicationController {
*/
public ModelAndView getServiceByPublicNoticeList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List<?> result = sndngDtlService.getSvbtcList(setFetchSize(req));
List<?> result = svbtcService.getSvbtcList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "svbtc");
} else {
// 현재 날짜 구하기
@ -1306,7 +1307,7 @@ public class Sndb01Controller extends ApplicationController {
CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일
CellStyle dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간
List<DataObject> list = sndngDtlService.getSvbtcList(req.setFetchSize(0));
List<DataObject> list = svbtcService.getSvbtcList(req.setFetchSize(0));
CellDef.setValues(cellDefs, Map.ofEntries(
Map.entry("업무구분", xlsx.style("TASK_SE_NM", center))
@ -1336,25 +1337,134 @@ public class Sndb01Controller extends ApplicationController {
}
}
/** - (sndb/sndb01/250-info) .
/** - (sndb/sndb01/250-info) .
* @param svbtcId ID
* @return fims/sndb/sndb01250-info jsonView
* <pre>{
* "sndngDtls": [ ]
* }</pre>
*/
public ModelAndView getServiceByPublicNoticeDetailInfo(SndbQuery req) {
//
ModelAndView mav = getServiceByPublicNoticeDetailList(req);
mav.setViewName("fims/sndb/sndb01250-info");
return mav
.addObject("pageName", "sndb01250")
.addObject("query", toJson(req))
.addObject("svbtcDtl", toJson(mav.getModel().get("svbtcDtlList")))
;
}
/** - .
* {@link SndngService#getSndngList(SndngQuery)}
* @param req
* @return jsonView
* <pre><code> {
* "sndngDtlList": [ ]
* "sndngDtlStart":
* "sndngDtlFetch":
* "sndngDtlTotal":
* }</code></pre>
*/
public ModelAndView getServiceByPublicNoticeDetailList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List<?> result = svbtcService.getSvbtcDtlList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "svbtcDtl");
} else {
// 현재 날짜 구하기
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String dateTime = dateFormat.format(System.currentTimeMillis());
ArrayList<CellDef> cellDefs = fromJson(req.getCellDefs(), new TypeReference<ArrayList<CellDef>>() {});
XLSWriter xlsx = new XLSWriter()
.setFilename("고지서발송상세" + "_목록_" + dateTime + ".xlsx")
.worksheet(0);
// CellStyle 지정은 여기에서..
CellStyle center = xlsx.cellStyle(Styler.CENTER); // 가운데 정렬
CellStyle numeric = xlsx.n_nn0(); // 숫자 3자리 콤마(,)
CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일
CellStyle dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간
List<DataObject> list = svbtcService.getSvbtcDtlList(req.setFetchSize(0));
CellDef.setValues(cellDefs, Map.ofEntries(
Map.entry("발송상태", xlsx.style("SNDNG_DTL_STTS_NM", center))
, Map.entry("등기번호", xlsx.style("RG_NO", center))
, Map.entry("발송일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_YMD"))).style(dateYMD))
, Map.entry("발송종료일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_END_YMD"))).style(dateYMD))
, Map.entry("납부자명", "RTPYR_NM")
, Map.entry("납부자생일", xlsx.style("RTPYR_BRDT_MASK", center))
, Map.entry("우편번호", xlsx.style("RTPYR_ZIP", center))
, Map.entry("주소", "RTPYR_ADDR")
, Map.entry("상세주소", "RTPYR_DTL_ADDR")
, Map.entry("배달일자", xlsx.format(o -> xlsx.str2date(o.get("DLVR_YMD"))).style(dateYMD))
, Map.entry("배달시각", xlsx.style("DLVR_TM", center))
, Map.entry("미배달사유", "UNDLVR_RSN_NM")
, Map.entry("수령인", "RCPN_NM")
, Map.entry("수령인관계", "RCPN_REL_NM")
, Map.entry("단속일시", xlsx.style("CRDN_DT", center))
, Map.entry("차량번호", "VHRNO")
, Map.entry("단속법정동", "CRDN_STDG_NM")
, Map.entry("단속장소", "CRDN_PLC")
, Map.entry("회계연도", xlsx.style("FYR", center))
, Map.entry("부과번호", xlsx.style("LEVY_NO", center))
, Map.entry("부과일자", xlsx.format(o -> xlsx.str2date(o.get("LEVY_YMD"))).style(dateYMD))
, Map.entry("납기일자", xlsx.format(o -> xlsx.str2date(o.get("DUDT_YMD"))).style(dateYMD))
, Map.entry("과태료금액", xlsx.style("FFNLG_AMT", numeric))
, Map.entry("본세", xlsx.style("PCPTAX", numeric))
, Map.entry("가산금", xlsx.style("ADAMT", numeric))
, Map.entry("합계금액", xlsx.style("SUM_AMT", numeric))
, Map.entry("등록일시", xlsx.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT))
, Map.entry("등록사용자", xlsx.style("RGTR_NM", center))
, Map.entry("수정일시", xlsx.format(o -> xlsx.str2datetime(o.get("MDFCN_DT"))).style(dateDT))
, Map.entry("수정사용자", xlsx.style("MDFR_NM", center))
)
);
xlsx.cell(0, 0)
.value("고지서 발송 상세", center)
.merge(0, cellDefs.size() - 1)
.cell(3, 0)
.rowValues(CellDef.header(cellDefs, () -> CmmnUtil.headerStyle(xlsx)))
.cell(4, 0)
.values(list, CellDef.values(cellDefs));
return new ModelAndView("xlsView")
.addObject("xls", xlsx);
}
}
/** ID .
* @param svbtcId ID
* @return fims/sndb/sndb01260-info jsonView
* <pre>{
* "svbtcInfo":
* }</pre>
*/
public ModelAndView getServiceByPublicNoticeInfo(SndbQuery req) {
List<?> sndngDtls = sndngDtlService.getSvbtcDtls(req);
// 공시송달 정보 조회
DataObject svbtcInfo = svbtcService.getSvbtcInfo(req);
boolean json = jsonResponse();
// 등록을 호출하였지만 등록된 공시송달 ID가 있는지 확인.
if (req.getCallPurpose().equals("create") && !svbtcInfo.string("SVBTC_ID").equals("")) {
ModelAndView mav = new ModelAndView("jsonView");
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01250-info");
return mav.addObject("rtnMsg", "이미 등록된 공시송달 정보가 있습니다.");
} else {
boolean json = jsonResponse();
return mav.addObject("pageName", "sndb01250")
.addObject("sggCd", req.getSggCd())
.addObject("taskSeCd", req.getTaskSeCd())
.addObject("svbtcDtl", json ? sndngDtls : toJson(sndngDtls)) // 계도장 발송 현황 세부내용
;
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01260-info");
return mav
.addObject("pageName", "sndb01260")
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("svbtcInfo", json ? svbtcInfo : toJson(svbtcInfo)) // 공시송달 정보
;
}
}
/** .
@ -1388,7 +1498,7 @@ public class Sndb01Controller extends ApplicationController {
*/
public ModelAndView updateServiceByPublicNotice(Svbtc svbtc) {
boolean saved = false;
String rtnMsg = sndngDtlService.updateSvbtc(svbtc);
String rtnMsg = svbtcService.update(svbtc);
if (rtnMsg.contains("[S]")) {
saved = true;
@ -1411,30 +1521,7 @@ public class Sndb01Controller extends ApplicationController {
*/
public ModelAndView removeServiceByPublicNotice(Svbtc svbtc) {
boolean saved = false;
String rtnMsg = sndngDtlService.removeSvbtc(svbtc);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
/** ID .
* @param svbtcIDs IDs
* @return jsonView
* <pre><code> {
* "affected":
* "saved": true, false
* }</code></pre>
*/
public ModelAndView removeServiceByPublicNoticeList(SndbQuery req) {
boolean saved = false;
String rtnMsg = sndngDtlService.removeSvbtcList(req);
String rtnMsg = svbtcService.removeSvbtc(svbtc);
if (rtnMsg.contains("[S]")) {
saved = true;

@ -28,6 +28,7 @@ import cokr.xit.fims.rcvm.service.RcvmtService;
import cokr.xit.fims.sndb.SndbQuery;
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.sprt.CvlcptDscsnQuery;
import cokr.xit.fims.sprt.SprtQuery;
import cokr.xit.fims.sprt.service.Sprt02Service;
@ -83,6 +84,10 @@ public class Sprt02Controller extends ApplicationController {
@Resource(name = "sndngDtlService")
protected SndngDtlService sndngDtlService;
/**공시송달 대장 서비스*/
@Resource(name = "svbtcService")
private SvbtcService svbtcService;
/** 부과 대장 서비스*/
@Resource(name = "levyService")
protected LevyService levyService;
@ -286,25 +291,25 @@ public class Sprt02Controller extends ApplicationController {
*/
public ModelAndView getSndngInfo(SprtQuery req) {
// 발송반송 정보
SndbQuery sndb01Query = new SndbQuery();
SndbQuery sndbQuery = new SndbQuery();
if (req.getCallPurpose() == null) {
sndb01Query.setCallPurpose("view");
sndbQuery.setCallPurpose("view");
} else {
sndb01Query.setCallPurpose(req.getCallPurpose());
sndbQuery.setCallPurpose(req.getCallPurpose());
}
sndb01Query.setCrdnId(req.getCrdnId());
sndb01Query.setDelYN(req.getDelYN());
sndb01Query.setOrderBy("SD.REG_DT, SD.SNDNG_DTL_ID DESC");
sndbQuery.setCrdnId(req.getCrdnId());
sndbQuery.setDelYN(req.getDelYN());
sndbQuery.setOrderBy("SD.REG_DT, SD.SNDNG_DTL_ID DESC");
List<?> sndngDtl = sndngDtlService.getSndngDtls(sndb01Query);
List<?> sndngDtl = sndngDtlService.getSndngDtls(sndbQuery);
// 공시송달 정보
sndb01Query.setCrdnId(req.getCrdnId());
sndb01Query.setDelYN(req.getDelYN());
sndb01Query.setOrderBy("SV.REG_DT DESC, SV.SVBTC_ID DESC");
sndbQuery.setCrdnId(req.getCrdnId());
sndbQuery.setDelYN(req.getDelYN());
sndbQuery.setOrderBy("SV.REG_DT DESC, SV.SVBTC_ID DESC");
List<?> svbtc = sndngDtlService.getSvbtcDtls(sndb01Query);
List<?> svbtc = svbtcService.getSvbtcDtls(sndbQuery);
boolean json = jsonResponse();

@ -554,15 +554,15 @@ public class DpvController {
}
@Override
@RequestMapping(name="계고장 발송 현황 상세 화면", value=METHOD_URL.getWarningSendingInfo)
public ModelAndView getWarningSendingInfo(SndbQuery req) {
return super.getWarningSendingInfo(req);
@RequestMapping(name="계고장 발송 현황 상세 화면", value=METHOD_URL.getWarningSendingDetailInfo)
public ModelAndView getWarningSendingDetailInfo(SndbQuery req) {
return super.getWarningSendingDetailInfo(req);
}
@Override
@RequestMapping(name="계고장 발송 현황 상세 목록 조회", value=METHOD_URL.getWarningSendingDetailsList)
public ModelAndView getWarningSendingDetailsList(SndbQuery req) {
return super.getWarningSendingDetailsList(req);
@RequestMapping(name="계고장 발송 현황 상세 목록 조회", value=METHOD_URL.getWarningSendingDetailList)
public ModelAndView getWarningSendingDetailList(SndbQuery req) {
return super.getWarningSendingDetailList(req);
}
@Override
@ -590,15 +590,15 @@ public class DpvController {
}
@Override
@RequestMapping(name="사전통지 발송 현황 상세 화면", value=METHOD_URL.getAdvanceNoticeSendingInfo)
public ModelAndView getAdvanceNoticeSendingInfo(SndbQuery req) {
return super.getAdvanceNoticeSendingInfo(req);
@RequestMapping(name="사전통지 발송 현황 상세 화면", value=METHOD_URL.getAdvanceNoticeSendingDetailInfo)
public ModelAndView getAdvanceNoticeSendingDetailInfo(SndbQuery req) {
return super.getAdvanceNoticeSendingDetailInfo(req);
}
@Override
@RequestMapping(name="사전통지 발송 현황 상세 목록 조회", value=METHOD_URL.getAdvanceNoticeSendingDetailsList)
public ModelAndView getAdvanceNoticeSendingDetailsList(SndbQuery req) {
return super.getAdvanceNoticeSendingDetailsList(req);
@RequestMapping(name="사전통지 발송 현황 상세 목록 조회", value=METHOD_URL.getAdvanceNoticeSendingDetailList)
public ModelAndView getAdvanceNoticeSendingDetailList(SndbQuery req) {
return super.getAdvanceNoticeSendingDetailList(req);
}
@Override
@ -608,15 +608,15 @@ public class DpvController {
}
@Override
@RequestMapping(name="고지서 발송 현황 상세 화면", value=METHOD_URL.getNoticeSheetSendingInfo)
public ModelAndView getNoticeSheetSendingInfo(SndbQuery req) {
return super.getNoticeSheetSendingInfo(req);
@RequestMapping(name="고지서 발송 현황 상세 화면", value=METHOD_URL.getNoticeSheetSendingDetailInfo)
public ModelAndView getNoticeSheetSendingDetailInfo(SndbQuery req) {
return super.getNoticeSheetSendingDetailInfo(req);
}
@Override
@RequestMapping(name="고지서 발송 현황 상세 목록 조회", value=METHOD_URL.getNoticeSheetSendingDetailsList)
public ModelAndView getNoticeSheetSendingDetailsList(SndbQuery req) {
return super.getNoticeSheetSendingDetailsList(req);
@RequestMapping(name="고지서 발송 현황 상세 목록 조회", value=METHOD_URL.getNoticeSheetSendingDetailList)
public ModelAndView getNoticeSheetSendingDetailList(SndbQuery req) {
return super.getNoticeSheetSendingDetailList(req);
}
@Override
@ -673,6 +673,18 @@ public class DpvController {
return super.getServiceByPublicNoticeList(req);
}
@Override
@RequestMapping(name="공시송달 상세 조회", value=METHOD_URL.getServiceByPublicNoticeDetailInfo)
public ModelAndView getServiceByPublicNoticeDetailInfo(SndbQuery req) {
return super.getServiceByPublicNoticeDetailInfo(req);
}
@Override
@RequestMapping(name="공시송달 정보", value=METHOD_URL.getServiceByPublicNoticeInfo)
public ModelAndView getServiceByPublicNoticeInfo(SndbQuery req) {
return super.getServiceByPublicNoticeInfo(req);
}
@Override
@RequestMapping(name="공시송달 등록", value=METHOD_URL.createServiceByPublicNotice)
public ModelAndView createServiceByPublicNotice(Svbtc svbtc) {
@ -692,19 +704,7 @@ public class DpvController {
}
@Override
@RequestMapping(name="공시송달 삭제 리스트", value=METHOD_URL.removeServiceByPublicNoticeList)
public ModelAndView removeServiceByPublicNoticeList(SndbQuery req) {
return super.removeServiceByPublicNoticeList(req);
}
@Override
@RequestMapping(name="공시송달 상세 조회", value=METHOD_URL.getServiceByPublicNoticeInfo)
public ModelAndView getServiceByPublicNoticeInfo(SndbQuery req) {
return super.getServiceByPublicNoticeInfo(req);
}
@Override
@RequestMapping(name="공시송달 삭제 개별", value=METHOD_URL.removeServiceByPublicNoticeEach)
@RequestMapping(name="공시송달 개별 삭제", value=METHOD_URL.removeServiceByPublicNoticeEach)
public ModelAndView removeServiceByPublicNoticeEach(Svbtc svbtc) {
return super.removeServiceByPublicNoticeEach(svbtc);
}

@ -66,11 +66,60 @@
</if>
<if test="schSndngSeCd != null">
AND SV.SNDNG_SE_CD = #{schSndngSeCd} <!-- 발송 구분 코드 -->
</if>
<if test="schVltnCd != null">
AND SV.VLTN_CD = #{schVltnCd} <!-- 위반 코드 -->
</if>
AND SV.DEL_YN = 'N' <!-- 삭제 여부 -->
<choose>
<when test="schRegDateOpt == 'regDt'">
<if test="schRegDateFrom != null">
AND SV.REG_DT <![CDATA[>=]]> CONCAT(#{schRegDateFrom},'000000') /* 등록 일자 시작 */
</if>
<if test="schRegDateTo != null">
AND SV.REG_DT <![CDATA[<=]]> CONCAT(#{schRegDateTo},'235959') /* 등록 일자 종료 */
</if>
</when>
<when test="schRegDateOpt == 'mdfcnDt'">
<if test="schRegDateFrom != null">
AND SV.MDFCN_DT <![CDATA[>=]]> CONCAT(#{schRegDateFrom},'000000') /* 수정 일자 시작 */
</if>
<if test="schRegDateTo != null">
AND SV.MDFCN_DT <![CDATA[<=]]> CONCAT(#{schRegDateTo},'235959') /* 수정 일자 종료 */
</if>
</when>
<otherwise>
</otherwise>
</choose>
<choose>
<when test="schRgtrOpt == 'rgtr'">
<if test="schRgtrCd != null">
AND SV.RGTR = #{schRgtrCd} /* 등록자 코드 */
</if>
</when>
<when test="schRgtrOpt == 'mdfr'">
<if test="schRgtrCd != null">
AND SV.MDFR = #{schRgtrCd} /* 수정자 코드 */
</if>
</when>
<otherwise>
</otherwise>
</choose>
<if test="by != null and by != '' and term != null">
<choose>
<when test="mainOption == 'codeValue' or mainOption == 'match' or mainOption == 'ymd'">
<include refid="dynamicSearch.start" />
<choose>
<when test="by == 'sndngSeCd'"> SV.SNDNG_SE_CD </when>
<when test="by == 'svbtcYmd'"> SV.SVBTC_YMD </when>
<when test="by == 'docNo'"> SV.DOC_NO </when>
<when test="by == 'ttlNm'"> SV.TTL_NM </when>
<when test="by == 'etcCn'"> SV.ETC_CN </when>
<when test="by == 'tnocs'"> SV.TNOCS </when>
</choose>
<include refid="dynamicSearch.center" />#{term}<include refid="dynamicSearch.end" />
</when>
<otherwise>
</otherwise>
</choose>
</if>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" />
</select>
@ -120,7 +169,6 @@
, SD.SNDNG_DTL_ID <!-- 발송 상세 ID -->
, SD.SNDNG_ID <!-- 발송 ID -->
, SD.CRDN_ID <!-- 단속 ID -->
, SD.SNDNG_SE_CD <!-- 발송 구분 코드 -->
, SD.VHRNO <!-- 차량번호 -->
, SD.CRDN_DT <!-- 단속 일시 -->
, SD.CRDN_STDG_NM <!-- 단속 법정동 명 -->
@ -150,7 +198,6 @@
, GET_MASK_DATE(SD.DUDT_YMD, 'K') AS DUDT_YMD_MASK_KOR <!-- 납기 일자(한글표기) -->
, GET_MASK_DATE(SD.DUDT_YMD, '.') AS DUDT_YMD_MASK <!-- 납기 일자 -->
, GET_MASK_DATE(SD.DUDT_AFTR_YMD, '.') AS DUDT_AFTR_YMD_MASK <!-- 납기 후 일자 -->
, (SELECT GET_CODE_NM('FIM047', SD.SNDNG_SE_CD) FROM DUAL) AS SNDNG_SE_NM <!-- 발송 구분 명 -->
, (SELECT GET_CODE('EGP010', SD.UNDLVR_RSN_NM) FROM DUAL) AS UNDLVR_RSN_CD <!-- 미배달 사유 코드 -->
, (SELECT GET_CODE_NM('FIM050', SD.SNDNG_DTL_STTS_CD) FROM DUAL) AS SNDNG_DTL_STTS_NM <!-- 발송 상세 상태 명 -->
, (SELECT GET_CODE_NM('FIM051', SD.SNDNG_RCVMT_CD) FROM DUAL) AS SNDNG_RCVMT_NM <!-- 발송 수납 명 -->
@ -158,6 +205,24 @@
INNER JOIN TB_SNDNG_DTL SD ON (SV.SVBTC_ID = SD.SVBTC_ID)
</sql>
<select id="selectSvbtcDtlList" parameterType="map" resultType="dataobject">/* 공시송달 상세 목록 가져오기(svbtcMapper.selectSvbtcDtlList) */
<include refid="utility.paging-prefix" />
<include refid="selectDtl" />
<choose>
<when test="sndngId != null">
WHERE SD.SNDNG_ID = #{sndngId} <!-- 발송 ID -->
</when>
<otherwise>
WHERE SV.SVBTC_ID = #{svbtcId} <!-- 공시송달 ID -->
</otherwise>
</choose>
<if test="delYN != null">
AND SV.DEL_YN = #{delYN} <!-- 삭제 여부 -->
</if>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" />
</select>
<select id="selectSvbtcDtls" parameterType="map" resultType="dataobject">/* 공시송달 상세 객체 가져오기(svbtcMapper.selectSvbtcDtls) */
<include refid="selectDtl" />
<where>

@ -572,15 +572,11 @@
taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val();
}
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
// 초기 기본 설정
initFormData${pageName}(taskSeCd);
// 업무 구분별 설정
setTask${pageName}(taskSeCd);
initForm${pageName}();
// 기본 데이터 설정
setFormData${pageName}(taskSeCd);
initData${pageName}(taskSeCd);
// dataset 초기화
${pageName}Control.dataset.clear();
@ -649,7 +645,7 @@
// 삭제 메세지 확인
dialog.alert({
content : "선택하신 " + selected.length + "건의 " + ${pageName}Control.prefixName + " 정보를 삭제하시겠습니까?"
content : "선택하신 " + selected.length + "건의 " + ${pageName}Control.prefixName + " 정보를 삭제하시겠습니까?"
, onOK : () => {
// 삭제 사유 입력
let callbackFuncName = "callbackRemove${pageName}";
@ -703,11 +699,9 @@
}
// 화면 초기 설정
initFormData${pageName} = (taskSeCd) => {
// 초기 데이터 설정
if (typeof taskSeCd == "undefined" || taskSeCd == null || taskSeCd == "") {
clsForTask = $("#layout-navbar input[name='taskSeCd']:checked").val();
}
initForm${pageName} = () => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
// input, select 초기화
let searchForm = $("#frmSearch--${pageName}");
@ -717,10 +711,6 @@
searchForm.find("input[type='hidden']").val("");
searchForm.find("select").each(function() { $(this).find("option:eq(0)").prop("selected", true); });
// 시군구 코드
$("#sggCd--${pageName}").val("${sggCd}");
// 업무 구분
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 최고 관리자 경우 업무구분을 선택할 수 있도록 하자.
$("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) {
$(this).prop("disabled", "true");
@ -738,6 +728,26 @@
$("#schRgtrNm--${pageName}").prop("readonly", true);
}
// 기본 데이터 설정
initData${pageName} = (taskSeCd) => {
// ${pageName}Control 설정
${pageName}Control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
// 시군구 코드
$("#sggCd--${pageName}").val("${sggCd}");
// 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 일자
$("#schLevyExclYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date);
$("#schLevyExclYmdTo--${pageName}").datepicker("setDate", new Date());
// 업무 구분별 설정
setTask${pageName}(taskSeCd);
// URL 설정
setURL${pageName}(taskSeCd);
}
// 업무 구분별 설정
setTask${pageName} = (taskSeCd) => {
let clsForTask = taskSeCd.toLowerCase();
@ -760,19 +770,6 @@
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
}
// 기본 데이터 설정
setFormData${pageName} = (taskSeCd) => {
// ${pageName}Control 설정
${pageName}Control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
// 일자
$("#schLevyExclYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date);
$("#schLevyExclYmdTo--${pageName}").datepicker("setDate", new Date());
// URL 설정
setURL${pageName}(taskSeCd);
}
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회

@ -110,12 +110,16 @@
// Dataset 셋팅
${pageName}Fields.set(item);
// 업무구분에 따른 url 변경
${pageName}Control.urls.create = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/020/create.do");
${pageName}Control.urls.update = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/020/update.do");
// 호출용도가 등록
if (${pageName}CallPurpose = "create") {
$("#levyExclYmd--${pageName}").datepicker("setDate", new Date());
}
// 부과제외구분에 따른 부과제외사유 셋팅
setFim021${pageName}(item.data.LEVY_EXCL_SE_CD, item.data.LEVY_EXCL_RSN_CD);
// 업무구분에 따른 url 변경
setURL${pageName}(item.data.TASK_SE_CD);
}
/**************************************************************************
@ -158,6 +162,12 @@
/**************************************************************************
* 사용자 함수
**************************************************************************/
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.create = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/020/create.do"); // 등록
${pageName}Control.urls.update = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/020/update.do"); // 수정
}
// 부과제외 구분에 따른 부과제외 사유 코드 설정
setFim021${pageName} = (seCode, rsnCode) => {
let cmnCode = FIM021[seCode];
@ -208,18 +218,16 @@
});
}
// 화면 초기
// 화면 초기 설정
initForm${pageName} = () => {
// 화면 초기화
$("#frmEdit--${pageName}")[0].reset();
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
$("#levyExclYmd--${pageName}").datepicker("setDate", new Date());
}
$("#levyExclYmd--${pageName}").datepicker("setDate", new Date());
// 기본 데이터 설정
setFormData${pageName} = () => {
// 화면 활성화 설정
$("#crdnYmdTm--${pageName}").prop("readonly", true); // 단속 일시
$("#vhrno--${pageName}").prop("readonly", true); // 차량번호
$("#levyExclSeNm--${pageName}").prop("readonly", true); // 부과 제외 구분
@ -230,13 +238,14 @@
// button 요소들을 disabled
$("#btnLevyExclYmd--${pageName}").prop("disabled", true); // 부과제외 일자 달력 버튼
$("#btnSave--${pageName}").prop("disabled", true); // 저장 버튼
} else if (${pageName}CallPurpose == "create") {
$("#levyExclYmd--${pageName}").datepicker("setDate", new Date()); // 부과제외 일자
} else if (${pageName}CallPurpose == "update") {
//
}
}
// 기본 데이터 설정
initData${pageName} = () => {
//
}
/**************************************************************************
* script 진입
**************************************************************************/
@ -244,14 +253,14 @@
// 이벤트 설정
setEvent${pageName}();
// 화면 초기
// 화면 초기 설정
initForm${pageName}();
// 기본 데이터 설정
initData${pageName}();
// Dataset 설정
${pageName}Control.setData([${levyExclInfo}]);
// 기본 데이터 설정
setFormData${pageName}();
});
</script>

@ -39,7 +39,7 @@
<div class="col-12">
<label class="form-label fw-bold form-search-title text-end">업무구분</label>
<span class="form-search-linebox">
<c:forEach items="${FIM054List}" var="item">
<c:forEach items="${TaskListForSgg}" var="item">
<label>
<input type="radio" class="form-check-input" name="taskSeCd" alt="업무구분"
value="${item.code}" onchange="fnResetAndChangeBiz${pageName}(this.value);">
@ -145,10 +145,10 @@
<button type="button" class="btn btn-primary w-px-120" id="btnHwpPrint--${pageName}" title="한글파일 출력" onclick="fnHwpPrint${pageName}();">
한글파일 출력
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnSvbtcInfo--${pageName}" title="공시송달 수정" onclick="fnSvbtcInfo${pageName}();">
<button type="button" class="btn btn-primary w-px-120" id="btnUpdate--${pageName}" title="공시송달 수정" onclick="fnUpdate${pageName}();">
공시송달 수정
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnSvbtcRemove--${pageName}" title="공시송달 삭제" onclick="fnSvbtcRemove${pageName}();">
<button type="button" class="btn btn-primary w-px-120" id="btnRemove--${pageName}" title="공시송달 삭제" onclick="fnRemove${pageName}();">
공시송달 삭제
</button>
</span>
@ -164,27 +164,24 @@
<thead class="sticky-thead">
<tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th class="cmn" style="width: 72px;">NO.</th>
<th class="cmn" style="width: 56px;"><input type="checkbox" class="form-check-input" onchange="${pageName}Control.select(this.checked);"></th>
<th class="cmn" style="width: 160px;">업무구분</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('SNDNG_SE_CD', this.innerText, 'codeValue', 'FIM047');">발송구분</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('SVBTC_YMD', this.innerText, 'ymd', '');">공시송달일자</th>
<th class="cmn" style="width: 100px;" onclick="searchFromGridTitle('TNOCS', this.innerText, 'match', 'part');">총건수</th>
<th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('DOC_NO', this.innerText, 'match', 'part');">문서번호</th>
<th class="cmn" style="width: 320px;" onclick="searchFromGridTitle('TTL_NM', this.innerText, 'match', 'part');">제목</th>
<th class="cmn" style="width: 320px;" onclick="searchFromGridTitle('ETC_CN', this.innerText, 'match', 'part');">기타내용</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 180px;">수정일시</th>
<th class="cmn" style="width: 140px;">수정사용자</th>
<th class="cmn dummy-th"></th>
</tr>
</thead>
<tbody id="tbody--${pageName}">
</tbody>
<template id="${infoPrefix}Col--${pageName}">
<th class="cmn" style="width: 72px;">NO.</th>
<th class="cmn" style="width: 56px;"><input type="checkbox" class="form-check-input" onchange="${pageName}Control.select(this.checked);"></th>
<th class="cmn" style="width: 160px;">업무구분</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('SNDNG_SE_CD', this.innerText, 'codeValue', 'FIM047');">발송구분</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('SVBTC_YMD', this.innerText, 'ymd', '');">공시송달일자</th>
<th class="cmn" style="width: 100px;" onclick="searchFromGridTitle('TNOCS', this.innerText, 'match', 'part');">총건수</th>
<th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('DOC_NO', this.innerText, 'match', 'part');">문서번호</th>
<th class="cmn" style="width: 320px;" onclick="searchFromGridTitle('TTL_NM', this.innerText, 'match', 'part');">제목</th>
<th class="cmn" style="width: 320px;" onclick="searchFromGridTitle('ETC_CN', this.innerText, 'match', 'part');">기타내용</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 180px;">수정일시</th>
<th class="cmn" style="width: 140px;">수정사용자</th>
<th class="cmn dummy-th"></th>
</template>
<template id="${infoPrefix}Row--${pageName}">
<tr data-key="{SVBTC_ID}">
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td>
@ -204,20 +201,8 @@
</tr>
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="bpv">
<td valign="top" colspan="14" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="dpv">
<td valign="top" colspan="14" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="eca">
<td valign="top" colspan="14" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="pvs">
<td valign="top" colspan="14" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="tpv">
<td valign="top" colspan="14" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<tr class="odd">
<td valign="top" colspan="13" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
@ -306,7 +291,7 @@
checkbox.prop("checked", keys.includes(checkbox.val()));
});
$("#btnSvbtcRemove--${pageName}").prop("disabled", keys.length < 1);
$("#btnRemove--${pageName}").prop("disabled", keys.length < 1);
};
// 공시송달 상세 Info
@ -334,6 +319,29 @@
});
}
// 삭제 callback
${pageName}Control.onRemove = (resp) => {
let btnTitle = $("#btnRemove--${pageName}").attr("title");
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, btnTitle);
dialog.alert(showMessage); // 메시지 출력
if (resp.saved) {
refreshList${pageName}(); // 자료 재조회
}
}
// 삭제
${pageName}Control.remove = (params) => {
if (!params) return;
ajax.post({
url : ${pageName}Control.urls.remove
, data : params
, success : resp => ${pageName}Control.onRemove(resp)
});
}
/**************************************************************************
* DataTables 이벤트
**************************************************************************/
@ -341,24 +349,15 @@
renderList${pageName} = (totalSize) => {
let ${infoPrefix}List = ${pageName}Control.dataset;
let empty = ${infoPrefix}List.empty;
let clsForTask = $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val().toLowerCase(); // 소문자
// 업무별 DataTables(그리드) tr, td
let foundContent = document.getElementById("${infoPrefix}Row--${pageName}").content;
let foundTr = $(foundContent).find("tr")[0].cloneNode(false);
let foundTds = $(foundContent).find("." + clsForTask + ",.cmn");
foundTds.each(function() {
foundTr.appendChild(this.cloneNode(true));
});
//
let replacer = (str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("LEVY_EXCL_ID") + "');")
.replace(/{ondblclick}/gi, "getTotalInfo${pageName}('" + dataItem.getValue("CRDN_ID") + "');");
let trs = empty ? [document.getElementById("${infoPrefix}NotFound--${pageName}").content.querySelector("." + clsForTask + ",.cmn").outerHTML]
: ${infoPrefix}List.inStrings(foundTr.outerHTML, replacer);
let trs = empty ?
[document.getElementById("${infoPrefix}NotFound--${pageName}").innerHTML] <%-- from template#${infoPrefix}NotFound --%>
: ${infoPrefix}List.inStrings(
document.getElementById("${infoPrefix}Row--${pageName}").innerHTML <%-- from template#${infoPrefix}Row --%>
, (str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("SVBTC_ID") + "');")
.replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("SVBTC_ID") + "');")
);
let noMore = (totalSize == ${infoPrefix}List.length);
let initScroll = (${pageName}Control.query.pageNum < 2) && (${pageName}Control.untilPageNum == 0);
@ -371,9 +370,6 @@
${pageName}Control.untilPageNum = 0;
}
// checkbox 체크 해제
$("th input[type='checkbox']").prop("checked", false);
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
}
@ -442,60 +438,46 @@
}
// 공시송달 수정 callback
getSvbtcInfo${pageName} = (obj) => {
let taskSeCd = $("input[name='taskSeCd']:checked").val(); // 업무 구분 코드
let svbtcId = ${pageName}Control.dataset.getValue("SVBTC_ID"); // 공시송달 ID
getSvbtcInfo${pageName} = (params) => {
if (!params) return;
let params = {
svbtcId : svbtcId // 발송 상세 ID
, svbtcYmd : obj.calYmd // 공시송달 일자
, ttlNm : obj.ttlNm // 제목 명
, docNo : obj.docNo // 문서 번호
, etcCn : obj.etcCn // 기타 내용
, tnocs : obj.tnocs // 총건수
let dialogTitle = "";
if (params.callPurpose == "create") {
dialogTitle = ${pageName}Control.prefixName + " 등록";
} else if (params.callPurpose == "update") {
dialogTitle = ${pageName}Control.prefixName + " 수정";
} else {
dialogTitle = ${pageName}Control.prefixName + " 정보";
}
ajax.post({
url : wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/240/update.do")
, data : params
ajax.get({
url : wctx.url(params.taskSeCd + ${pageName}PrefixUrl + "/260/info.do") // 수정
, data : params || {}
, success : resp => {
let btnTitle = $("#btnSvbtcInfo--${pageName}").attr("title");
let showMessage = resp.retMessage.replace(/[S]|[F]/g, btnTitle);
dialog.alert(showMessage); // 메시지 출력
if (resp.saved) {
${pageName}Control.load(); // 자료 재조회
}
dialog.open({
id : ${pageName}Control.prefixed("Dialog")
, title : dialogTitle
, content : resp
, size : "md"
, onClose : () => { refreshList${pageName}(); } // 자료 재조회
});
}
});
}
// 공시송달 삭제 callback
removeSvbtcs${pageName} = (obj) => {
let taskSeCd = $("input[name='taskSeCd']:checked").val(); // 업무 구분 코드
let selected = ${pageName}Control.dataset.getKeys("selected"); // 선택 자료
let params = {
svbtcIDs : selected.join(",") // 공시송달 IDs
, delYn : "Y" // 삭제 여부
, delRsn : obj.reason // 삭제 사유
}
// 삭제 callback
callbackRemove${pageName} = (obj) => {
let selected = ${pageName}Control.dataset.getKeys("selected");
ajax.post({
url : ${pageName}Control.urls.remove
, data : params
, success : resp => {
let btnTitle = $("#btnSvbtcRemoves--${pageName}").attr("title");
let showMessage = resp.retMessage.replace(/[S]|[F]/g, btnTitle);
if (selected.length < 1) return;
dialog.alert(showMessage); // 메시지 출력
// 서버에 전송할 data(파라미터) 생성
let params = {};
params[${pageName}Control.prefixed("IDs")] = selected.join(","); // IDs
params.delRsn = obj.reason; // 삭제 사유
if (resp.saved) {
${pageName}Control.load(); // 자료 재조회
}
}
});
${pageName}Control.remove(params);
}
// 검색 자료 재조회
@ -516,15 +498,11 @@
taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val();
}
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
// 초기 기본 설정
initFormData${pageName}(taskSeCd);
// 업무 구분별 설정
setTask${pageName}(taskSeCd);
initForm${pageName}();
// 기본 데이터 설정
setFormData${pageName}(taskSeCd);
initData${pageName}(taskSeCd);
// dataset 초기화
${pageName}Control.dataset.clear();
@ -565,53 +543,52 @@
getFindUser${pageName}();
}
// 공시송달 수정 버튼 이벤트
fnSvbtcInfo${pageName} = () => {
let callbackFuncName = "getSvbtcInfo${pageName}";
let taskSeCd = $("input:radio[name='taskSeCd']:checked").val();
let popupWidth = 640;
let popupHeight = 360;
let popupX = (window.screen.width / 2) - (popupWidth / 2);
let popupY= (window.screen.height / 2) - (popupHeight / 2);
window.open(
wctx.url("/resources/html/inputTtlDocNoDialog.html"
+ "?callbackFuncName=" + callbackFuncName
+ "&CALL_PURPOSE=" + "modify"
+ "&TNOCS=" + ${pageName}Control.dataset.getValue("TNOCS")
+ "&CAL_YMD=" + ${pageName}Control.dataset.getValue("SVBTC_YMD")
+ "&TTL_NM=" + ${pageName}Control.dataset.getValue("TTL_NM")
+ "&DOC_NO=" + ${pageName}Control.dataset.getValue("DOC_NO")
+ "&ETC_CN=" + ${pageName}Control.dataset.getValue("ETC_CN")
)
, "inputSvbtcDialog"
, 'status=no, height=' + popupHeight + ', width=' + popupWidth + ', left='+ popupX + ', top='+ popupY
);
// 수정 버튼 이벤트
fnUpdate${pageName} = () => {
let svbtcId = ${pageName}Control.dataset.getValue("SVBTC_ID");
// 공시송달 ID 가 없다면.. return
if (typeof svbtcId == "undefined" || svbtcId == null || svbtcId == "") return;
let params = {
callPurpose : "update"
, svbtcId : svbtcId // 공시송달 ID
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, sndngSeCd : ${pageName}Control.dataset.getValue("SNDNG_SE_CD") // 발송 구분 코드
};
getSvbtcInfo${pageName}(params);
}
// 공시송달 삭제 버튼 이벤트
fnSvbtcRemove${pageName} = () => {
// 삭제 버튼 이벤트
fnRemove${pageName} = () => {
// 선택 자료
let selected = ${pageName}Control.dataset.getKeys("selected");
if (selected.length < 1) return;
let callbackFuncName = "removeSvbtcs${pageName}";
let popupWidth = 640;
let popupHeight = 360;
let popupX = (window.screen.width / 2) - (popupWidth / 2);
let popupY= (window.screen.height / 2) - (popupHeight / 2);
window.open(
wctx.url("/resources/html/inputRsnDialog.html"
+ "?callbackFuncName=" + callbackFuncName
+ "&CALL_PURPOSE=" + "remove"
)
, "inputDelRsnDialog"
, 'status=no, height=' + popupHeight + ', width=' + popupWidth + ', left='+ popupX + ', top='+ popupY
);
// 삭제 메세지 확인
dialog.alert({
content : "선택하신 " + ${pageName}Control.prefixName + " 정보를 삭제하시겠습니까?"
, onOK : () => {
// 삭제 사유 입력
let callbackFuncName = "callbackRemove${pageName}";
let popupWidth = 640;
let popupHeight = 240;
let popupX = (window.screen.width / 2) - (popupWidth / 2);
let popupY= (window.screen.height / 2) - (popupHeight / 2);
window.open(
wctx.url("/resources/html/inputRsnDialog.html"
+ "?callbackFuncName=" + callbackFuncName
+ "&USE_PURPOSE=" + "삭제"
)
, "inputDelRsnDialog"
, 'status=no, height=' + popupHeight + ', width=' + popupWidth + ', left='+ popupX + ', top='+ popupY
);
}
});
}
/**************************************************************************
@ -647,11 +624,9 @@
}
// 화면 초기 설정
initFormData${pageName} = (taskSeCd) => {
// 초기 데이터 설정
if (typeof taskSeCd == "undefined" || taskSeCd == null || taskSeCd == "") {
clsForTask = $("#layout-navbar input[name='taskSeCd']:checked").val();
}
initForm${pageName} = () => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
// input, select 초기화
let searchForm = $("#frmSearch--${pageName}");
@ -661,10 +636,6 @@
searchForm.find("input[type='hidden']").val("");
searchForm.find("select").each(function() { $(this).find("option:eq(0)").prop("selected", true); });
// 시군구 코드
$("#sggCd--${pageName}").val("${sggCd}");
// 업무 구분
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 최고 관리자 경우 업무구분을 선택할 수 있도록 하자.
$("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) {
$(this).prop("disabled", "true");
@ -682,33 +653,15 @@
$("#schRgtrNm--${pageName}").prop("readonly", true);
}
// 업무 구분별 설정
setTask${pageName} = (taskSeCd) => {
let clsForTask = taskSeCd.toLowerCase();
// 업무별 조회조건
renderForTask("frmSearch--${pageName}", clsForTask);
// 업무별 그리드 th
$("#DataTables_Table_0--${pageName}").find("th").resizable( "destroy" );
let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content;
let cols = $(colContent).find("." + clsForTask + ",.cmn");
let colsOuterHTML = "";
cols.each(function() {
colsOuterHTML += this.outerHTML;
});
$("#theadTr--${pageName}").html(colsOuterHTML);
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
}
// 기본 데이터 설정
setFormData${pageName} = (taskSeCd) => {
initData${pageName} = (taskSeCd) => {
// ${pageName}Control 설정
${pageName}Control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
// 시군구 코드
$("#sggCd--${pageName}").val("${sggCd}");
// 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 일자
$("#schSvbtcYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date);
$("#schSvbtcYmdTo--${pageName}").datepicker("setDate", new Date());

@ -0,0 +1,207 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<!-- inner page html -->
<div class="content-wrapper">
<!-- Content -->
<div class="container flex-grow-1 px-0">
<c:set var="prefixName" scope="request">공시송달 정보</c:set>
<!-- Page Body -->
<div class="card">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<!-- hidden -->
<input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" />
<input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" data-map="TASK_SE_CD" />
<input type="hidden" id="svbtcId--${pageName}" name="svbtcId" data-map="SVBTC_ID" />
<div class="row g-1">
<!-- 총건수 -->
<div class="col-md-12 text-end">
<label for=tnocs" class="w-px-80 bg-lighter pe-2 col-form-label text-sm-end">총건수</label>
<input type="text" class="form-control w-px-80 text-end" id="tnocs" name="tnocs" data-map="TNOCS" readonly />
</div>
<!-- 일자 -->
<div class="col-md-12">
<label for="svbtcYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">공시송달일자</label>
<input type="text" class="form-control form-date" id="svbtcYmd--${pageName}" name="svbtcYmd" data-map="SVBTC_YMD"
data-fmt-type="day" autocomplete="off" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-sm bx-calendar bg-white" id="btnSvbtcYmd--${pageName}"></button>
</div>
<!-- 문서 번호 -->
<div class="col-md-12">
<label for="docNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">문서번호</label>
<input type="text" class="form-control w-50" id="docNo--${pageName}" name="docNo" data-map="DOC_NO" autocomplete="off" />
</div>
<!-- 제목 명 -->
<div class="col-md-12">
<label for="ttlNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">제목</label>
<input type="text" class="form-control w-70" id="ttlNm--${pageName}" name="ttlNm" data-map="TTL_NM" autocomplete="off" />
</div>
<!-- 기타 내용 -->
<div class="col-md-12">
<label for="etcCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">기타내용</label>
<textarea type="text" class="form-control w-70" id="etcCn--${pageName}" name="etcCn" data-map="ETC_CN" autocomplete="off" rows="3" data-maxlengthb="1000"></textarea>
</div>
</div>
</form> <!-- /입력 영역 -->
</div> <!-- <div class="card"> -->
<!-- 업무 버튼 표시 -->
<div>
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-80" id="btnSave--${pageName}" title="저장" onclick="fnSave${pageName}()">
저장
</button>
</span>
</span>
</div>
<!-- / 업무 버튼 표시 -->
</div> <!-- / Content <div class="container flex-grow-1 px-0"> -->
</div> <!-- / inner page html <div class="content-wrapper"> -->
<script>
/**************************************************************************
* Global Variable
**************************************************************************/
// URL
var ${pageName}PrefixUrl = "/sndb/sndb01";
// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정)
var ${pageName}CallPurpose = "${callPurpose}";
// FormFields
var ${pageName}Fields = new FimsFormFields("#frmEdit--${pageName}");
/**************************************************************************
* DatasetControl
**************************************************************************/
var ${pageName}Control = new DatasetControl({
prefix : "svbtc"
, prefixName : "공시송달"
, keymapper : info => info ? info.SVBTC_ID : ""
, dataGetter : obj => obj.svbtcInfo
});
${pageName}Control.onCurrentChange = item => {
if (!item) return;
// Dataset 셋팅
${pageName}Fields.set(item);
// 호출용도가 등록
if (${pageName}CallPurpose == "create") {
$("#svbtcYmd--${pageName}").datepicker("setDate", new Date());
}
// 업무구분에 따른 url 변경
setURL${pageName}(item.data.TASK_SE_CD);
}
/**************************************************************************
* DatasetControl 이벤트
**************************************************************************/
// 저장 callback
${pageName}Control.onSave = (resp) => {
let dialogTitle = $("#" + ${pageName}Control.prefix + "Dialog").find("h5.modal-title").html();
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, dialogTitle);
dialog.alert(showMessage);
if (resp.saved) {
dialog.close(${pageName}Control.prefix + "Dialog");
}
}
// 저장
${pageName}Control.save = (info) => {
if (!info) return;
let create = isEmpty(info.svbtcId);
ajax.post({
url : !create ? ${pageName}Control.urls.update : ${pageName}Control.urls.create
, data : info
, success : resp => ${pageName}Control.onSave(resp)
});
}
/**************************************************************************
* 사용자 함수
**************************************************************************/
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.create = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/260/create.do"); // 등록
${pageName}Control.urls.update = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/260/update.do"); // 수정
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 저장 버튼 클릭 이벤트
fnSave${pageName} = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
dialog.alert({
content : "현재 " + ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => {
${pageName}Control.save(${pageName}Fields.get());
}
});
}
/**************************************************************************
* 초기 셋팅
**************************************************************************/
// 이벤트 설정
setEvent${pageName} = () => {
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmEdit--${pageName}").find(".form-date").each(function() {
$(this).on("input", function() {
let value = this.value.replaceAll("-","");
if (value.length > 7) {
this.value = value.substring(0, 4) + "-" + value.substring(4, 6) + "-" + value.substring(6);
} else if(value.length > 5) {
this.value = value.substring(0, 4) + "-" + value.substring(4);
}
});
});
}
// 화면 초기 설정
initForm${pageName} = () => {
// 화면 초기화
$("#frmEdit--${pageName}")[0].reset();
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
$("#svbtcYmd--${pageName}").datepicker("setDate", new Date());
if (${pageName}CallPurpose == "view") {
// input 요소들을 disabled
$("#frmEdit--${pageName}").find("input,textarea,select").prop("disabled", true);
// button 요소들을 disabled
$("#btnSvbtcYmd--${pageName}").prop("disabled", true); // 부과제외 일자 달력 버튼
$("#btnSave--${pageName}").prop("disabled", true); // 저장 버튼
}
}
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// 이벤트 설정
setEvent${pageName}();
// 화면 초기 설정
initForm${pageName}();
// Dataset 설정
${pageName}Control.setData([${svbtcInfo}]);
});
</script>
Loading…
Cancel
Save