반송현황 - 공시송달 등록 수정.

main
jjh 1 year ago
parent a9c7abbfa7
commit b865855119

@ -76,7 +76,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setCrdnIDs(String... crdnIDs) {
this.crdnIDs = crdnIDs;
return self();
}
@ -86,7 +85,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setCrdnId(String crdnId) {
this.crdnId = crdnId;
return self();
}
@ -96,7 +94,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSndngIDs(String... sndngIDs) {
this.sndngIDs = sndngIDs;
return self();
}
@ -106,7 +103,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSndngId(String sndngId) {
this.sndngId = sndngId;
return self();
}
@ -116,7 +112,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSndngDtlIDs(String... sndngDtlIDs) {
this.sndngDtlIDs = sndngDtlIDs;
return self();
}
@ -126,7 +121,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSndngDtlId(String sndngDtlId) {
this.sndngDtlId = sndngDtlId;
return self();
}
@ -136,7 +130,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSvbtcIDs(String... svbtcIDs) {
this.svbtcIDs = svbtcIDs;
return self();
}
@ -146,7 +139,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSvbtcId(String svbtcId) {
this.svbtcId = svbtcId;
return self();
}
@ -156,7 +148,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSchLevyExclYmdFrom(String schLevyExclYmdFrom) {
this.schLevyExclYmdFrom = schLevyExclYmdFrom;
return self();
}
@ -166,7 +157,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSchLevyExclYmdTo(String schLevyExclYmdTo) {
this.schLevyExclYmdTo = schLevyExclYmdTo;
return self();
}
@ -176,7 +166,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSchLevyExclSeCd(String schLevyExclSeCd) {
this.schLevyExclSeCd = schLevyExclSeCd;
return self();
}
@ -186,7 +175,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSchVltnCd(String schVltnCd) {
this.schVltnCd = schVltnCd;
return self();
}
@ -196,7 +184,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSchVhrno(String schVhrno) {
this.schVhrno = schVhrno;
return self();
}
@ -206,7 +193,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSchCrdnYmdFrom(String schCrdnYmdFrom) {
this.schCrdnYmdFrom = schCrdnYmdFrom;
return self();
}
@ -216,7 +202,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSchCrdnYmdTo(String schCrdnYmdTo) {
this.schCrdnYmdTo = schCrdnYmdTo;
return self();
}
@ -226,7 +211,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSchRtpyrNm(String schRtpyrNm) {
this.schRtpyrNm = schRtpyrNm;
return self();
}
@ -236,7 +220,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSchSndngYmdFrom(String schSndngYmdFrom) {
this.schSndngYmdFrom = schSndngYmdFrom;
return self();
}
@ -246,7 +229,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSchSndngYmdTo(String schSndngYmdTo) {
this.schSndngYmdTo = schSndngYmdTo;
return self();
}
@ -256,7 +238,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSchDlvrYmdFrom(String schDlvrYmdFrom) {
this.schDlvrYmdFrom = schDlvrYmdFrom;
return self();
}
@ -266,7 +247,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSchDlvrYmdTo(String schDlvrYmdTo) {
this.schDlvrYmdTo = schDlvrYmdTo;
return self();
}
@ -373,7 +353,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setLevyExclSeNm(String levyExclSeNm) {
this.levyExclSeNm = levyExclSeNm;
return self();
}
@ -383,7 +362,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setVltnCd(String vltnCd) {
this.vltnCd = vltnCd;
return self();
}
@ -393,7 +371,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setVhrno(String vhrno) {
this.vhrno = vhrno;
return self();
}
@ -403,7 +380,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setRtpyrNm(String rtpyrNm) {
this.rtpyrNm = rtpyrNm;
return self();
}
@ -413,7 +389,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setLevyExclSeCd(String levyExclSeCd) {
this.levyExclSeCd = levyExclSeCd;
return self();
}
@ -423,7 +398,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setCrdnSttsCd(String crdnSttsCd) {
this.crdnSttsCd = crdnSttsCd;
return self();
}
@ -433,7 +407,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSndngSeCd(String sndngSeCd) {
this.sndngSeCd = sndngSeCd;
return self();
}
@ -443,7 +416,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSndngSeCdFrom(String sndngSeCdFrom) {
this.sndngSeCdFrom = sndngSeCdFrom;
return self();
}
@ -453,7 +425,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSndngSeCdTo(String sndngSeCdTo) {
this.sndngSeCdTo = sndngSeCdTo;
return self();
}
@ -463,7 +434,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setSndngDtlSttsCd(String sndngDtlSttsCd) {
this.sndngDtlSttsCd = sndngDtlSttsCd;
return self();
}
@ -473,7 +443,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setRcpnRelNm1(String rcpnRelNm1) {
this.rcpnRelNm1 = rcpnRelNm1;
return self();
}
@ -483,7 +452,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setRcpnRelNm2(String rcpnRelNm2) {
this.rcpnRelNm2 = rcpnRelNm2;
return self();
}
@ -493,7 +461,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setRcpnRelNm3(String rcpnRelNm3) {
this.rcpnRelNm3 = rcpnRelNm3;
return self();
}
@ -503,7 +470,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setRcpnRelNm4(String rcpnRelNm4) {
this.rcpnRelNm4 = rcpnRelNm4;
return self();
}
// 동적 검색 조건 ///////////////////////////////////////////////////////////////
@ -515,7 +481,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setCallPurpose(String callPurpose) {
this.callPurpose = callPurpose;
return self();
}
@ -525,7 +490,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setDelYn(String delYn) {
this.delYn = delYn;
return self();
}
@ -535,7 +499,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setDelRsn(String delRsn) {
this.delRsn = delRsn;
return self();
}
@ -545,7 +508,6 @@ public class SndbQuery extends CmmnQuery {
public <T extends SndbQuery> T setCrdnDelYn(String crdnDelYn) {
this.crdnDelYn = crdnDelYn;
return self();
}
// ETC /////////////////////////////////////////////////////////////////////

@ -10,9 +10,18 @@ import lombok.Setter;
*/
@Getter
@Setter
public class Svbtc extends AbstractEntity {
/**
* IDs
*/
private String[] sndngDtlIDs;
/**
* ID
*/
private String sndngDtlId;
/**
* ID
*/
@ -28,11 +37,6 @@ public class Svbtc extends AbstractEntity {
*/
private String taskSeCd;
/**
* ID
*/
private String vltnId;
/**
*
*/

@ -321,5 +321,19 @@ public interface SndngMapper extends AbstractMapper {
return sndngDtl != null && updateSndngDtlSttsCd(params().set("sndngDtl", sndngDtl)) == 1;
}
/** .
* @param params
* <ul><li>"sndngDtl" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateSndngDtlSvbtc(Map<String, Object> params);
default boolean updateSndngDtlSvbtc(SndngDtl sndngDtl) {
return sndngDtl != null && updateSndngDtlSvbtc(params().set("sndngDtl", sndngDtl)) == 1;
}
}

@ -41,7 +41,11 @@ public interface SvbtcMapper extends AbstractMapper {
*/
List<DataObject> selectSvbtcDtls(SndbQuery req);
/** ID .
* @param req
* @return
*/
String selectMaxSvbtcId(SndbQuery req);
/** .
* @param params

@ -86,9 +86,6 @@ public interface SndngService {
*/
List<DataObject> getSndngDtls(SndbQuery req);
/** .
* @param sndng
* @return
@ -125,85 +122,59 @@ public interface SndngService {
*/
String createSndngLink(Sndng sndng);
/** ID .<br />
* @param sndngDtlId ID
* @return
*/
DataObject getSndbkInfo(SndbQuery req);
/** .
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String createSndbk(SndngDtl sndngDtl);
boolean createSndngDtl(SndngDtl sndngDtl);
/** .
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String updateSndbk(SndngDtl sndngDtl);
boolean updateSndngDtl(SndngDtl sndngDtl);
/** .
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String deleteSndbk(SndngDtl sndngDtl);
/** .
* @param req
* @return
*/
List<DataObject> getSndngs(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getSndngDtlList(SndbQuery req);
boolean removeSndngDtl(SndngDtl sndngDtl);
/** .
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean createSndngDtl(SndngDtl sndngDtl);
String createSndbk(SndngDtl sndngDtl);
/** .
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean updateSndngDtl(SndngDtl sndngDtl);
String updateSndbk(SndngDtl sndngDtl);
/** .
/** .
* @param sndngDtl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean removeSndngDtl(SndngDtl sndngDtl);
String deleteSndbk(SndngDtl sndngDtl);
/** .
* @param svbtc
@ -212,7 +183,7 @@ public interface SndngService {
* <li> false</li>
* </ul>
*/
boolean createSvbtc(Svbtc svbtc);
String createSvbtc(Svbtc svbtc);
/** .
* @param svbtc
@ -232,4 +203,26 @@ public interface SndngService {
*/
boolean removeSvbtc(Svbtc svbtc);
/** ID .<br />
* @param sndngDtlId ID
* @return
*/
DataObject getSndbkInfo(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getSndngs(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getSndngDtlList(SndbQuery req);
}

@ -1149,8 +1149,37 @@ public class SndngBean extends AbstractComponent {
* <li> false</li>
* </ul>
*/
public boolean createSvbtc(Svbtc svbtc) {
return svbtcMapper.insert(svbtc);
public String createSvbtc(Svbtc svbtc) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지
// 공시송달(TB_SNDNG_DTL) 대장에 공시송달 정보를 등록 한다.
retSuccess = svbtcMapper.insert(svbtc);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("공시송달 대장에 등록에 실패하였습니다.");
}
// 발송상세 대장에 공시송달 정보 수정
for (int iLoop = 0; iLoop < svbtc.getSndngDtlIDs().length; iLoop++) {
// 전자우편 접수 상세
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setSvbtcId(svbtc.getSvbtcId());
sndngDtl.setSndngDtlSttsCd("06");
sndngDtl.setSndngDtlId(svbtc.getSndngDtlIDs()[iLoop]);
retSuccess = sndngMapper.updateSndngDtlSvbtc(sndngDtl);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("발송상세 대장에 공시송달 정보 수정에 실패하였습니다.");
}
}
retMessage = "[S] 작업이 정상 처리 되었습니다.";
return retMessage;
}
/** .

@ -159,7 +159,7 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
}
@Override
public boolean createSvbtc(Svbtc svbtc) {
public String createSvbtc(Svbtc svbtc) {
return sndngBean.createSvbtc(svbtc);
}

@ -16,6 +16,7 @@ import cokr.xit.fims.cmmn.service.TaskInfoService;
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.SndngService;
import cokr.xit.foundation.data.DataObject;
@ -64,8 +65,10 @@ public class Sndb01Controller extends ApplicationController {
, sendBackMain = "/230/main.do" // 반송 현황 메인 화면
, getSendBackList = "/230/list.do" // 반송 현황 목록 조회
, serviceByPublicNoticeMain = "/240/main.do" // 공시송달 현황 메인 화면
, getServiceByPublicNoticeList = "/240/list.do" // 공시송달 현황 목록 조회
, createServiceByPublicNotice = "/240/create.do" // 공시송달 등록
, getServiceByPublicNoticeInfo = "/250/info.do" // 공시송달 상세 조회
;
}
@ -583,18 +586,18 @@ public class Sndb01Controller extends ApplicationController {
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM004", "FIM005", "FIM006", "FIM047", "FIM054", "FIM061", "FIM064");
addCodes(commonCodes, mav, "FIM004", "FIM005", "FIM006", "FIM061", "FIM064");
addCodes(commonCodes, mav, "FIM004", "FIM005", "FIM006", "FIM054", "FIM061", "FIM064");
return mav.addObject("pageName", "sndb01230") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "sndbk") // prefix
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
.addObject("FIM004List", commonCodes.get("FIM004")) // 주정차위반 내역 코드(VLTN_ID)
.addObject("FIM005List", commonCodes.get("FIM005")) // 전용차로위반 내역 코드(VLTN_ID)
.addObject("FIM006List", commonCodes.get("FIM006")) // 장애인주차위반 내역 코드(VLTN_ID)
.addObject("FIM047List", commonCodes.get("FIM047")) // 발송 구분 코드(SNDNG_SE_CD)
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
.addObject("FIM061List", commonCodes.get("FIM061")) // 전기차 충전구역 및 충전방해 위반 코드(VLTN_ID)
.addObject("FIM064List", commonCodes.get("FIM064")) // 화물자동차 밤샘주차 위반 코드(VLTN_ID)
.addObject("FIM047List", commonCodes.get("FIM047")) // 발송 구분 코드(SNDNG_SE_CD)
;
}
@ -653,6 +656,31 @@ public class Sndb01Controller extends ApplicationController {
return setCollectionInfo(new ModelAndView("jsonView"), result, "svbtc");
}
/** .
* @param sndngDtl
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
public ModelAndView createServiceByPublicNotice(Svbtc svbtc) {
boolean saved = false;
String retMessage = sndngService.createSvbtc(svbtc);
if (retMessage.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("retMessage", retMessage);
}
/** - (sndb/sndb01/250-info) .
* @param svbtcId ID
* @return fims/sndb/sndb01250-info jsonView

@ -1,414 +0,0 @@
package cokr.xit.fims.sndb.web;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import cokr.xit.base.code.CommonCode;
import cokr.xit.base.web.ApplicationController;
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.SndngService;
/**
*
* <p> :
*
* <pre>
* ============ ============
* 2023-08-24 JoJH
* ================================
* </pre>
*/
public class Sndb04Controller extends ApplicationController {
public static final String CLASS_URL = "/sndb/sndb01";
public class METHOD_URL {
public static final String
warningSendingTargetMain = "/010/main.do" // 계도장 발송 대상 메인 화면
, getWrngSndngTrgtList = "/010/list.do" // 계도장 발송 대상 목록 조회
, getWrngSndngTrgtInfo = "/020/info.do" // 계도장 발송 대상 등록
, warningSendingMain = "/030/main.do" // 계도장 발송 현황 메인 화면
, getWrngSndngList = "/030/list.do" // 계도장 발송 현황 목록 조회
, advanceNoticeSendingTargetMain = "/030/main.do" // 사전통보 발송 대상 메인 화면
, getAdvntceSndngTrgtList = "/030/list.do" // 사전통보 발송 대상 목록 조회
, advanceNoticeSendingMain = "/040/main.do" // 사전통보 발송 현황 메인 화면
, getAdvntceSndngList = "/040/list.do" // 사전통보 발송 현황 목록 조회
, noticeSheetSendingMain = "/060/main.do" // 고지서 발송 현황 메인 화면
, getNhtSndngList = "/060/list.do" // 고지서 발송 현황 목록 조회
;
}
/**발송 대장 서비스*/
@Resource(name = "sndngService")
private SndngService sndngService;
/** (sndb/sndb01/010-main) .
* {@link #getSndngList(SndbQuery) } .
* @return /sndb/sndb01/010-main
*/
public ModelAndView warningSendingTargetMain() {
ModelAndView mav = new ModelAndView("fims/sndb/sndb01010-main");
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM004", "FIM005", "FIM006", "FIM054", "FIM061", "FIM064");
addCodes(commonCodes, mav, "FIM004", "FIM005", "FIM006", "FIM061", "FIM064");
return mav.addObject("pageName", "sndb01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "sndng") // prefix
.addObject("FIM004List", commonCodes.get("FIM004")) // 주정차위반 내역 코드(VLTN_ID)
.addObject("FIM005List", commonCodes.get("FIM005")) // 전용차로위반 내역 코드(VLTN_ID)
.addObject("FIM006List", commonCodes.get("FIM006")) // 장애인주차위반 내역 코드(VLTN_ID)
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
.addObject("FIM061List", commonCodes.get("FIM061")) // 전기차 충전구역 및 충전방해 위반 코드(VLTN_ID)
.addObject("FIM064List", commonCodes.get("FIM064")) // 화물자동차 밤샘주차 위반 코드(VLTN_ID)
;
}
/** .<br />
* {@link SndngService#getSndngList(SndngQuery)}
* @param req
* @return jsonView
* <pre><code> {
* "wrngSndngTrgtList": [ ]
* "wrngSndngTrgtStart":
* "wrngSndngTrgtFetch":
* "wrngSndngTrgtTotal":
* }</code></pre>
*/
public ModelAndView getWrngSndngTrgtList(SndbQuery req) {
List<?> result = sndngService.getWrngSndngTrgtList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "wrngSndngTrgt");
}
/** (sndb/sndb01/020-info) .
* @param crdnIDs IDs
* @return fims/sndb/sndb01020-info jsonView
* <pre>{
* "wrngSndngTrgts": [ ]
* }</pre>
*/
public ModelAndView getWrngSndngTrgtInfo(SndbQuery req) {
List<?> sndngTrgts = sndngService.getSndngTrgts(req);
boolean json = jsonResponse();
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01020-info");
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054");
return mav
.addObject("pageName", "sndb01020")
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
.addObject("wrngSndngTrgts", json ? sndngTrgts : toJson(sndngTrgts)) // 계도장 발송 대상 정보
;
}
/** (sndb/sndb01/020-main) .
* {@link #getSndngList(SndbQuery) } .
* @return /sndb/sndb01/020-main
*/
public ModelAndView warningSendingMain() {
ModelAndView mav = new ModelAndView("fims/sndb/sndb01020-main");
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054");
return mav.addObject("pageName", "sndb01020") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "sndng") // prefix
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
;
}
/** (sndb/sndb01/030-main) .
* {@link #getSndngList(SndbQuery) } .
* @return /sndb/sndb01/030-main
*/
public ModelAndView advanceNoticeSendingTargetMain() {
ModelAndView mav = new ModelAndView("fims/sndb/sndb01030-main");
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054");
return mav.addObject("pageName", "sndb01030") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "sndng") // prefix
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
;
}
/** .<br />
* {@link SndngService#getSndngList(SndngQuery)}
* @param req
* @return jsonView
* <pre><code> {
* "sndngList": [ ]
* "sndngStart":
* "sndngFetch":
* "sndngTotal":
* }</code></pre>
*/
public ModelAndView getAdvntceSndngTrgtList(SndbQuery req) {
List<?> result = sndngService.getAdvntceSndngTrgtList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "sndng");
}
/** (sndb/sndb01/040-main) .
* {@link #getSndngList(SndbQuery) } .
* @return /sndb/sndb01/040-main
*/
public ModelAndView advanceNoticeSendingMain() {
ModelAndView mav = new ModelAndView("fims/sndb/sndb01040-main");
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054");
return mav.addObject("pageName", "sndb01040") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "sndng") // prefix
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
;
}
/** (sndb/sndb01/060-main) .
* {@link #getSndngList(SndbQuery) } .
* @return /sndb/sndb01/060-main
*/
public ModelAndView noticeSheetSendingMain() {
ModelAndView mav = new ModelAndView("fims/sndb/sndb01060-main");
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054");
return mav.addObject("pageName", "sndb01060") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "sndng") // prefix
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
;
}
/** .<br />
* {@link SndngService#getSndngList(SndngQuery)}
* @param req
* @return jsonView
* <pre><code> {
* "sndngList": [ ]
* "sndngStart":
* "sndngFetch":
* "sndngTotal":
* }</code></pre>
*/
@RequestMapping(name = "발송 대장 조회", value = "/010/sndngList.do")
public ModelAndView getSndngList(SndbQuery req) {
List<?> result = sndngService.getSndngList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "sndng");
}
/** .
* @param sndng
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@PostMapping(name = "발송 대장 등록", value = "/010/createSndng.do")
public ModelAndView createSndng(Sndng sndng) {
// boolean saved = sndngService.createSndng(sndng);
boolean saved = true;
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
/** .
* @param sndng
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@PostMapping(name = "발송 대장 수정", value = "/010/updateSndng.do")
public ModelAndView updateSndng(Sndng sndng) {
boolean saved = sndngService.updateSndng(sndng);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
/** .
* @param sndngIDs
* @return jsonView
* <pre><code> {
* "affected":
* "saved": true, false
* }</code></pre>
*/
@PostMapping(name = "발송 대장 제거", value = "/010/removeSndng.do")
public ModelAndView removeSndng(Sndng sndng) {
boolean saved = sndngService.removeSndng(sndng);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
/** .<br />
* {@link SndngDtlService#getSndngDtlList(SndbQuery)}
* @param req
* @return jsonView
* <pre><code> {
* "sndngDtlList": [ ]
* "sndngDtlStart":
* "sndngDtlFetch":
* "sndngDtlTotal":
* }</code></pre>
*/
@RequestMapping(name = "발송 상세 조회", value = "/010/sndngDtlList.do")
public ModelAndView getSndngDtlList(SndbQuery req) {
List<?> result = sndngService.getSndngDtlList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "sndngDtl");
}
/** .
* @param sndngDtl
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@PostMapping(name = "발송 상세 등록", value = "/010/createSndngDtl.do")
public ModelAndView createSndngDtl(SndngDtl sndngDtl) {
boolean saved = sndngService.createSndngDtl(sndngDtl);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
/** .
* @param sndngDtl
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@PostMapping(name = "발송 상세 수정", value = "/010/updateSndngDtl.do")
public ModelAndView updateSndngDtl(SndngDtl sndngDtl) {
boolean saved = sndngService.updateSndngDtl(sndngDtl);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
/** .
* @param sndngDtlIDs
* @return jsonView
* <pre><code> {
* "affected":
* "saved": true, false
* }</code></pre>
*/
@PostMapping(name = "발송 상세 제거", value = "/010/removeSndngDtl.do")
public ModelAndView removeSndngDtl(SndngDtl sndngDtl) {
boolean saved = sndngService.removeSndngDtl(sndngDtl);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
/** (fims/sndb/sndb01120-main) .
* {@link #getSvbtcList(SndbQuery) } .
* @return /svbtc/svbtc-main
*/
@RequestMapping(name = "공시송달 대장 메인", value = "/120/main.do")
public ModelAndView ServiceByPublicNoticeMain() {
ModelAndView mav = new ModelAndView("fims/sndb/sndb01120-main");
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054");
return mav.addObject("pageName", "sndb01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "sndng") // prefix
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
;
}
/** .<br />
* {@link SvbtcService#getSvbtcList(SndbQuery)}
* @param req
* @return jsonView
* <pre><code> {
* "svbtcList": [ ]
* "svbtcStart":
* "svbtcFetch":
* "svbtcTotal":
* }</code></pre>
*/
@RequestMapping(name = "공시송달 대장 조회", value = "/120/list.do")
public ModelAndView getSvbtcList(SndbQuery req) {
List<?> result = sndngService.getSvbtcList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "svbtc");
}
/** .
* @param svbtc
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@PostMapping(name = "공시송달 대장 등록", value = "/120/create.do")
public ModelAndView createSvbtc(Svbtc svbtc) {
boolean saved = sndngService.createSvbtc(svbtc);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
/** .
* @param svbtc
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@PostMapping(name = "공시송달 대장 수정", value = "/120/update.do")
public ModelAndView updateSvbtc(Svbtc svbtc) {
boolean saved = sndngService.updateSvbtc(svbtc);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
/** .
* @param svbtcIDs
* @return jsonView
* <pre><code> {
* "affected":
* "saved": true, false
* }</code></pre>
*/
@PostMapping(name = "공시송달 대장 제거", value = "/120/remove.do")
public ModelAndView removeSvbtc(Svbtc svbtc) {
boolean saved = sndngService.removeSvbtc(svbtc);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
}

@ -21,6 +21,7 @@ import cokr.xit.fims.payer.PayerQuery;
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.sprt.CvlcptDscsn;
import cokr.xit.fims.sprt.CvlcptDscsnQuery;
import cokr.xit.fims.sprt.SprtQuery;
@ -586,13 +587,18 @@ public class DpvController {
return super.getServiceByPublicNoticeList(req);
}
@Override
@RequestMapping(name="공시송달 등록", value=METHOD_URL.createServiceByPublicNotice)
public ModelAndView createServiceByPublicNotice(Svbtc svbtc) {
return super.createServiceByPublicNotice(svbtc);
}
@Override
@RequestMapping(name="공시송달 상세 조회", value=METHOD_URL.getServiceByPublicNoticeInfo)
public ModelAndView getServiceByPublicNoticeInfo(SndbQuery req) {
return super.getServiceByPublicNoticeInfo(req);
}
@Override
@RequestMapping(name = "고지서 발송 대상", value = METHOD_URL.noticeSheetSendingTargetMain)
public ModelAndView noticeSheetSendingTargetMain() {

@ -1006,7 +1006,7 @@
AND (SD.SNDNG_RCVMT_CD IS NULL OR SD.SNDNG_RCVMT_CD = '')
AND (S.RESND_YN IS NULL OR S.RESND_YN = 'N')
<choose>
<when test="schChcRgIndct == 'Y'">
<when test='schChcRgIndct == "Y"'>
AND ( (SD.SNDNG_DTL_STTS_CD = #{sndngDtlSttsCd})
OR (EDR.RELRECPRSNCD BETWEEN '13' AND '16')
OR (RCPN_REL_NM IN (#{rcpnRelNm1}, #{rcpnRelNm2}, #{rcpnRelNm3}, #{rcpnRelNm4})) )
@ -1607,4 +1607,15 @@
AND DEL_YN = 'N'
</update>
<update id="updateSndngDtlSvbtc" parameterType="map">/* 공시송달 수정(sndngMapper.updateSndngDtlSvbtc) */
UPDATE TB_SNDNG_DTL
SET SVBTC_ID = #{sndngDtl.svbtcId} <!-- 공시송달 ID -->
, BFR_SNDNG_DTL_STTS_CD = SNDNG_DTL_STTS_CD <!-- 이전 발송 상세 상태 코드 -->
, SNDNG_DTL_STTS_CD = #{sndngDtl.sndngDtlSttsCd} <!-- 발송 상세 상태 코드 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{sndngDtl.modifiedBy} <!-- 수정자 -->
WHERE SNDNG_DTL_ID = #{sndngDtl.sndngDtlId} <!-- 발송 상세 ID -->
AND DEL_YN = 'N'
</update>
</mapper>

@ -11,7 +11,6 @@
<result property="svbtcId" column="SVBTC_ID" /> <!-- 공시송달 ID -->
<result property="sggCd" column="SGG_CD" /> <!-- 시군구 코드 -->
<result property="taskSeCd" column="TASK_SE_CD" /> <!-- 업무 구분 코드 -->
<result property="vltnId" column="VLTN_ID" /> <!-- 위반 ID -->
<result property="sndngSeCd" column="SNDNG_SE_CD" /> <!-- 발송 구분 코드 -->
<result property="svbtcYmd" column="SVBTC_YMD" /> <!-- 공시송달 일자 -->
<result property="ttlNm" column="TTL_NM" /> <!-- 제목 명 -->
@ -53,11 +52,7 @@
, SV.DLTR <!-- 삭제자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SV.DLTR) AS DLTR_NM <!-- 등록자 명 -->
, SV.DEL_RSN <!-- 삭제 사유 -->
, VI.VLTN_ID <!-- 위반 ID -->
, VI.VLTN_CD <!-- 위반 코드 -->
, VI.VLTN_ARTCL <!-- 위반 항목 -->
FROM TB_SVBTC SV
LEFT OUTER JOIN TB_VLTN_INFO VI ON (SV.VLTN_ID = VI.VLTN_ID AND SV.SGG_CD = VI.SGG_CD AND SV.TASK_SE_CD = VI.TASK_SE_CD)
</sql>
<select id="selectSvbtcList" parameterType="map" resultType="dataobject">/* 공시송달 대장 목록 조회(svbtcMapper.selectSvbtcList) */
@ -161,12 +156,8 @@
, SD.SNDNG_RCVMT_CD <!-- 발송 수납 코드 -->
, (SELECT GET_CODE_NM('FIM051', SD.SNDNG_RCVMT_CD) FROM DUAL) AS SNDNG_RCVMT_NM <!-- 발송 수납 명 -->
, SD.ADDR_CHG_CD <!-- 주소 변경 코드 -->
, VI.VLTN_ID <!-- 위반 ID -->
, VI.VLTN_CD <!-- 위반 코드 -->
, VI.VLTN_ARTCL <!-- 위반 항목 -->
FROM TB_SVBTC SV
INNER JOIN TB_SNDNG_DTL SD ON (SV.SVBTC_ID = SD.SVBTC_ID)
LEFT OUTER JOIN TB_VLTN_INFO VI ON (SV.VLTN_ID = VI.VLTN_ID AND SV.SGG_CD = VI.SGG_CD AND SV.TASK_SE_CD = VI.TASK_SE_CD)
</sql>
<select id="selectSvbtcDtls" parameterType="map" resultType="dataobject">/* 공시송달 상세 객체 가져오기(svbtcMapper.selectSvbtcDtls) */
@ -180,12 +171,16 @@
</select>
<insert id="insertSvbtc" parameterType="map">/* 공시송달 대장 등록(svbtcMapper.insertSvbtc) */
<selectKey resultType="string" keyProperty="svbtc.svbtcId" keyColumn="NEW_ID" order="BEFORE">
SELECT CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(SVBTC_ID, 5)) + 1, 1) AS INT), 16, '0')) AS NEW_ID
FROM TB_SVBTC
WHERE SVBTC_ID LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), '%')
</selectKey>
INSERT
INTO TB_SVBTC (
SVBTC_ID <!-- 공시송달 ID -->
, SGG_CD <!-- 시군구 코드 -->
, TASK_SE_CD <!-- 업무 구분 코드 -->
, VLTN_ID <!-- 위반 ID -->
, SNDNG_SE_CD <!-- 발송 구분 코드 -->
, SVBTC_YMD <!-- 공시송달 일자 -->
, TTL_NM <!-- 제목 명 -->
@ -203,7 +198,6 @@
#{svbtc.svbtcId} <!-- 공시송달 ID -->
, #{svbtc.sggCd} <!-- 시군구 코드 -->
, #{svbtc.taskSeCd} <!-- 업무 구분 코드 -->
, #{svbtc.vltnId} <!-- 위반 ID -->
, #{svbtc.sndngSeCd} <!-- 발송 구분 코드 -->
, #{svbtc.svbtcYmd} <!-- 공시송달 일자 -->
, #{svbtc.ttlNm} <!-- 제목 명 -->

@ -348,7 +348,7 @@
checkbox.prop("checked", keys.includes(checkbox.val()));
});
$("#btn${infoPrefix}Remove--${pageName}").prop("disabled", keys.length < 1);
$("#btnLevyExclRemove--${pageName}").prop("disabled", keys.length < 1);
};
// 개별총정보 dialog

