사전통지 발송 대상 수정.

main
jjh 1 year ago
parent 2b1e7baf6f
commit 38d3d6e09b

@ -16,7 +16,7 @@ import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.excl.ExclQuery;
import cokr.xit.fims.excl.dao.OpnnSbmsnMapper;
import cokr.xit.fims.levy.Rduct;
import cokr.xit.fims.levy.service.bean.Levy02Bean;
import cokr.xit.fims.levy.service.bean.RductBean;
import cokr.xit.foundation.AbstractComponent;
import cokr.xit.foundation.data.DataObject;
@ -46,8 +46,8 @@ public class Excl02Bean extends AbstractComponent {
private CrdnSttsHstryBean crdnSttsHstryBean;
/** 과태료 감경 대장 정보 Bean */
@Resource(name = "levy02Bean")
private Levy02Bean levy02Bean;
@Resource(name = "rductBean")
private RductBean rductBean;
/** .
* @param req
@ -288,7 +288,7 @@ public class Excl02Bean extends AbstractComponent {
rduct.setRductAmt(opnnSbmsn.getRductAmt());
rduct.setEtcCn("의견제출 심의 처리에 의한 감경 등록");
retMessage = levy02Bean.createRduct(rduct);
retMessage = rductBean.createRduct(rduct);
if (retMessage.contains("[F]")) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다.");
@ -305,7 +305,7 @@ public class Excl02Bean extends AbstractComponent {
rduct.setRductRsnCd(opnnSbmsn.getRductRsnCd());
rduct.setRductAmt(opnnSbmsn.getRductAmt());
retMessage = levy02Bean.updateRduct(rduct);
retMessage = rductBean.updateRduct(rduct);
if (retMessage.contains("[F]")) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다.");
@ -314,7 +314,7 @@ public class Excl02Bean extends AbstractComponent {
rduct.setRductId(infoCrdnOpnnSbmsn.string("RDUCT_ID"));
rduct.setDelRsn("의견제출 심의 처리에 의한 감경 삭제");
retMessage = levy02Bean.removeRduct(rduct);
retMessage = rductBean.removeRduct(rduct);
if (retMessage.contains("[F]")) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("의견제출 심의 처리 중 과태료 감경 등록(수정)에 실패하였습니다.");

@ -16,7 +16,7 @@ import cokr.xit.fims.levy.LevyQuery;
* ================================
* </pre>
*/
public interface Levy01Service {
public interface LevyService {
/** .
* @param req

@ -17,7 +17,7 @@ import cokr.xit.fims.levy.LevyQuery;
* ================================
* </pre>
*/
public interface Levy02Service {
public interface RductService {
/** .
* @param req
* @return

@ -22,8 +22,8 @@ import cokr.xit.fims.levy.dao.LevyMapper;
* ================================
* </pre>
*/
@Component("levy01Bean")
public class Levy01Bean extends AbstractComponent {
@Component("levyBean")
public class LevyBean extends AbstractComponent {
/** 부과 대장 정보 DAO */
@Resource(name = "levyMapper")

@ -10,7 +10,7 @@ import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.levy.Levy;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.service.Levy01Service;
import cokr.xit.fims.levy.service.LevyService;
/** .
*
@ -22,41 +22,41 @@ import cokr.xit.fims.levy.service.Levy01Service;
* ================================
* </pre>
*/
@Service("levy01Service")
public class Levy01ServiceBean extends AbstractServiceBean implements Levy01Service {
@Service("levyService")
public class LevyServiceBean extends AbstractServiceBean implements LevyService {
/** 부과 대장 정보 Bean */
@Resource(name = "levy01Bean")
private Levy01Bean levy01Bean;
@Resource(name = "levyBean")
private LevyBean levyBean;
@Override
public List<DataObject> getLevyList(LevyQuery req) {
return levy01Bean.getLevyList(req);
return levyBean.getLevyList(req);
}
@Override
public List<DataObject> getLevys(LevyQuery req) {
return levy01Bean.getLevys(req);
return levyBean.getLevys(req);
}
@Override
public DataObject getLevyInfo(LevyQuery req) {
return levy01Bean.getLevyInfo(req);
return levyBean.getLevyInfo(req);
}
@Override
public boolean createLevy(Levy levy) {
return levy01Bean.createLevy(levy);
return levyBean.createLevy(levy);
}
@Override
public boolean updateLevy(Levy levy) {
return levy01Bean.updateLevy(levy);
return levyBean.updateLevy(levy);
}
@Override
public boolean removeLevy(Levy levy) {
return levy01Bean.removeLevy(levy);
return levyBean.removeLevy(levy);
}
@Override
@ -77,7 +77,7 @@ public class Levy01ServiceBean extends AbstractServiceBean implements Levy01Serv
levy.setDelRsn(req.getDelRsn()); // 삭제 사유
// 의견제출 삭제 호출
retSuccess = levy01Bean.removeLevy(levy);
retSuccess = levyBean.removeLevy(levy);
if (!retSuccess) {
return retSuccess;
}

@ -25,8 +25,8 @@ import cokr.xit.foundation.data.DataObject;
* ================================
* </pre>
*/
@Component("levy02Bean")
public class Levy02Bean extends AbstractComponent {
@Component("rductBean")
public class RductBean extends AbstractComponent {
/** 과태료 감경 대장 정보 DAO */
@Resource(name = "rductMapper")

@ -11,7 +11,7 @@ import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.levy.Rduct;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.service.Levy02Service;
import cokr.xit.fims.levy.service.RductService;
/** .
*
@ -23,21 +23,21 @@ import cokr.xit.fims.levy.service.Levy02Service;
* ================================
* </pre>
*/
@Service("levy02Service")
public class Levy02ServiceBean extends AbstractServiceBean implements Levy02Service {
@Service("rductService")
public class RductServiceBean extends AbstractServiceBean implements RductService {
/** 과태료 감경 대장 정보 Bean */
@Resource(name = "levy02Bean")
private Levy02Bean levy02Bean;
@Resource(name = "rductBean")
private RductBean rductBean;
@Override
public List<DataObject> getRductList(LevyQuery req) {
return levy02Bean.getRductList(req);
return rductBean.getRductList(req);
}
@Override
public List<DataObject> getRducts(LevyQuery req) {
return levy02Bean.getRducts(req);
return rductBean.getRducts(req);
}
@Override
@ -47,25 +47,25 @@ public class Levy02ServiceBean extends AbstractServiceBean implements Levy02Serv
}
if (req.getCallPurpose().equals("create")) {
return levy02Bean.getCrdnInfo(req);
return rductBean.getCrdnInfo(req);
} else {
return levy02Bean.getRductInfo(req);
return rductBean.getRductInfo(req);
}
}
@Override
public String createRduct(Rduct rduct) {
return levy02Bean.createRduct(rduct);
return rductBean.createRduct(rduct);
}
@Override
public String updateRduct(Rduct rduct) {
return levy02Bean.updateRduct(rduct);
return rductBean.updateRduct(rduct);
}
@Override
public String removeRduct(Rduct rduct) {
return levy02Bean.removeRduct(rduct);
return rductBean.removeRduct(rduct);
}
@Override
@ -87,7 +87,7 @@ public class Levy02ServiceBean extends AbstractServiceBean implements Levy02Serv
rduct.setDelRsn(req.getDelRsn()); // 삭제 사유
// 과태료 감경 삭제 호출
retMessage = levy02Bean.removeRduct(rduct);
retMessage = rductBean.removeRduct(rduct);
// 오류가 발생하였으면 종료..
if (retMessage.contains("[F]")) {
return retMessage;

@ -11,7 +11,7 @@ import org.springframework.web.servlet.ModelAndView;
import cokr.xit.base.web.ApplicationController;
import cokr.xit.fims.levy.Levy;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.service.Levy01Service;
import cokr.xit.fims.levy.service.LevyService;
/**
*
@ -28,8 +28,8 @@ public class Levy01Controller extends ApplicationController {
public static final String CLASS_URL = "/levy/levy01";
/**부과 대장 서비스*/
@Resource(name = "levy01Service")
private Levy01Service levy01Service;
@Resource(name = "levyService")
private LevyService levyService;
/** (levy/levy-main) .
* {@link #getLevyList(LevyQuery) } .
@ -57,7 +57,7 @@ public class Levy01Controller extends ApplicationController {
*/
@RequestMapping(name = "부과 대장 조회", value = "/010/list.do")
public ModelAndView getLevyList(LevyQuery req) {
List<?> result = levy01Service.getLevyList(setFetchSize(req));
List<?> result = levyService.getLevyList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "levy");
}
@ -71,7 +71,7 @@ public class Levy01Controller extends ApplicationController {
*/
@PostMapping(name = "부과 대장 등록", value = "/010/create.do")
public ModelAndView createLevy(Levy levy) {
boolean saved = levy01Service.createLevy(levy);
boolean saved = levyService.createLevy(levy);
return new ModelAndView("jsonView")
.addObject("saved", saved);
@ -86,7 +86,7 @@ public class Levy01Controller extends ApplicationController {
*/
@PostMapping(name = "부과 대장 수정", value = "/010/update.do")
public ModelAndView updateLevy(Levy levy) {
boolean saved = levy01Service.updateLevy(levy);
boolean saved = levyService.updateLevy(levy);
return new ModelAndView("jsonView")
.addObject("saved", saved);
@ -102,7 +102,7 @@ public class Levy01Controller extends ApplicationController {
*/
@PostMapping(name = "부과 대장 제거", value = "/010/remove.do")
public ModelAndView removeLevy(Levy levy) {
boolean saved = levy01Service.removeLevy(levy);
boolean saved = levyService.removeLevy(levy);
return new ModelAndView("jsonView")
.addObject("saved", saved);
@ -118,7 +118,7 @@ public class Levy01Controller extends ApplicationController {
*/
@PostMapping(name="의견제출 대장 제거", value="/010/removes.do")
public ModelAndView removeLevys(LevyQuery req) {
boolean saved = levy01Service.removeLevys(req);
boolean saved = levyService.removeLevys(req);
return new ModelAndView("jsonView")
.addObject("saved", saved);

@ -11,7 +11,7 @@ import cokr.xit.base.code.CommonCode;
import cokr.xit.base.web.ApplicationController;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.Rduct;
import cokr.xit.fims.levy.service.Levy02Service;
import cokr.xit.fims.levy.service.RductService;
import cokr.xit.foundation.data.DataObject;
/**
@ -41,8 +41,8 @@ public class Levy02Controller extends ApplicationController {
}
/**과태료 감경 대장 서비스*/
@Resource(name = "levy02Service")
private Levy02Service levy02Service;
@Resource(name = "rductService")
private RductService rductService;
/** (levy/levy02010-main) .
* {@link #getRductList(RductQuery) } .
@ -73,7 +73,7 @@ public class Levy02Controller extends ApplicationController {
* }</code></pre>
*/
public ModelAndView getRductList(LevyQuery req) {
List<?> result = levy02Service.getRductList(setFetchSize(req));
List<?> result = rductService.getRductList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "");
}
@ -88,7 +88,7 @@ public class Levy02Controller extends ApplicationController {
*/
public ModelAndView removeRduct(Rduct rduct) {
boolean saved = false;
String retMessage = levy02Service.removeRduct(rduct);
String retMessage = rductService.removeRduct(rduct);
if (retMessage.contains("[S]")) {
saved = true;
@ -111,7 +111,7 @@ public class Levy02Controller extends ApplicationController {
*/
public ModelAndView removeRductList(LevyQuery req) {
boolean saved = false;
String retMessage = levy02Service.removeRducts(req);
String retMessage = rductService.removeRducts(req);
if (retMessage.contains("[S]")) {
saved = true;
@ -132,7 +132,7 @@ public class Levy02Controller extends ApplicationController {
* }</pre>
*/
public ModelAndView getRductInfo(LevyQuery req) {
DataObject rductInfo = levy02Service.getRductInfo(req);
DataObject rductInfo = rductService.getRductInfo(req);
// 등록을 호출하였지만 등록된 감경 ID가 있는지 확인.
if (req.getCallPurpose().equals("create") && !rductInfo.string("RDUCT_ID").equals("")) {
@ -168,7 +168,7 @@ public class Levy02Controller extends ApplicationController {
*/
public ModelAndView createRduct(Rduct rduct) {
boolean saved = false;
String retMessage = levy02Service.createRduct(rduct);
String retMessage = rductService.createRduct(rduct);
if (retMessage.contains("[S]")) {
saved = true;
@ -190,7 +190,7 @@ public class Levy02Controller extends ApplicationController {
*/
public ModelAndView updateRduct(Rduct rduct) {
boolean saved = false;
String retMessage = levy02Service.updateRduct(rduct);
String retMessage = rductService.updateRduct(rduct);
if (retMessage.contains("[S]")) {
saved = true;

@ -43,12 +43,24 @@ public interface SndngMapper extends AbstractMapper {
return !InfoSndngTrgt.isEmpty() ? InfoSndngTrgt.get(0) : null;
}
/** .<br />
/** .<br />
* @param req
* @return
*/
List<DataObject> selectAdvntceSndngTrgtList(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> selectAdvntceSndngTrgts(SndbQuery req);
default DataObject selectAdvntceSndngTrgtInfo(String crdnId) {
List<DataObject> InfoSndngTrgt = selectAdvntceSndngTrgts(new SndbQuery().setCrdnId(crdnId));
return !InfoSndngTrgt.isEmpty() ? InfoSndngTrgt.get(0) : null;
}
@ -184,11 +196,6 @@ public interface SndngMapper extends AbstractMapper {
List<DataObject> selectWrngSndngList(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> selectAdvntceSndngTrgts(SndbQuery req);
/** .<br />
* @param req

@ -32,12 +32,17 @@ public interface SndngService {
*/
List<DataObject> getWrngSndngTrgts(SndbQuery req);
/** .
/** .
* @param req
* @return
*/
List<DataObject> getAdvntceSndngTrgtList(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getAdvntceSndngTrgts(SndbQuery req);
@ -117,12 +122,6 @@ public interface SndngService {
/** .
* @param req
* @return
*/
List<DataObject> getAdvntceSndngTrgts(SndbQuery req);
/** .
* @param req
* @return

@ -16,6 +16,8 @@ import cokr.xit.fims.cmmn.CrdnSttsHstry;
import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean;
import cokr.xit.fims.enis.EnisMtchg;
import cokr.xit.fims.enis.service.bean.EnisMtchgBean;
import cokr.xit.fims.levy.Levy;
import cokr.xit.fims.levy.service.bean.LevyBean;
import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.dao.SndngMapper;
import cokr.xit.fims.sndb.dao.SvbtcMapper;
@ -45,6 +47,10 @@ public class SndngBean extends AbstractComponent {
@Resource(name = "crdnSttsHstryBean")
private CrdnSttsHstryBean crdnSttsHstryBean;
/** 부과 대장 정보 Bean */
@Resource(name = "levyBean")
private LevyBean levyBean;
/** 세외수입 매칭 내역 정보 Bean */
@Resource(name = "enisMtchgBean")
private EnisMtchgBean enisMtchgBean;
@ -85,6 +91,18 @@ public class SndngBean extends AbstractComponent {
return sndngMapper.selectAdvntceSndngTrgtList(req);
}
/** .
* @param req
* @return
*/
public List<DataObject> getAdvntceSndngTrgts(SndbQuery req) {
if (req.getOrderBy() == null) {
req.setOrderBy("CRDN_YMD_TM");
}
return sndngMapper.selectAdvntceSndngTrgts(req);
}
/** .
* @param req
* @return
@ -201,16 +219,18 @@ public class SndngBean extends AbstractComponent {
sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자
sndngDtl.setDudtYmd(sndng.getDudtYmd()); // 납기 일자
if (sndng.getSndngSeCd().equals("10")) { // 계고장
// 세외수입에 등록 후 세외수입에서 감경해야 하므로 사전통보액 80,000 원이 아닌 본 부과액 100,000 원으로 등록한다.
// 세외수입에서 가상계좌를 부여 받은 후 다시 금액이 80,000 원으로 업데이트 된다
if (sndng.getSndngSeCd().equals("01")) { // 사전통지
ffnlgAmt = infoCrdnPayer.number("FFNLG_AMT").intValue(); // 과태료 금액
levyPcptax = infoCrdnPayer.number("FFNLG_AMT").intValue(); // 부과 본세
levyAdamt = 0; // 부과 가산금
levySumAmt = infoCrdnPayer.number("FFNLG_AMT").intValue(); // 부과 합계 금액
} else {
ffnlgAmt = 0; // 과태료 금액
levyPcptax = 0; // 부과 본세
levyAdamt = 0; // 부과 가산금
levySumAmt = 0; // 부과 합계 금액
ffnlgAmt = infoCrdnPayer.number("FFNLG_AMT").intValue(); // 과태료 금액
levyPcptax = infoCrdnPayer.number("FFNLG_AMT").intValue(); // 부과 본세
levyAdamt = 0; // 부과 가산금
levySumAmt = infoCrdnPayer.number("FFNLG_AMT").intValue(); // 부과 합계 금액
}
sndngDtl.setFfnlgAmt(ffnlgAmt); // 과태료 금액
@ -229,6 +249,7 @@ public class SndngBean extends AbstractComponent {
throw new RuntimeException("발송 상세 등록 작업중 업무 구분 코드가 확인되지 않았습니다.");
}
// 발송 상세(TB_SNDNG_DTL)
retSuccess = sndngMapper.insertSndngDtl(sndngDtl);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
@ -251,8 +272,23 @@ public class SndngBean extends AbstractComponent {
throw new RuntimeException("부과제외 등록 중 단속 대장의 단속상태 변경에 실패하였습니다.");
}
// 세외수입 등록
// 부과 등록 및 세외수입 등록
if (sndng.getTaskSeCd().equals("DPV") || sndng.getTaskSeCd().equals("ECA") || sndng.getTaskSeCd().equals("TPV")) {
// 부과 대장(TB_LEVY)
if (sndng.getSndngSeCd().equals("01")) { // 사전통지
Levy levy = new Levy();
levy.setSggCd(infoCrdnPayer.string("SGG_CD")); // 시군구 코드
levy.setCrdnId(infoCrdnPayer.string("CRDN_ID")); // 단속 ID
levy.setFfnlgAmt(ffnlgAmt); // 과태료 금액
levy.setLevyPcptax(levyPcptax); // 부과 금액
levy.setLevyAdamt(levyAdamt); // 가산 금액
levy.setSumAmt(levySumAmt); // 합계 금액
// 부과 대장을 등록한다.
levyBean.createLevy(levy);
}
// 세외수입 매칭 내역(TB_ENIS_MTCHG)
EnisMtchg enisMtchg = new EnisMtchg();
@ -275,7 +311,7 @@ public class SndngBean extends AbstractComponent {
enisMtchg.setSumAmt(levySumAmt); // 합계 금액
enisMtchg.setPrcsSttsCd("01"); // 처리 상태 코드
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
// 세외수입 매칭 내역을 등록한다.
retSuccess = enisMtchgBean.createEnisMtchg(enisMtchg);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
@ -324,13 +360,6 @@ public class SndngBean extends AbstractComponent {
/** .
* @param req
* @return
*/
public List<DataObject> getAdvntceSndngTrgts(SndbQuery req) {
return sndngMapper.selectAdvntceSndngTrgts(req);
}
/** .
* @param req

@ -46,6 +46,11 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
return sndngBean.getAdvntceSndngTrgtList(req);
}
@Override
public List<DataObject> getAdvntceSndngTrgts(SndbQuery req) {
return sndngBean.getAdvntceSndngTrgts(req);
}
@ -94,11 +99,6 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
@Override
public List<DataObject> getAdvntceSndngTrgts(SndbQuery req) {
return sndngBean.getAdvntceSndngTrgts(req);
}
@Override
public List<DataObject> getAdvntceSndngList(SndbQuery req) {
return sndngBean.getAdvntceSndngList(req);

@ -12,6 +12,7 @@ import cokr.xit.base.web.ApplicationController;
import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.Sndng;
import cokr.xit.fims.sndb.service.SndngService;
import cokr.xit.foundation.data.DataObject;
/**
*
@ -37,6 +38,7 @@ public class Sndb01Controller extends ApplicationController {
, getSndngDltInfo = "/040/info.do" // 발송 상세 대장 조회
, advanceNoticeSendingTargetMain = "/050/main.do" // 사전통지 발송 대상 메인 화면
, getAdvntceSndngTrgtList = "/050/list.do" // 사전통지 발송 대상 목록 조회
, getAdvntceSndngTrgts = "/060/info.do" // 사전통지 발송 대상 조회
, createSndng = "/020/create.do" // 발송 대상 등록
;
}
@ -93,7 +95,7 @@ public class Sndb01Controller extends ApplicationController {
* }</pre>
*/
public ModelAndView getWrngSndngTrgts(SndbQuery req) {
List<?> wrngSndngTrgts = sndngService.getWrngSndngTrgts(req);
List<DataObject> wrngSndngTrgts = sndngService.getWrngSndngTrgts(req);
boolean json = jsonResponse();
@ -201,6 +203,26 @@ public class Sndb01Controller extends ApplicationController {
}
/** (sndb/sndb01/060-info) .
* @param crdnIDs IDs
* @return fims/sndb/sndb01060-info jsonView
* <pre>{
* "advntceSndngTrgs": [ ]
* }</pre>
*/
public ModelAndView getAdvntceSndngTrgts(SndbQuery req) {
List<DataObject> advntceSndngTrgs = sndngService.getAdvntceSndngTrgts(req);
boolean json = jsonResponse();
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01060-info");
return mav
.addObject("pageName", "sndb01060")
.addObject("sndngSeCd", req.getSndngSeCd()) // 발송 구분 코드
.addObject("advntceSndngTrgs", json ? advntceSndngTrgs : toJson(advntceSndngTrgs)) // 사전통지 발송 대상 정보
;
}

@ -19,8 +19,8 @@ import cokr.xit.fims.excl.ExclQuery;
import cokr.xit.fims.excl.service.Excl01Service;
import cokr.xit.fims.excl.service.Excl02Service;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.service.Levy01Service;
import cokr.xit.fims.levy.service.Levy02Service;
import cokr.xit.fims.levy.service.LevyService;
import cokr.xit.fims.levy.service.RductService;
import cokr.xit.fims.payer.PayerQuery;
import cokr.xit.fims.payer.service.PayerService;
import cokr.xit.fims.rcvm.RcvmQuery;
@ -78,12 +78,12 @@ public class Sprt02Controller extends ApplicationController {
protected SndngService sndngService;
/** 부과 대장 서비스*/
@Resource(name = "levy01Service")
protected Levy01Service levy01Service;
@Resource(name = "levyService")
protected LevyService levyService;
/** 감경 대장 서비스 */
@Resource(name = "levy02Service")
protected Levy02Service levy02Service;
@Resource(name = "rductService")
protected RductService rductService;
/** 수납 대장 서비스*/
@Resource(name = "rcvm01Service")
@ -339,7 +339,7 @@ public class Sprt02Controller extends ApplicationController {
levyQuery.setDelYn(req.getDelYn());
levyQuery.setOrderBy("RDUCT_ID DESC"); // 정렬
DataObject rduct = levy02Service.getRductInfo(levyQuery);
DataObject rduct = rductService.getRductInfo(levyQuery);
// 부과 제외(TB_LEVY_EXCL) 대장 조회
ExclQuery exclQuery = new ExclQuery();
@ -413,7 +413,7 @@ public class Sprt02Controller extends ApplicationController {
levyQuery.setDelYn(req.getDelYn());
levyQuery.setOrderBy("LEVY_ID DESC"); // 정렬
DataObject levy = levy01Service.getLevyInfo(levyQuery);
DataObject levy = levyService.getLevyInfo(levyQuery);
boolean json = jsonResponse();

@ -505,7 +505,7 @@ public class DpvController {
}
@Override
@RequestMapping(name="장애인과태료업무 계고장 발송 대상 등록", value=METHOD_URL.getWrngSndngTrgts)
@RequestMapping(name="장애인과태료업무 계고장 발송 대상 상세 조회", value=METHOD_URL.getWrngSndngTrgts)
public ModelAndView getWrngSndngTrgts(SndbQuery req) {
return super.getWrngSndngTrgts(req);
}
@ -522,6 +522,14 @@ public class DpvController {
return super.getAdvntceSndngTrgtList(req);
}
@Override
@RequestMapping(name="장애인과태료업무 사전통지 발송 대상 상세 조회", value=METHOD_URL.getAdvntceSndngTrgts)
public ModelAndView getAdvntceSndngTrgts(SndbQuery req) {
return super.getAdvntceSndngTrgts(req);
}

@ -209,6 +209,11 @@
</select>
<insert id="insertLevy" parameterType="map">/* 부과 대장 등록(levyMapper.insertLevy) */
<selectKey resultType="string" keyProperty="levy.levyId" keyColumn="NEW_ID" order="BEFORE">
SELECT CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(LEVY_ID, 5)) + 1, 1) AS INT), 16, '0')) AS NEW_ID
FROM TB_LEVY
WHERE LEVY_ID LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), '%')
</selectKey>
INSERT
INTO TB_LEVY (
LEVY_ID /* 부과 ID */

@ -395,6 +395,8 @@
, P.RTPYR_NM <!-- 납부자 명 -->
, P.RTPYR_BRDT <!-- 납부자 생년월일 -->
, P.ZIP <!-- 우편번호 -->
, P.ADDR <!-- 주소 -->
, P.DTL_ADDR <!-- 상세 주소 -->
FROM TB_CRDN C
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)
INNER JOIN TB_VLTN_INFO VI ON (C.VLTN_ID = VI.VLTN_ID)

@ -335,7 +335,7 @@
}
// 계고장 등록
// 발송 등록
fnSave${pageName} = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;

@ -425,7 +425,7 @@
params["crdnIDs"] = selected.join(",");
ajax.get({
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do")
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/060/info.do")
, data : params || {}
, success : resp => {
dialog.open({
@ -532,7 +532,8 @@
callPurpose : "create"
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, sndngSeCd : "10" // 발송 구분 코드 - 10 계고장
, sndngSeCd : "01" // 발송 구분 코드 - 01 사전통지서
};
getInfoAdvntceSndngTrg${pageName}(params);

@ -0,0 +1,367 @@
<%@ 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">
<!-- Page Body -->
<div class="card">
<div class="wrapper-pop">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<input type="hidden" id="sggCd--${pageName}" name="sggCd" />
<input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" />
<input type="hidden" id="sndngSeCd--${pageName}" name="sndngSeCd" />
<div class="row g-1">
<!-- 총 건수 -->
<div class="col-md-12 text-end px-2">
<label for="tnocs--${pageName}" class="w-px-140 bg-lighter pe-2 col-form-label text-sm-end">총건수 / 총금액</label>
<input type="text" class="form-control w-px-80 text-end" id="tnocs--${pageName}" name="tnocs" data-map="TNOCS" readonly />
<input type="text" class="form-control w-px-120 text-end" id="gramt--${pageName}" name="gramt" data-map="GRAMT" readonly />
</div>
<!-- 문서 번호 -->
<div class="col-md-4">
<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-55" id="docNo--${pageName}" name="docNo" />
</div>
<!-- 발송 일자 -->
<div class="col-md-4">
<label for="sndngYmd--${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="sndngYmd--${pageName}" name="sndngYmd"
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-4" id="divDudtYmd--${pageName}">
<label for="dudtYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">납기일자</label>
<input type="text" class="form-control form-date" id="dudtYmd--${pageName}" name="dudtYmd"
data-fmt-type="day" title="날짜 선택" maxlength="10" />
<button type="button" id="btnDudtYmd--${pageName}" class="bx bx-sm bx-calendar bg-white"></button>
</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-87" id="ttlNm--${pageName}" name="ttlNm" />
</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-87" id="etcCn--${pageName}" name="etcCn" rows="2" data-maxlengthb="1000"></textarea>
</div>
</div> <!-- <div class="row g-1"> -->
</form> <!-- /입력 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-80" id="btnExcel--${pageName}" title="엑셀" onclick="fnExcel${pageName}();">
엑셀
</button>
<button type="button" class="btn btn-primary w-px-80" id="btnSave--${pageName}" title="발송 등록" onclick="fnSave${pageName}();">
발송 등록
</button>
</span>
</span>
</div>
<!-- / 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
<div class="dataTables_wrapper dt-bootstrap5 no-footer" id="DataTables_Table_0_wrapper--${pageName}">
<div class="table-responsive" id="table-responsive--${pageName}" style="overflow-x:scroll; height:280px; overflow-y:scroll;" >
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" id="DataTables_Table_0--${pageName}" aria-describedby="DataTables_Table_0_info">
<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;">
<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;">민원접수번호</th>
<th class="cmn" style="width: 120px;">민원접수일자</th>
<th class="cmn" style="width: 160px;">민원처리결과</th>
<th class="cmn" style="width: 180px;">단속일시</th>
<th class="cmn" style="width: 140px;">차량번호</th>
<th class="cmn" style="width: 160px;">법정동</th>
<th class="cmn" style="width: 280px;">단속장소</th>
<th class="cmn" style="width: 120px;">과태료금액</th>
<th class="cmn" style="width: 120px;">처리상태</th>
<th class="cmn" style="width: 200px;">납부자명</th>
<th class="cmn" style="width: 120px;">납부자생일</th>
<th class="cmn" style="width: 100px;">우편번호</th>
<th class="cmn" style="width: 280px;">주소</th>
<th class="cmn" style="width: 320px;">상세주소</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}Row--${pageName}">
<tr data-key="{CRDN_ID}">
<td class="cmn text-center hidden">
<input type="checkbox" class="form-check-input" value="{CRDN_ID}" onchange="${pageName}Control.select('{CRDN_ID}', this.checked);">
</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_APLY_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_PRCS_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STTS_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ZIP}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{DTL_ADDR}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFR_NM}</td>
<td class="cmn dummy-td"></td>
</tr>
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="21" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
</div>
</div>
</div>
<!-- / DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> -->
</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";
// FormFields
var ${pageName}Fields = new FormFields("#frmEdit--${pageName}");
/**************************************************************************
* DatasetControl
**************************************************************************/
var ${pageName}Control = new DatasetControl({
prefix : "advntceSndngTrgt"
, prefixName : "발송 대상"
, keymapper : info => info ? info.CRDN_ID : ""
, dataGetter : obj => obj.sndngTrgtsList
, appendData : true
, tableRenderComplete : false // dataTables 에 자료 추가 완료 여부
, urls : {
getInfo : wctx.url("/sprt/sprt02/010/main.do") // 개별총정보
}
, formats : {
TNOCS : numberFormat
, GRAMT : numberFormat
, CVLCPT_RCPT_YMD : dateFormat
, CRDN_YMD_TM : datetimeFormat
, FFNLG_AMT : numberFormat
, REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
}
});
/**************************************************************************
* DatasetControl 이벤트
**************************************************************************/
// Dataset 변경 이벤트
${pageName}Control.onDatasetChange = obj => {
renderList${pageName}();
${pageName}Control.select(true); // 전체 선택 되도록..
${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
};
// 현재 선택 자료 변경 이벤트
${pageName}Control.onCurrentChange = item => {
if (!item) return;
let key = item.data.CRDN_ID;
$("#tbody--${pageName}").setCurrentRow(key);
};
// 선택(체크) 변경 이벤트
${pageName}Control.onSelectionChange = selected => {
let ${infoPrefix}List = ${pageName}Control.dataset;
let keys = selected.map(e => ${infoPrefix}List.getKey(e));
$("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val()));
});
};
// 개별총정보 dialog
${pageName}Control.getInfo = (crdnId) => {
return;
}
// 저장 callback
${pageName}Control.onSave = (resp) => {
let dialogTitle = $("#btnSave--${pageName}").attr("title");
let showMessage = resp.retMessage.replace(/[S]|[F]/g, dialogTitle);
dialog.alert(showMessage);
if (resp.saved) {
dialog.close(${pageName}Control.prefix + "Dialog");
}
}
// 저장
${pageName}Control.save = (info) => {
if (!info) return;
// 선택된 자료의 단속ID 추가
let selected = ${pageName}Control.dataset.getKeys("selected");
if (selected.length < 1) return;
info.crdnIDs = selected.join(","); // 단속 IDs
info.resndYn = "N"; // 재발송 여부
info.delYn = "N"; // 삭제 여부
let createUrl = wctx.url(info.taskSeCd + ${pageName}PrefixUrl + "/020/create.do");
ajax.post({
url : createUrl
, data : info
, success : resp => ${pageName}Control.onSave(resp)
});
}
/**************************************************************************
*
**************************************************************************/
// DataTables에 click, dbclick 이벤트
renderList${pageName} = () => {
let ${infoPrefix}List = ${pageName}Control.dataset;
let empty = ${infoPrefix}List.empty;
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("CRDN_ID") + "');")
.replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("CRDN_ID") + "');")
);
$("#tbody--${pageName}").html(trs.join());
$("th input[type='checkbox']").prop("checked", false);
//보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
}
/**************************************************************************
* 초기 셋팅
**************************************************************************/
// 화면 초기값 셋팅
initForm${pageName} = () => {
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
$("#sndngYmd--${pageName}").datepicker("setDate", new Date());
$("#dudtYmd--${pageName}").datepicker("setDate", new Date());
let sndngSeCd = "${sndngSeCd}";
if (sndngSeCd == "10") {
$("#dudtYmd--${pageName}").val("");
$("#dudtYmd--${pageName}").prop("disabled", true);
$("#divDudtYmd--${pageName}").hide();
} else {
$("#dudtYmd--${pageName}").datepicker("setDate", new Date());
$("#dudtYmd--${pageName}").prop("disabled", false);
$("#divDudtYmd--${pageName}").show();
}
${pageName}Control.urls.getInfo = wctx.url("/" + ${pageName}Control.dataset.getValue("TASK_SE_CD") + "/sprt/sprt02/010/main.do"); // 개별총정보
}
// 이벤트
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);
}
});
});
// DataTables width 변경 조정
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 엑셀
fnExcel${pageName} = () => {
}
// 발송 등록
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());
}
});
}
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// 이벤트 설정
setEvent${pageName}();
// 화면 초기 설정
initForm${pageName}();
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// Dataset 셋팅 - 화면이 열리면서 조회하는 경우 addData 하여 자료를 추가
${pageName}Control.addData(${advntceSndngTrgs});
$("#sndngSeCd--${pageName}").val("${sndngSeCd}"); // 발송 구분 코드
$("#sggCd--${pageName}").val(${pageName}Control.dataset.getValue("SGG_CD")); // 시군구 코드
$("#taskSeCd--${pageName}").val(${pageName}Control.dataset.getValue("TASK_SE_CD")); // 업무 구분 코드
$("#tnocs--${pageName}").val(${pageName}Control.dataset.getValue("TNOCS")); // 총건수
$("#gramt--${pageName}").val(${pageName}Control.dataset.getValue("GRAMT")); // 총금액
});
</script>
Loading…
Cancel
Save