diff --git a/src/main/java/cokr/xit/fims/cmmn/CrdnPayerAddrHstry.java b/src/main/java/cokr/xit/fims/cmmn/CrdnPayerAddrHstry.java index a1506af4..71590468 100644 --- a/src/main/java/cokr/xit/fims/cmmn/CrdnPayerAddrHstry.java +++ b/src/main/java/cokr/xit/fims/cmmn/CrdnPayerAddrHstry.java @@ -1,5 +1,6 @@ package cokr.xit.fims.cmmn; +import cokr.xit.fims.payer.Payer; import cokr.xit.foundation.AbstractEntity; import lombok.Getter; import lombok.Setter; @@ -27,4 +28,16 @@ public class CrdnPayerAddrHstry extends AbstractEntity { * 주소 일련번호 */ private String addrSn; + + public static CrdnPayerAddrHstry create(Payer payer) { + String crdnId = payer != null ? payer.getCrdnId() : null; + if (isEmpty(crdnId)) return null; + + CrdnPayerAddrHstry crdnPayerAddrHstry = new CrdnPayerAddrHstry(); + crdnPayerAddrHstry.setCrdnId(crdnId); + crdnPayerAddrHstry.setRtpyrId(payer.getRtpyrId()); + crdnPayerAddrHstry.setAddrSn(payer.getAddrSn()); + + return crdnPayerAddrHstry; + } } \ No newline at end of file diff --git a/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnPayerAddrHstryBean.java b/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnPayerAddrHstryBean.java index a96c398d..fff9663a 100644 --- a/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnPayerAddrHstryBean.java +++ b/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnPayerAddrHstryBean.java @@ -79,6 +79,8 @@ public class CrdnPayerAddrHstryBean extends AbstractBean { * */ public boolean createHstryUpdateCrdnPayerAddr(CrdnPayerAddrHstry crdnPayerAddrHstry) { + if (crdnPayerAddrHstry == null) return false; + // 단속 납부자 주소 이력(TB_CRDN_PAYER_ADDR_HSTRY) 대장을 등록한다. int rtnNocs = crdnPayerAddrHstryMapper.insertCrdnPayerAddrHstry(crdnPayerAddrHstry); if (rtnNocs != 1) diff --git a/src/main/java/cokr/xit/fims/crdn/Crdn.java b/src/main/java/cokr/xit/fims/crdn/Crdn.java index efce107a..47cbc586 100644 --- a/src/main/java/cokr/xit/fims/crdn/Crdn.java +++ b/src/main/java/cokr/xit/fims/crdn/Crdn.java @@ -212,6 +212,7 @@ public class Crdn extends AbstractEntity { public void setInfo(Payer payer) { if (payer == null) return; + payer.setCrdnId(getCrdnId()); LvisA01.BasicInfo vehicle = payer.getVehicleInfo(); setSggCd(payer.getSggCd()); // 시군구 데이터 정리되면 지울 것 setRtpyrId(!Assert.isEmpty(vehicle.getErsr_regist_de()) ? "" : payer.getRtpyrId()); diff --git a/src/main/java/cokr/xit/fims/crdn/service/bean/CrdnServiceBean.java b/src/main/java/cokr/xit/fims/crdn/service/bean/CrdnServiceBean.java index 641c0564..203a055f 100644 --- a/src/main/java/cokr/xit/fims/crdn/service/bean/CrdnServiceBean.java +++ b/src/main/java/cokr/xit/fims/crdn/service/bean/CrdnServiceBean.java @@ -226,6 +226,8 @@ public class CrdnServiceBean extends AbstractServiceBean implements CrdnService continue; crdn.setInfo(payer); +// payerBean.createAddrHistory(payer); + LevyExcl excl = taskProcessor.getLevyExcl(crdn); if (excl == null) { crdn.setCrdnSttsCd("21"); // 초기상태 -> 납부자등록 diff --git a/src/main/java/cokr/xit/fims/payer/PayerQuery.java b/src/main/java/cokr/xit/fims/payer/PayerQuery.java index 949db0f2..762570d7 100644 --- a/src/main/java/cokr/xit/fims/payer/PayerQuery.java +++ b/src/main/java/cokr/xit/fims/payer/PayerQuery.java @@ -151,8 +151,9 @@ public class PayerQuery extends QueryRequest { * @param rtpyrSeCd 납부자 구분 코드 * @return 현재 PayerQuery */ - public void setRtpyrSeCd(String rtpyrSeCd) { + public PayerQuery setRtpyrSeCd(String rtpyrSeCd) { this.rtpyrSeCd = rtpyrSeCd; + return self(); } /**납부자 번호를 반환한다. @@ -167,7 +168,9 @@ public class PayerQuery extends QueryRequest { * @return 현재 PayerQuery */ public void setRtpyrNo(String rtpyrNo) { +// public PayerQuery setRtpyrNo(String rtpyrNo) { this.rtpyrNo = rtpyrNo; +// return self(); } /**주소 입력 구분 코드를 반환한다. @@ -181,8 +184,9 @@ public class PayerQuery extends QueryRequest { * @param addrInptSeCd 주소 입력 구분 코드 * @return 현재 PayerQuery */ - public void setAddrInptSeCd(String addrInptSeCd) { + public PayerQuery setAddrInptSeCd(String addrInptSeCd) { this.addrInptSeCd = addrInptSeCd; + return self(); } /**도로명 코드를 반환한다. @@ -196,8 +200,9 @@ public class PayerQuery extends QueryRequest { * @param roadNmCd 도로명 코드 * @return 현재 PayerQuery */ - public void setRoadNmCd(String roadNmCd) { + public PayerQuery setRoadNmCd(String roadNmCd) { this.roadNmCd = roadNmCd; + return self(); } /**주소를 반환한다. @@ -211,8 +216,9 @@ public class PayerQuery extends QueryRequest { * @param addr 주소 * @return 현재 PayerQuery */ - public void setAddr(String addr) { + public PayerQuery setAddr(String addr) { this.addr = addr; + return self(); } /**상세 주소를 반환한다. @@ -226,8 +232,9 @@ public class PayerQuery extends QueryRequest { * @param dtlAddr 상세 주소 * @return 현재 PayerQuery */ - public void setDtlAddr(String dtlAddr) { + public PayerQuery setDtlAddr(String dtlAddr) { this.dtlAddr = dtlAddr; + return self(); } public String getCrdnId() { diff --git a/src/main/java/cokr/xit/fims/payer/dao/PayerAddrMapper.java b/src/main/java/cokr/xit/fims/payer/dao/PayerAddrMapper.java index c3e70fb4..e0184b2f 100644 --- a/src/main/java/cokr/xit/fims/payer/dao/PayerAddrMapper.java +++ b/src/main/java/cokr/xit/fims/payer/dao/PayerAddrMapper.java @@ -4,10 +4,10 @@ import java.util.List; import org.egovframe.rte.psl.dataaccess.mapper.Mapper; -import cokr.xit.foundation.component.AbstractMapper; -import cokr.xit.foundation.data.DataObject; import cokr.xit.fims.payer.Payer; import cokr.xit.fims.payer.PayerQuery; +import cokr.xit.foundation.component.AbstractMapper; +import cokr.xit.foundation.data.DataObject; /** 납부자 주소 정보 DAO * @@ -21,7 +21,6 @@ import cokr.xit.fims.payer.PayerQuery; */ @Mapper("payerAddrMapper") public interface PayerAddrMapper extends AbstractMapper { - /**지정한 조건에 따라 납부자 주소 목록을 조회하여 반환한다.
* @param req 납부자 주소 조회 조건 * @return 납부자 주소 목록 @@ -64,8 +63,6 @@ public interface PayerAddrMapper extends AbstractMapper { */ List selectPayerAddrHstrys(PayerQuery req); - - /**지정한 조건에 따라 납부자 주소 정보를 반환한다. * @param req 부과제외 조회 조건 * @return 납부자 주소 정보 @@ -86,5 +83,4 @@ public interface PayerAddrMapper extends AbstractMapper { return !payers.isEmpty() ? payers.get(0) : null; } - -} +} \ No newline at end of file diff --git a/src/main/java/cokr/xit/fims/payer/dao/PayerMapper.java b/src/main/java/cokr/xit/fims/payer/dao/PayerMapper.java index 2faa2e74..2ed458f2 100644 --- a/src/main/java/cokr/xit/fims/payer/dao/PayerMapper.java +++ b/src/main/java/cokr/xit/fims/payer/dao/PayerMapper.java @@ -34,6 +34,11 @@ public interface PayerMapper extends AbstractMapper { */ List selectPayers(PayerQuery req); + default Payer selectPayer(PayerQuery req) { + List payers = selectPayers(req); + return !payers.isEmpty() ? payers.get(0) : null; + } + /**납부자 대장 정보를 등록한다. * @param payer 납부자 대장 * @return 저장된 정보수 diff --git a/src/main/java/cokr/xit/fims/payer/service/bean/PayerBean.java b/src/main/java/cokr/xit/fims/payer/service/bean/PayerBean.java index 01982af7..fbfb3c6f 100644 --- a/src/main/java/cokr/xit/fims/payer/service/bean/PayerBean.java +++ b/src/main/java/cokr/xit/fims/payer/service/bean/PayerBean.java @@ -143,8 +143,9 @@ public class PayerBean extends AbstractBean { * */ public boolean create(Payer payer) { - return payerMapper.insert(payer) // 납부자 등록 - && createPayerAddr(payer); // 납부자 주소 등록 + boolean created = payerMapper.insert(payer); // 납부자 등록 + createPayerAddr(payer, created); // 주소 등록 + return created; } /**납부자 정보를 수정한다. @@ -166,7 +167,18 @@ public class PayerBean extends AbstractBean { * */ public boolean createPayerAddr(Payer payer) { - // 납부자 주소 등록 + return createPayerAddr(payer, true); + } + + private boolean createPayerAddr(Payer payer, boolean newPayer) { + if (!newPayer) { + PayerQuery req = new PayerQuery().setRtpyrSeCd(payer.getRtpyrSeCd()); + req.setRtpyrNo(payer.getRtpyrNo()); + Payer loaded = payerMapper.selectPayer(req); + payer.setRtpyrId(loaded.getRtpyrId()); +// payer.setAddrSn(loaded.getAddrSn()); + } + DataObject params = new DataObject() .set("roadNmCd", payer.getRoadNmCd()) .set("udgdSeCd", payer.getUdgdSeCd()) @@ -180,7 +192,6 @@ public class PayerBean extends AbstractBean { payer.setStdgCd(info.string("STDG_CD")); payer.setDongCd(info.string("DONG_CD")); } - return payerAddrMapper.insertPayerAddr(payer) == 1; } @@ -360,75 +371,59 @@ public class PayerBean extends AbstractBean { * */ public String createCrdnPayer(Payer payer) { - // 생년월일 - if ("01,02".contains(payer.getRtpyrSeCd())) { - payer.setRtpyrBrdt(payer.getRtpyrNo().substring(0, 6)); - } - // 지하 구분 코드 + if ("01,02".contains(payer.getRtpyrSeCd())) + payer.setRtpyrBrdt(payer.getRtpyrNo().substring(0, 6)); // 생년월일 if (isEmpty(payer.getUdgdSeCd())) - payer.setUdgdSeCd("0"); - // 전체 주소 + payer.setUdgdSeCd("0"); // 지하 구분 코드 if (isEmpty(payer.getWholAddr())) - payer.setWholAddr(payer.getAddr() + ", " + payer.getDtlAddr()); + payer.setWholAddr(payer.getAddr() + ", " + payer.getDtlAddr()); // 전체 주소 - // 납부자 주소 이력 - CrdnPayerAddrHstry crdnPayerAddrHstry = new CrdnPayerAddrHstry(); // 단속 ID로 단속, 납부자, 주소 정보 조회 - DataObject crdnPayerAddrInfo = payerMapper.selectCrdnInfo(payer.getCrdnId()); + String crdnId = payer.getCrdnId(); + DataObject crdnPayerAddrInfo = payerMapper.selectCrdnInfo(crdnId); - boolean bInstHstry = false; // DB 처리 결과 + boolean bInstHstry = false; + Payer result = null; // 주민등록번호가 동일하다면.. - if (crdnPayerAddrInfo.string("RTPYR_NO").equals(payer.getRtpyrNo())) { + if (crdnPayerAddrInfo != null && equals(crdnPayerAddrInfo.get("RTPYR_NO"), payer.getRtpyrNo())) { // 납부자 대장(TB_PAYER)에 납부자 정보를 수정한다. if (!update(payer)) - throw new RuntimeException("납부자 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + throw new RuntimeException("납부자 정보 수정에 실패하였습니다."); // 주소가 변경되었는지 확인 - if (crdnPayerAddrInfo.string("ADDR_INPT_SE_CD").equals(payer.getAddrInptSeCd()) - && crdnPayerAddrInfo.string("ZIP").equals(payer.getZip()) - && crdnPayerAddrInfo.string("ADDR").equals(payer.getAddr()) - && crdnPayerAddrInfo.string("DTL_ADDR").equals(payer.getDtlAddr()) - && crdnPayerAddrInfo.string("ROAD_NM_CD").equals(payer.getRoadNmCd()) - && crdnPayerAddrInfo.string("STDG_CD").equals(payer.getStdgCd())) { + if (equals(crdnPayerAddrInfo.get("ADDR_INPT_SE_CD"), payer.getAddrInptSeCd()) + && equals(crdnPayerAddrInfo.get("ZIP"), payer.getZip()) + && equals(crdnPayerAddrInfo.get("ADDR"), payer.getAddr()) + && equals(crdnPayerAddrInfo.get("DTL_ADDR"), payer.getDtlAddr()) + && equals(crdnPayerAddrInfo.get("ROAD_NM_CD"), payer.getRoadNmCd()) + && equals(crdnPayerAddrInfo.get("STDG_CD"), payer.getStdgCd())) { // 주소 일련번호 설정 payer.setAddrSn(crdnPayerAddrInfo.string("ADDR_SN")); // 납부자 번호와 주소가 같다면 단속 납부자주소 이력을 등록하지 않는다. bInstHstry = false; } else { - Payer result = getPayerAddrInfo(payer); - - crdnPayerAddrHstry.setCrdnId(payer.getCrdnId()); - crdnPayerAddrHstry.setRtpyrId(result.getRtpyrId()); - crdnPayerAddrHstry.setAddrSn(result.getAddrSn()); - + result = getPayerAddrInfo(payer); // 납부자 번호가 같고, 주소가 다르다면 단속 납부자주소 이력을 등록한다. bInstHstry = true; // 이력 등록 여부 } } else { - Payer result = create(payer) ? payer : getPayerAddrInfo(payer); + result = create(payer) ? payer : getPayerAddrInfo(payer); // 단속 대장의 납부자ID 수정 및 단속 납부자 이력(TB_CRDN_PAYER_HSTRY) 대장에 등록한다. - crdnPayerAddrHstry.setCrdnId(payer.getCrdnId()); - crdnPayerAddrHstry.setRtpyrId(result.getRtpyrId()); - crdnPayerAddrHstry.setAddrSn(result.getAddrSn()); Payer updtPayer = new Payer(); updtPayer.setRtpyrId(""); updtPayer.setRtpyrNm(payer.getRtpyrNm()); - // 전화번호 - String str = result.getRtpyrTelno(); + String str = result.getRtpyrTelno(); // 전화번호 if (!isEmpty(str)) updtPayer.setRtpyrTelno(str); - // 휴대전화번호 - if (!isEmpty(str = result.getRtpyrMblTelno())) + if (!isEmpty(str = result.getRtpyrMblTelno())) // 휴대전화번호 updtPayer.setRtpyrMblTelno(str); - // 이메일 - if (!isEmpty(str = result.getRtpyrEml())) + if (!isEmpty(str = result.getRtpyrEml())) // 이메일 updtPayer.setRtpyrEml(str); - // 납부자 상태 코드 - if (!isEmpty(str = result.getRtpyrSttsCd())) + if (!isEmpty(str = result.getRtpyrSttsCd())) // 납부자 상태 코드 updtPayer.setRtpyrSttsCd(str); if (!isEmpty(str)) @@ -445,10 +440,8 @@ public class PayerBean extends AbstractBean { } // 단속 납부자 주소 이력(TB_CRDN_PAYER_ADDR_HSTRY) 대장에 등록한다. - if (bInstHstry) { - if (!crdnPayerAddrHstryBean.createHstryUpdateCrdnPayerAddr(crdnPayerAddrHstry)) - throw new RuntimeException("납부자 등록 실행중 단속 대장에 주소 일련번호 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } + if (bInstHstry) + createAddrHistory(result); // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. if (toInt(crdnPayerAddrInfo.get("CRDN_STTS_CD")) < 21) { // 납부자 등록 완료 @@ -459,12 +452,16 @@ public class PayerBean extends AbstractBean { crdnSttsHstry.setCrdnSttsCd("21"); if (!crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry)) - throw new RuntimeException("납부자 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + throw new RuntimeException("납부자 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); } return "[S] 작업이 정상 처리 되었습니다."; } + public void createAddrHistory(Payer payer) { + crdnPayerAddrHstryBean.createHstryUpdateCrdnPayerAddr(CrdnPayerAddrHstry.create(payer)); + } + /**지정한 조건에 따라 납부자 이력 목록을 조회하여 반환한다. * @param req 납부자 조회 조건 * @return 납부자 변경 이력 목록 diff --git a/src/main/java/cokr/xit/fims/sndb/SndbQuery.java b/src/main/java/cokr/xit/fims/sndb/SndbQuery.java index 9400ddab..8793b7c9 100644 --- a/src/main/java/cokr/xit/fims/sndb/SndbQuery.java +++ b/src/main/java/cokr/xit/fims/sndb/SndbQuery.java @@ -84,6 +84,7 @@ public class SndbQuery extends CmmnQuery { private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회). private String delRsn; // 삭제 사유 private String crdnDelYn; // 단속 삭제 여부 + private String rsndYn; // 재발송 여부 public String[] getCrdnIds() { return ifEmpty(crdnIds, () -> null); @@ -645,4 +646,19 @@ public class SndbQuery extends CmmnQuery { } // ETC ///////////////////////////////////////////////////////////////////// + /**재발송 여부를 반환한다. + * @return 재발송 여부 + */ + public String getRsndYn() { + return rsndYn; + } + + /**재발송 여부를 설정한다. + * @param rsndYn 재발송 여부 + */ + public void setRsndYn(String rsndYn) { + this.rsndYn = rsndYn; + } + + } diff --git a/src/main/java/cokr/xit/fims/sndb/service/SndngService.java b/src/main/java/cokr/xit/fims/sndb/service/SndngService.java index 8fe32828..793a521f 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/SndngService.java +++ b/src/main/java/cokr/xit/fims/sndb/service/SndngService.java @@ -5,6 +5,7 @@ import java.util.List; import cokr.xit.fims.sndb.SndbQuery; import cokr.xit.fims.sndb.Sndng; import cokr.xit.foundation.data.DataObject; +import cokr.xit.foundation.data.DataProc; /**발송 대장 관리 서비스 인터페이스. * @@ -43,7 +44,7 @@ public interface SndngService { *
  • 그렇지 않으면 false
  • * */ - String createWrngSndngList(SndbQuery req, Sndng sndng); + DataProc createWrngSndngList(SndbQuery req, Sndng sndng); /**계고장 발송 대장 정보를 삭제한다. * @param sndng 발송 대장 @@ -79,7 +80,7 @@ public interface SndngService { *
  • 그렇지 않으면 false
  • * */ - String createAdvntceSndngList(SndbQuery req, Sndng sndng); + DataProc createAdvntceSndngList(SndbQuery req, Sndng sndng); /**사전통지 발송 대장 정보를 삭제한다. * @param sndng 발송 대장 @@ -109,7 +110,7 @@ public interface SndngService { *
  • 그렇지 않으면 false
  • * */ - String createNhtSndngList(SndbQuery req, Sndng sndng); + DataProc createNhtSndngList(SndbQuery req, Sndng sndng); /**지정한 조건에 따라 고지서 발송 대장 목록을 조회하여 반환한다. * @param req 발송 대장 조회 조건 diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java index 543623b0..d53e6e51 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java @@ -35,6 +35,7 @@ import cokr.xit.fims.sndb.dao.SndngDtlMapper; import cokr.xit.fims.sndb.dao.SndngMapper; import cokr.xit.foundation.component.AbstractBean; import cokr.xit.foundation.data.DataObject; +import cokr.xit.foundation.data.DataProc; /**발송 대장 정보 관리 Bean * @@ -172,15 +173,15 @@ public class SndngBean extends AbstractBean { *
  • 그렇지 않으면 false
  • * */ - public String createWrngSndngList(SndbQuery req, Sndng sndng) { + public DataProc createWrngSndngList(SndbQuery req, Sndng sndng) { // 단속 IDs로 계고장 발송 대상 정보 조회 req.setOrderBy("C.REG_DT"); List trgtList = sndngMapper.selectWrngTrgtCrdnIds(req); // 조회 건수 확인 if (isEmpty(trgtList)) - return "[F] 작업 중 대상 자료가 존재하지 않습니다."; + return new DataProc().setSuccess(false).setMessage("[F] 작업 중 대상 자료가 존재하지 않습니다."); if (sndng.getTnocs() != trgtList.size()) - return "[F] 조회된 총 건수와 대상 건수가 다릅니다."; + return new DataProc().setSuccess(false).setMessage("[F] 조회된 총 건수와 대상 건수가 다릅니다."); // 위반 ID 조회 String vltnId = ""; @@ -221,7 +222,9 @@ public class SndngBean extends AbstractBean { throw new RuntimeException(rtnMsg.replace("[F]", "")); } - return "[S] 작업이 정상 처리 되었습니다."; + return new DataProc() + .setTarget(sndng) + .setMessage("[S] 작업이 정상 처리 되었습니다."); } /**계고장 발송 대장 정보를 삭제한다. @@ -309,14 +312,15 @@ public class SndngBean extends AbstractBean { *
  • 그렇지 않으면 false
  • * */ - public String createAdvntceSndngList(SndbQuery req, Sndng sndng) { + public DataProc createAdvntceSndngList(SndbQuery req, Sndng sndng) { + // 단속 Ids로 사전통지 발송 대상 정보 조회 List trgtList = sndngMapper.selectAdvntceTrgtCrdnIds(req); // 조회 건수 확인 if (isEmpty(trgtList)) - return "[F] 작업 중 대상 자료가 존재하지 않습니다."; + return new DataProc().setSuccess(false).setMessage("[F] 작업 중 대상 자료가 존재하지 않습니다."); if (sndng.getTnocs() != trgtList.size()) - return "[F] 조회된 총 건수와 대상 건수가 다릅니다."; + return new DataProc().setSuccess(false).setMessage("[F] 조회된 총 건수와 대상 건수가 다릅니다."); // 사용자 정보를 조회한다. DataObject userInfo = userBean.getUserInfo(currentUser().getId()); @@ -338,8 +342,7 @@ public class SndngBean extends AbstractBean { if (sndng.getSndngRegSeCd() == null) sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드(FIM067) - 02: 개별 - if (sndng.getRsndYn() == null) - sndng.setRsndYn("N"); // 재발송 여부 + sndng.setRsndYn(req.getRsndYn()); // 재발송 여부 if (sndng.getDelYn() == null) sndng.setDelYn("N"); // 삭제 여부 sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00: 발송 준비 @@ -356,7 +359,9 @@ public class SndngBean extends AbstractBean { throw new RuntimeException(rtnMsg.replace("[F]", "")); } - return "[S] 작업이 정상 처리 되었습니다."; + return new DataProc() + .setTarget(sndng) + .setMessage("[S] 작업이 정상 처리 되었습니다."); } /**사전통지 발송 상세 정보를 등록한다. @@ -586,30 +591,30 @@ public class SndngBean extends AbstractBean { *
  • 그렇지 않으면 false
  • * */ - public String createNhtSndngList(SndbQuery req, Sndng sndng) { + public DataProc createNhtSndngList(SndbQuery req, Sndng sndng) { // 단속 Ids로 고지서 발송 대상 정보 조회 List nhtTrgtList = sndngMapper.selectNhtTrgtCrdnIds(req); // 조회 건수 확인 if (isEmpty(nhtTrgtList)) - return "[F] 작업 중 대상 자료가 존재하지 않습니다."; + return new DataProc().setSuccess(false).setMessage("[F] 작업 중 대상 자료가 존재하지 않습니다."); if (sndng.getTnocs() != nhtTrgtList.size()) - return "[F] 조회된 총 건수와 대상 건수가 다릅니다."; + return new DataProc().setSuccess(false).setMessage("[F] 조회된 총 건수와 대상 건수가 다릅니다."); // 사용자 정보를 조회한다. DataObject userInfo = userBean.getUserInfo(currentUser().getId()); // 발송 대장에 등록한다. - sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드 + sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드 if (sndng.getSndngRegSeCd() == null) - sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드(FIM067) - 02: 개별 + sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드(FIM067) - 02: 개별 if (sndng.getTnocs() == null) - sndng.setTnocs(nhtTrgtList.size()); // 총건수 + sndng.setTnocs(nhtTrgtList.size()); // 총건수 if (sndng.getGramt() == null) - sndng.setGramt(toLong(nhtTrgtList.get(0).get("GRAMT"))); // 총금액 + sndng.setGramt(toLong(nhtTrgtList.get(0).get("GRAMT"))); // 총금액 if (sndng.getRsndYn() == null) - sndng.setRsndYn("N"); // 재발송 여부 + sndng.setRsndYn("N"); // 재발송 여부 if (sndng.getDelYn() == null) - sndng.setDelYn("N"); // 삭제 여부 - sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비 + sndng.setDelYn("N"); // 삭제 여부 + sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비 // 발송(TB_SNDNG) 대장을 등록한다. int rtnNocs = sndngMapper.insertSndng(sndng); @@ -623,7 +628,9 @@ public class SndngBean extends AbstractBean { throw new RuntimeException(rtnMsg.replace("[F]", "")); } - return "[S] 작업이 정상 처리 되었습니다."; + return new DataProc() + .setTarget(sndng) + .setMessage("[S] 작업이 정상 처리 되었습니다."); } /**고지서 발송 상세 정보를 등록한다. diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java index f2e2b4cd..a8616eb1 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java @@ -12,6 +12,7 @@ import cokr.xit.fims.sndb.Sndng; import cokr.xit.fims.sndb.service.SndngService; import cokr.xit.foundation.component.AbstractServiceBean; import cokr.xit.foundation.data.DataObject; +import cokr.xit.foundation.data.DataProc; /**발송 대장 서비스 구현체. * @@ -50,7 +51,7 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic } @Override - public String createWrngSndngList(SndbQuery req, Sndng sndng) { + public DataProc createWrngSndngList(SndbQuery req, Sndng sndng) { return sndngBean.createWrngSndngList(req, sndng); } @@ -75,7 +76,7 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic } @Override - public String createAdvntceSndngList(SndbQuery req, Sndng sndng) { + public DataProc createAdvntceSndngList(SndbQuery req, Sndng sndng) { return sndngBean.createAdvntceSndngList(req, sndng); } @@ -95,7 +96,7 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic } @Override - public String createNhtSndngList(SndbQuery req, Sndng sndng) { + public DataProc createNhtSndngList(SndbQuery req, Sndng sndng) { return sndngBean.createNhtSndngList(req, sndng); } diff --git a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java index 1415f833..a62c40f7 100644 --- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java @@ -55,6 +55,7 @@ import cokr.xit.fims.sprt.service.bean.MediaBean; import cokr.xit.fims.task.Task; import cokr.xit.foundation.UserInfo; import cokr.xit.foundation.data.DataObject; +import cokr.xit.foundation.data.DataProc; /**발송대장 서비스의 웹 컨트롤러 * @@ -278,6 +279,8 @@ public class Sndb01Controller extends ApplicationController { if (jsonResponse()) { mav.setViewName("jsonView"); } else { + String egp002 = "EGP002"; // 우편취급 구분 + Map> commonCodes = getCodesOf(egp002); mav.setViewName("fims/sndb/sndb01020-info"); mav.addObject("callPurpose", req.getCallPurpose()) // 호출 용도 @@ -289,6 +292,7 @@ public class Sndb01Controller extends ApplicationController { .addObject("mainQuery", toJson(req)) // 검색 조건 .addObject("List", toJson(mav.getModel().get("List"))) // 데이터 .addObject("Paging", toJson(mav.getModel().get("Paging"))) // 페이징 + .addObject(egp002, toJson(commonCodes.get(egp002))) ; } @@ -305,11 +309,12 @@ public class Sndb01Controller extends ApplicationController { @Task @RequestMapping(name="계고장 발송 등록", value=METHOD_URL.createWarningSendingList) public ModelAndView createWarningSendingList(SndbQuery req, Sndng sndng) { - String rtnMsg = sndngService.createWrngSndngList(req, sndng); + DataProc result = sndngService.createWrngSndngList(req, sndng); return new ModelAndView("jsonView") - .addObject("saved", rtnMsg.contains("[S]")) - .addObject("rtnMsg", rtnMsg); + .addObject("saved", result.isSuccess()) + .addObject("sndng", result.getTarget()) + .addObject("rtnMsg", result.getMessage()); } /**계고장 발송 현황 메인화면(sndb/sndb01/030-main)을 연다. @@ -617,6 +622,8 @@ public class Sndb01Controller extends ApplicationController { if (jsonResponse()) { mav.setViewName("jsonView"); } else { + String egp002 = "EGP002"; // 우편취급 구분 + Map> commonCodes = getCodesOf(egp002); mav.setViewName("fims/sndb/sndb01060-info"); // 사전통지 납기일자 조회 @@ -632,6 +639,7 @@ public class Sndb01Controller extends ApplicationController { .addObject("taskSeCd", req.getTaskSeCd()) // 업무 구분 코드(TASK_SE_CD) .addObject("vltnCd", req.getSchVltnCd()) // 위반 코드(VLTN_CD) .addObject("mainQuery", toJson(req)) // 검색 조건 + .addObject(egp002, toJson(commonCodes.get(egp002))) .addObject("advntceInfo", toJson(advntceInfo)) // 사전통지 기간 정보 .addObject("List", toJson(mav.getModel().get("List"))) // 데이터 .addObject("Paging", toJson(mav.getModel().get("Paging"))) // 페이징 @@ -651,11 +659,12 @@ public class Sndb01Controller extends ApplicationController { @Task @RequestMapping(name="사전통지 발송 등록", value=METHOD_URL.createAdvanceNoticeSendingList) public ModelAndView createAdvanceNoticeSendingList(SndbQuery req, Sndng sndng) { - String rtnMsg = sndngService.createAdvntceSndngList(req, sndng); + DataProc result = sndngService.createAdvntceSndngList(req, sndng); return new ModelAndView("jsonView") - .addObject("saved", rtnMsg.contains("[S]")) - .addObject("rtnMsg", rtnMsg); + .addObject("saved", result.isSuccess()) + .addObject("sndng", result.getTarget()) + .addObject("rtnMsg", result.getMessage()); } /**사전통지 발송 현황 메인화면(sndb/sndb01/070-main)을 연다. @@ -972,6 +981,7 @@ public class Sndb01Controller extends ApplicationController { public ModelAndView getNoticeSheetTargetInfo(HttpServletRequest hReq, SndbQuery req) { // View(jsp)에서 사용할 공통코드를 조회 List cdGrpList = TaskProcessor.get().getVltnCdGrps(); + cdGrpList.add("EGP002"); cdGrpList.add("FIM047"); String[] cdGrps = cdGrpList.toArray(new String[cdGrpList.size()]); Map> commonCodes = getCodesOf(cdGrps); @@ -985,6 +995,7 @@ public class Sndb01Controller extends ApplicationController { .addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD) .addObject("taskSeCd", req.getTaskSeCd()) // 업무 구분 코드(TASK_SE_CD) .addObject("FIM047List", commonCodes.get("FIM047")) // 발송 구분 코드(SNDNG_SE_CD) + .addObject("mainQuery", toJson(req)) // 검색 조건 ; } @@ -998,11 +1009,12 @@ public class Sndb01Controller extends ApplicationController { @Task @RequestMapping(name="고지서 발송대장 등록", value=METHOD_URL.createNoticeSheetSendingList) public ModelAndView createNoticeSheetSendingList(SndbQuery req, Sndng sndng) { - String rtnMsg = sndngService.createNhtSndngList(req, sndng); + DataProc result = sndngService.createNhtSndngList(req, sndng); return new ModelAndView("jsonView") - .addObject("saved", rtnMsg.contains("[S]")) - .addObject("rtnMsg", rtnMsg); + .addObject("saved", result.isSuccess()) + .addObject("sndng", result.getTarget()) + .addObject("rtnMsg", result.getMessage()); } /**고지서 발송 현황 메인화면(sndb/sndb01/110-main)을 연다. diff --git a/src/main/java/cokr/xit/fims/sprt/web/Sprt01Controller.java b/src/main/java/cokr/xit/fims/sprt/web/Sprt01Controller.java index 3479f3ba..22a472f1 100644 --- a/src/main/java/cokr/xit/fims/sprt/web/Sprt01Controller.java +++ b/src/main/java/cokr/xit/fims/sprt/web/Sprt01Controller.java @@ -624,7 +624,7 @@ public class Sprt01Controller extends ApplicationController { DataObject first = dataObjectList0.get(0); sndng.setTtlNm(first.string("TASK_SE_NM")+" "+"사전통지서"); sndng.setRsndYn("N"); - String insertSndngResult = sndngBean.createAdvntceSndngList(sndbQuery, sndng); + String insertSndngResult = sndngBean.createAdvntceSndngList(sndbQuery, sndng).getMessage(); if(!insertSndngResult.contains("[S]")) { throw new RuntimeException(insertSndngResult); } @@ -738,7 +738,7 @@ public class Sprt01Controller extends ApplicationController { sndng.setTtlNm(first.string("TASK_SE_NM")+" "+first.string("VLTN_ARTCL")+" "+"사전통지서"); sndng.setRsndYn("N"); - String insertSndngResult = sndngBean.createAdvntceSndngList(sndbQuery, sndng); + String insertSndngResult = sndngBean.createAdvntceSndngList(sndbQuery, sndng).getMessage(); if(insertSndngResult.contains("[F]")) throw new RuntimeException(insertSndngResult); @@ -856,7 +856,7 @@ public class Sprt01Controller extends ApplicationController { sndng.setTtlNm(first.string("TASK_SE_NM")+" "+first.string("VLTN_ARTCL")+" "+"고지서"); sndng.setRsndYn("N"); - String insertSndngResult = sndngBean.createAdvntceSndngList(sndbQuery, sndng); + String insertSndngResult = sndngBean.createAdvntceSndngList(sndbQuery, sndng).getMessage(); if(insertSndngResult.contains("[F]")) throw new RuntimeException(insertSndngResult); @@ -966,7 +966,7 @@ public class Sprt01Controller extends ApplicationController { sndng.setTtlNm(first.string("TASK_SE_NM")+" "+first.string("VLTN_ARTCL")+" "+"고지서"); sndng.setRsndYn("N"); - String insertSndngResult = sndngBean.createAdvntceSndngList(sndbQuery, sndng); + String insertSndngResult = sndngBean.createAdvntceSndngList(sndbQuery, sndng).getMessage(); if(insertSndngResult.contains("[F]")) throw new RuntimeException(insertSndngResult); diff --git a/src/main/resources/sql/mapper/fims/payer-mapper.xml b/src/main/resources/sql/mapper/fims/payer-mapper.xml index 2c33d937..f82b2e82 100644 --- a/src/main/resources/sql/mapper/fims/payer-mapper.xml +++ b/src/main/resources/sql/mapper/fims/payer-mapper.xml @@ -75,7 +75,7 @@ - /* 납부자 대장 객체 가져오기(payerMapper.selectPayers) */ @@ -102,8 +102,7 @@ - INSERT - INTO TB_PAYER ( + INSERT INTO TB_PAYER ( RTPYR_ID , SGG_CD , RTPYR_INPT_SE_CD diff --git a/src/main/resources/sql/mapper/fims/payerAddr-mapper.xml b/src/main/resources/sql/mapper/fims/payerAddr-mapper.xml index 88407edd..d76f6b2f 100644 --- a/src/main/resources/sql/mapper/fims/payerAddr-mapper.xml +++ b/src/main/resources/sql/mapper/fims/payerAddr-mapper.xml @@ -152,12 +152,11 @@ /* 납부자 주소 등록(payerAddrMapper.insertPayerAddr) */ - SELECT LPAD(CAST(IFNULL(MAX(ADDR_SN) + 1, 1) AS INT), 5, '0') AS NEW_ID + SELECT LPAD(CAST(NVL(MAX(ADDR_SN) + 1, 1) AS INT), 5, '0') AS NEW_ID FROM TB_PAYER_ADDR WHERE RTPYR_ID = #{rtpyrId} - INSERT - INTO TB_PAYER_ADDR ( + INSERT INTO TB_PAYER_ADDR ( RTPYR_ID , ADDR_SN , ADDR_INPT_SE_CD @@ -184,8 +183,7 @@ , MDFCN_DT , MDFR ) - VALUES ( - #{rtpyrId} + SELECT #{rtpyrId} , #{addrSn} , #{addrInptSeCd} , #{addrSeCd} @@ -210,7 +208,29 @@ , #{createdBy} , , #{modifiedBy} - ) + FROM DUAL + WHERE NOT EXISTS ( + SELECT * FROM TB_PAYER_ADDR + WHERE RTPYR_ID = #{rtpyrId} + AND ADDR_SN = CASE WHEN #{addrSn} = '00001' THEN '00001' ELSE LPAD(#{addrSn} - 1, 5, '0') END + AND NVL(ZIP, 'empty') = NVL(#{zip}, 'empty') + AND NVL(ADDR, 'empty') = NVL(#{addr}, 'empty') + AND NVL(DTL_ADDR, 'empty') = NVL(#{dtlAddr}, 'empty') + AND NVL(ROAD_NM_CD, 'empty') = NVL(#{roadNmCd}, 'empty') + AND NVL(UDGD_SE_CD, 'empty') = NVL(#{udgdSeCd}, 'empty') + AND NVL(BMNO, 'empty') = NVL(#{bmno}, 'empty') + AND NVL(BSNO, 'empty') = NVL(#{bsno}, 'empty') + AND NVL(BLDG_MNG_NO, 'empty') = NVL(#{bldgMngNo}, 'empty') + AND NVL(STDG_CD, 'empty') = NVL(#{stdgCd}, 'empty') + AND NVL(DONG_CD, 'empty') = NVL(#{dongCd}, 'empty') + AND NVL(MTN_SE_CD, 'empty') = NVL(#{mtnSeCd}, 'empty') + AND NVL(MNO, 'empty') = NVL(#{mno}, 'empty') + AND NVL(SNO, 'empty') = NVL(#{sno}, 'empty') + AND NVL(SPCL_DONG, 'empty') = NVL(#{spclDong}, 'empty') + AND NVL(SPCL_HO, 'empty') = NVL(#{spclHo}, 'empty') + AND NVL(SPCL_ADDR, 'empty') = NVL(#{spclAddr}, 'empty') + AND NVL(WHOL_ADDR, 'empty') = NVL(#{wholAddr}, 'empty') + ) /* 납부자 주소 수정(payerAddrMapper.updatePayerAddr) */ diff --git a/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml b/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml index 24679f9e..f18f1510 100644 --- a/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml @@ -1238,8 +1238,8 @@ LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N') , L.LEVY_YMD , L.FRST_DUDT_YMD , L.DUDT_YMD - , L.DUDT_AFTR_YMD - , L.DUDT_AFTR_AMT + , L.DUDT_AFTR_YMD + , L.DUDT_AFTR_AMT , L.RCVMT_YMD , L.PAY_MTHD_SE_CD , (GET_CODE_NM('FIM045', L.PAY_MTHD_SE_CD)) AS PAY_MTHD_SE_NM