@ -354,7 +354,7 @@
checkbox.prop("checked", keys.includes(checkbox.val()));
});
$("#btn${infoPrefix}Remove--${pageName}").prop("disabled", keys.length < 1);
$("#btnOpnnRemove--${pageName}").prop("disabled", keys.length < 1);
};
// 개별총정보 dialog

@ -301,7 +301,7 @@
checkbox.prop("checked", keys.includes(checkbox.val()));
});
$("#btnCreateRductLevy--${pageName}").prop("disabled", keys.length < 1);
$("#btnRductLevyInfo--${pageName}").prop("disabled", keys.length < 1);
};
// 개별총정보 dialog
@ -351,9 +351,8 @@
fn_securityModeToggle($("#securityMode--top").is(":checked"));
}
create${pageName} = (obj) => {
let btnTitle = $("#btnCreateRductLevy--${pageName}").attr("title");
// callback
callbackRductLevyInfo${pageName} = (obj) => {
// 선택된 자료의 발송 상세 ID 추가
let selected = ${pageName}Control.dataset.getKeys("selected");
@ -372,6 +371,7 @@
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/010/create.do")
, data : params
, success : resp => {
let btnTitle = $("#btnCreateRductLevy--${pageName}").attr("title");
let showMessage = resp.retMessage.replace(/[S]|[F]/g, btnTitle);
dialog.alert(showMessage);
@ -497,9 +497,7 @@
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
let callbackFuncName = "create${pageName}";
let sndngYmd = DateUtil.getDateDay().date;
let dudtYmd = DateUtil.getDateDay().date;
let callbackFuncName = "callbackRductLevyInfo${pageName}";
let popupWidth = 480;
let popupHeight = 320;
@ -511,8 +509,8 @@
wctx.url("/resources/html/inputDateDialog.html"
+ "?callbackFuncName=" + callbackFuncName
+ "&CALL_PURPOSE=" + "levy"
+ "&SNDNG_YMD=" + sndngYmd
+ "&DUDT_YMD=" + dudtYmd
+ "&SNDNG_YMD=" + DateUtil.getDateDay().date
+ "&DUDT_YMD=" + DateUtil.getDateDay().date
)
, "inputEPostDateDialog"
, 'status=no, height=' + popupHeight + ', width=' + popupWidth + ', left='+ popupX + ', top='+ popupY

@ -78,35 +78,11 @@
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">발송구분</label>
<select class="form-select w-px-150" id="schSndngSeCd--${pageName}" name="schSndngSeCd">
<option value="">전체</option>
<c:forEach items="${FIM047List}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
</select>
</div>
<!-- 위반항목 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">위반항목</label>
<select class="form-select" id="schVltnCd--${pageName}" name="schVltnCd">
<option value="">전체</option>
<c:forEach items="${FIM004List}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
</select>
</div>
<!-- 단속일자 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">단속일자</label>
<span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schCrdnYmdFrom--${pageName}" name="schCrdnYmdFrom"
data-fmt-type="day" autocomplete="off" title="시작 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
~
<input type="text" class="form-control form-date" id="schCrdnYmdTo--${pageName}" name="schCrdnYmdTo"
data-fmt-type="day" autocomplete="off" title="종료 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</span>
</div>
<!-- 동적검색 -->
<div class="col-6">
<input type="hidden" id="by--${pageName}" name="by" />
@ -117,7 +93,7 @@
</div>
<!-- 선택등기 표시 -->
<div class="col-6 form-check">
<input type="checkbox" class="form-check-input" id="schChcRgIndct--${pageName}" name="schChcRgIndct" value="Y" />
<input type="checkbox" class="form-check-input" id="schChcRgIndct--${pageName}" name="schChcRgIndct" value="Y" checked />
<label class="form-check-label" for="schChcRgIndct--${pageName}">선택등기표시</label>
</div>
<!-- 상세 검색조건 버튼 -->
@ -205,7 +181,7 @@
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('RG_NO', this.innerText, 'match', 'part');">등기번호</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('DLVR_YMD', this.innerText, 'ymd', '');">배달일자</th>
<th class="cmn" style="width: 100px;" onclick="searchFromGridTitle('DLVR_TM', this.innerText, 'time', '');">배달시간</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('UNDLVR_RSN_NM', this.innerText, 'match', 'part');">미배달사유</th>
<th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('UNDLVR_RSN_NM', this.innerText, 'match', 'part');">미배달사유</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('RCPN_NM', this.innerText, 'match', 'part');">수령인</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('SNDNG_YMD', this.innerText, 'ymd', '');">발송일자</th>
@ -292,6 +268,7 @@
var FIM004 = new CommonCodes(${FIM004}, true);
var FIM005 = new CommonCodes(${FIM005}, true);
var FIM006 = new CommonCodes(${FIM006}, true);
var FIM054 = new CommonCodes(${FIM054}, true);
var FIM061 = new CommonCodes(${FIM061}, true);
var FIM064 = new CommonCodes(${FIM064}, true);
@ -355,6 +332,8 @@
checkbox.prop("checked", keys.includes(checkbox.val()));
});
$("#btnSvbtcInfo--${pageName}").prop("disabled", keys.length < 1);
};
// 개별총정보 dialog
@ -404,6 +383,39 @@
fn_securityModeToggle($("#securityMode--top").is(":checked"));
}
// 공시송달 등록 버튼 callback
callbackSvbtcCreate${pageName} = (obj) => {
// 선택된 자료의 발송 상세 ID 추가
let selected = ${pageName}Control.dataset.getKeys("selected");
if (selected.length < 1) return;
let params = {
sndngDtlIDs : selected.join(",") // 발송 상세 IDs
, sggCd : $("#sggCd--${pageName}").val() // 시군구 코드
, taskSeCd : $("input[name='taskSeCd']:checked").val() // 업무 구분 코드
, sndngSeCd : ${pageName}Control.dataset.getValue("SNDNG_SE_CD") // 발송 구분 코드
, svbtcYmd : obj.calYmd // 공시송달 일자
, ttlNm : obj.ttlNm // 제목 명
, docNo : obj.docNo // 문서 번호
, etcCn : obj.etcCn // 기타 내용
, tnocs : obj.tnocs // 총건수
}
ajax.post({
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/240/create.do")
, data : params
, success : resp => {
let btnTitle = $("#btnSvbtcInfo--${pageName}").attr("title");
let showMessage = resp.retMessage.replace(/[S]|[F]/g, btnTitle);
dialog.alert(showMessage); // 메시지 출력
${pageName}Control.load(); // 자료 재조회
}
});
}
/**************************************************************************
* 초기 셋팅
**************************************************************************/
@ -454,7 +466,6 @@
if ((el[0].scrollHeight - el.scrollTop() + VERTICAL_SCROLL_HEIGHT) <= el.outerHeight()) {
${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 완료
${pageName}Control.load(${pageName}Control.query.pageNum + 1);
}
});
@ -499,6 +510,8 @@
$("#schDlvrYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-365).date);
$("#schDlvrYmdTo--${pageName}").datepicker("setDate", new Date());
$("#schSndngSeCd--${pageName}").val("02").prop("selected", true);
}
// URL 설정
@ -537,8 +550,6 @@
// 검색조건
${pageName}Control.query = ${pageName}Fields.get();
let aaa = ${pageName}Fields.get();
debugger;
${pageName}Control.query.fetchSize = FETCH_XS; // 한번에 조회되는 자료 건수 FETCH_XS = 30
${pageName}Control.query.sndngDtlSttsCd = "05"; // FIM050 - 05 반송
${pageName}Control.query.rcpnRelNm1 = "무인배달"; // 13
@ -562,7 +573,38 @@ debugger;
// 공시송달 등록 버튼 이벤트
fnSvbtcInfo${pageName} = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
let callbackFuncName = "callbackSvbtcCreate${pageName}";
let selected = ${pageName}Control.dataset.getKeys("selected");
let taskSeCd = $("input:radio[name='taskSeCd']:checked").val();
let sndng = $("#schSndngSeCd--${pageName} option:selected").text();
let ttlNm = "";
if (sndng == "전체") {
ttlNm = FIM054[taskSeCd].value + " " + "공시송달";
} else {
ttlNm = FIM054[taskSeCd].value + " " + sndng.replace("(개별)", "") + " " + "공시송달";
}
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=" + "svbtc"
+ "&TNOCS=" + selected.length
+ "&CAL_YMD=" + DateUtil.getDateDay().date
+ "&TTL_NM=" + ttlNm
)
, "inputSvbtcDialog"
, 'status=no, height=' + popupHeight + ', width=' + popupWidth + ', left='+ popupX + ', top='+ popupY
);
}
/**************************************************************************

@ -71,8 +71,10 @@
</c:forEach>
</select>
</div>
<!-- -->
<!-- 문서 번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">문서번호</label>
<input type="text" class="form-control w-px-160" id="schDocNo--${pageName}" name="schDocNo" autocomplete="off" />
</div>
<!-- 동적검색 -->
<div class="col-6">
@ -137,7 +139,9 @@
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnSvbtcRemoves--${pageName}" title="공시송달 삭제" onclick="fnSvbtcRemoves${pageName}();">
공시송달 삭제
</button>
</span>
</span>
</div>
@ -157,11 +161,9 @@
</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('TASK_SE_CD', this.innerText, 'codeValue', 'FIM054');">업무구분</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('SNDNG_SE_CD', this.innerText, 'codeValue', 'FIM047');">발송구분</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('VLTN_ARTCL', this.innerText, 'match', 'part');">위반항목</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('SVBTC_YMD', this.innerText, 'ymd', '');">송달일자</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: 140px;" onclick="searchFromGridTitle('GRAMT', this.innerText, 'match', 'part');">총금액</th>
<th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('TTL_NM', 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: 200px;" onclick="searchFromGridTitle('DOC_NO', 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>
@ -181,10 +183,8 @@
</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{TASK_SE_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_SE_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VLTN_ARTCL}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SVBTC_YMD}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{TNOCS}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{GRAMT}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{TTL_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{DOC_NO}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ETC_CN}</td>
@ -197,7 +197,7 @@
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="16" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="14" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
@ -285,7 +285,7 @@
checkbox.prop("checked", keys.includes(checkbox.val()));
});
$("#btn${infoPrefix}Remove--${pageName}").prop("disabled", keys.length < 1);
$("#btnSvbtcRemoves--${pageName}").prop("disabled", keys.length < 1);
};
// 공시송달 상세

@ -41,7 +41,7 @@
<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 hidden" style="width: 56px;">
<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: 120px;">발송상태</th>
@ -68,7 +68,7 @@
</tbody>
<template id="${infoPrefix}Row--${pageName}">
<tr data-key="{SNDNG_DTL_ID}">
<td class="cmn text-center hidden">
<td class="cmn text-center">
<input type="checkbox" class="form-check-input" value="{SNDNG_DTL_ID}" onchange="${pageName}Control.select('{SNDNG_DTL_ID}', this.checked);">
</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_DTL_STTS_NM}</td>
@ -120,10 +120,10 @@
* DatasetControl
**************************************************************************/
var ${pageName}Control = new DatasetControl({
prefix : "wrngSndngDtl"
, prefixName : "발송 대상"
prefix : "svbtcDtl"
, prefixName : "공시송달 상세"
, keymapper : info => info ? info.SNDNG_DTL_ID : ""
, dataGetter : obj => obj.wrngSndngDtlList
, dataGetter : obj => obj.svbtcDtlList
, appendData : true
, tableRenderComplete : false // dataTables 에 자료 추가 완료 여부
, formats : {
@ -142,11 +142,6 @@
${pageName}Control.onDatasetChange = obj => {
renderList${pageName}();
${pageName}Control.select(true); // 전체 선택 되도록..
if (obj.length > 0) {
}
${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
};

@ -0,0 +1,148 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!-- Favicon -->
<link rel="icon" type="image/x-icon" href="/resources/image/favicon.ico" />
<!-- Fonts -->
<link rel="stylesheet" href="/resources/font/publicsans/fontface.css" />
<!-- Icons. Uncomment required icon fonts -->
<link rel="stylesheet" href="/resources/3rd-party/sneat/fonts/boxicons.css" />
<link rel="stylesheet" href="/resources/3rd-party/sneat/fonts/fontawesome.css" />
<link rel="stylesheet" href="/resources/3rd-party/sneat/fonts/flag-icons.css" />
<link rel="stylesheet" href="/resources/css/fims/framework/common/xit-icon.css" />
<!-- Core CSS -->
<link rel="stylesheet" href="/resources/css/fims/framework/common/xit-core.css" />
<link rel="stylesheet" href="/resources/3rd-party/sneat/css/theme-default.css" />
<link rel="stylesheet" href="/resources/3rd-party/sneat/css/docs.css" />
<link rel="stylesheet" href="/resources/css/fims/framework/common/xit-core-extend.css" />
<!-- Vendors CSS -->
<link rel="stylesheet" href="/resources/3rd-party/sneat/libs/perfect-scrollbar/perfect-scrollbar.css" />
<link rel="stylesheet" href="/resources/css/styles.css" />
<link rel="stylesheet" href="/resources/css/fims/framework/common/common.css"/>
<link rel="stylesheet" href="/resources/lib/fims/framework/jquery-ui/1.13.2/themes/redmond/jquery-ui.css" />
<link rel="stylesheet" href="/resources/lib/fims/framework/datepicker/datepicker.css" />
<title>공시송달 입력</title>
</head>
<body>
<div class="card m-4 p-3">
<form id="frmInput" name="frmInput" method="post">
<div class="container-search">
<div class="row g-1">
<!-- 총건수 -->
<div class="col-md-12 text-end">
<label for=tnocs" class="w-px-120 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" readonly />
</div>
<!-- 일자 -->
<div class="col-md-12">
<label for="calYmd" 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="calYmd" name="calYmd"
data-fmt-type="day" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</div>
<!-- 제목 명 -->
<div class="col-md-12">
<label for=ttlNm" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">제목</label>
<input type="text" class="form-control w-75" id="ttlNm" name="ttlNm" autocomplete="off" required />
</div>
<!-- 문서 번호 -->
<div class="col-md-12">
<label for="docNo" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">문서번호</label>
<input type="text" class="form-control w-75" id="docNo" name="docNo" autocomplete="off" />
</div>
<!-- 기타 내용 -->
<div class="col-md-12">
<label for="etcCn" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">기타 내용</label>
<textarea type="text" class="form-control w-75" id="etcCn" name="etcCn" autocomplete="off" rows="3" data-maxlengthb="1000"></textarea>
</div>
</div>
</div>
</form>
<div>
<span class="container-page-btn">
<span class="container-window-btn-right">
<button type="button" class="btn btn-primary w-px-80" title="확인" onclick="fnOK()">확인</button>
</span>
</span>
</div>
</div>
<script type="text/JavaScript" src="/resources/3rd-party/sneat/libs/jquery/jquery.js" ></script>
<script src="/resources/3rd-party/sneat/libs/popper/popper.js"></script>
<script src="/resources/3rd-party/sneat/js/bootstrap.js"></script>
<script src="/resources/3rd-party/sneat/libs/perfect-scrollbar/perfect-scrollbar.js"></script>
<script src="/resources/3rd-party/sneat/libs/hammer/hammer.js"></script>
<script src="/resources/3rd-party/sneat/libs/i18n/i18n.js"></script>
<script src="/resources/3rd-party/sneat/js/menu.js"></script>
<script src="/resources/3rd-party/sneat/libs/jstree/jstree.js"></script>
<script src="/resources/3rd-party/jstree/jstree-support.js"></script>
<script src="/resources/3rd-party/sneat/libs/chartjs/chartjs.js"></script>
<script src="/resources/lib/fims/framework/jquery-ui/1.13.2/jquery-ui.js"></script>
<script src="/resources/lib/fims/framework/datepicker/datepicker.js"></script>
<script src="/resources/js/fims/framework/cmm/cmmDateUtil.js"></script>
<script src="/resources/js/fims/framework/cmm/initAfterPageLoad.js"></script>
<script language="javascript">
var callbackFuncName = location.search.split("&")[0].split("=")[1];
var callPurpose = location.search.split("&")[1].split("=")[1];
var tnocs = location.search.split("&")[2].split("=")[1];
var calYmd = location.search.split("&")[3].split("=")[1];
var ttlNm = decodeURI(location.search.split("&")[4].split("=")[1]);
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmInput").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);
}
});
});
// 날짜형식에 "-"이 사용된 경우에 한하여 날짜값에서 "-" 기호를 제거한다.
function inputDateSplit(obj) {
if (obj == "") {
return obj;
} else {
let dateArray = obj.split("-");
return dateArray[0] + dateArray[1] + dateArray[2];
}
}
function fnOK() {
let obj = {};
obj.tnocs = $("#tnocs").val(); // 총건수
obj.calYmd = inputDateSplit($("#calYmd").val()); // 일자
obj.ttlNm = $("#ttlNm").val(); // 제목
obj.docNo = $("#docNo").val(); // 문서번호
obj.etcCn = $("#etcCn").val(); // 기타내용
window.opener[callbackFuncName](obj);
window.close();
}
$(document).ready(function() {
// 달력 초기화
initDatepicker("frmInput");
$("#calYmd").datepicker("setDate", calYmd);
$("#tnocs").val(tnocs);
$("#ttlNm").val(ttlNm);
});
</script>
</body>
</html>
Loading…
Cancel
Save