diff --git a/src/main/java/cokr/xit/fims/crdn/Crdn.java b/src/main/java/cokr/xit/fims/crdn/Crdn.java new file mode 100644 index 00000000..4c96f4d4 --- /dev/null +++ b/src/main/java/cokr/xit/fims/crdn/Crdn.java @@ -0,0 +1,400 @@ +package cokr.xit.fims.crdn; + +import cokr.xit.foundation.AbstractEntity; +import lombok.Getter; +import lombok.Setter; + +/**단속 자료 정보 + * @author leebj + */ +@Getter +@Setter +public class Crdn extends AbstractEntity { + public static String INF_TYPE = "100"; + + /** + * 단속 ID + */ + private String crdnId; + + /** + * 시군구 코드 + */ + private String sggCd; + + /** + * 업무 구분 코드 + */ + private String taskSeCd; + + /** + * 단속 등록 구분 코드 + */ + private String crdnRegSeCd; + + /** + * 단속 입력 구분 코드 + */ + private String crdnInptSeCd; + + /** + * 연계 ID + */ + private String linkId; + + /** + * 단속 구분 코드 + */ + private String crdnSeCd; + + /** + * 납부자 ID + */ + private String rtpyrId; + + /** + * 주소 일련번호 + */ + private String addrSn; + + /** + * 단속 일자 + */ + private String crdnYmd; + + /** + * 단속 시각 + */ + private String crdnTm; + + /** + * 차량번호 + */ + private String vhrno; + + /** + * 단속 법정동 명 + */ + private String crdnStdgNm; + + /** + * 단속 도로 명 + */ + private String crdnRoadNm; + + /** + * 단속 장소 + */ + private String crdnPlc; + + /** + * 상세 단속 장소 + */ + private String dtlCrdnPlc; + + /** + * 조 ID + */ + private String teamId; + + /** + * 위반 ID + */ + private String vltnId; + + /** + * 단속 특별구역 코드 + */ + private String crdnSpareaCd; + + /** + * 단속 시작 시각 + */ + private String crdnBgngTm; + + /** + * 단속 종료 시간 + */ + private String crdnEndTm; + + /** + * 단속 일련번호 + */ + private String crdnSn; + + /** + * GPS X + */ + private String gpsX; + + /** + * GPS Y + */ + private String gpsY; + + /** + * 모자이크 X + */ + private String moscX; + + /** + * 모자이크 Y + */ + private String moscY; + + /** + * 견인 여부 + */ + private String towngYn; + + /** + * 첨부 파일 수 + */ + private Integer atchFileCnt; + + /** + * 차대번호 + */ + private String vin; + + /** + * 말소등록일자 + */ + private String ersrRegYmd; + + /** + * 차량 명 + */ + private String vhclNm; + + /** + * 차량 색상 + */ + private String vhclColr; + + /** + * 사용 연료 코드 + */ + private String useFuelCd; + + /** + * 과태료 차종 코드 + */ + private String ffnlgCarmdlCd; + + /** + * 주차 가능 결과 코드 + */ + private String prkPsbltyRsltCd; + + /** + * 위반 횟수 + */ + private String vltnNmtm; + + /** + * 시간외 여부 + */ + private String ovtmYn; + + /** + * 시간외 분할 여부 + */ + private String ovtmPrttnYn; + + /** + * 과태료 단속 금액 + */ + private Integer ffnlgCrdnAmt; + + /** + * 과태료 감경율 + */ + private String ffnlgRdcrt; + + /** + * 과태료 금액 + */ + private Integer ffnlgAmt; + + /** + * 사전통지 시작 일자 + */ + private String advntceBgngYmd; + + /** + * 사전통지 납기 일자 + */ + private String advntceDudtYmd; + + /** + * 사전통지 금액 + */ + private Integer advntceAmt; + + /** + * 의견 제출 여부 + */ + private String opnnSbmsnYn; + + /** + * 기타 내용 + */ + private String etcCn; + + /** + * 부과 ID + */ + private String levyId; + + /** + * 단속 상태 코드 + */ + private String crdnSttsCd; + + /** + * 단속 상태 변경 일시 + */ + private String crdnSttsChgDt; + + /** + * 가산 금액 + */ + private Integer adtnAmt; + + /** + * 감경 금액 + */ + private Integer minusAmt; + + /** + * 수납 금액 + */ + private Integer rcvmtAmt; + + /** + * 이전 단속 ID + */ + private String bfrCrdnId; + + /** + * 세외수입 단속 연계 여부 + */ + private String nxrpCrdnLinkYn; + + /** + * 세외수입 단속 연계 사용자 ID + */ + private String nxrpCrdnLinkUserId; + + /** + * 세외수입 단속 연계 일시 + */ + private String nxrpCrdnLinkDt; + + /** + * 세외수입 대장 키 + */ + private String nxrpAcbKey; + + /** + * 삭제 여부 + */ + private String delYn; + + /** + * 삭제 일시 + */ + private String delDt; + + /** + * 삭제자 + */ + private String dltr; + + /** + * 삭제 사유 + */ + private String delRsn; + + /** + * 연계 테이블 명 + */ + private String linkTblNm; + + /** + * 민원 연계 여부 + */ + private String cvlcptLinkYn; + + /** + * 위반코드 + */ + private String vltnCd; + + /** + * 납부자 구분 코드 + */ + private String rtpyrSeCd; + + /** + * 납부자 명 + */ + private String rtpyrNm; + + /** + * 납부자 번호 + */ + private String rtpyrNo; + + /** + * 납부자 우편번호 + */ + private String zip; + + /** + * 납부자 주소 + */ + private String addr; + + /** + * 납부자 상세주소 + */ + private String dtlAddr; + + /** + * 부과 제외 구분 코드 + */ + private String levyExclSeCd; + + /** + * 부과 제외 사유 코드 + */ + private String levyExclRsnCd; + + /** + * 부과 제외 일자 + */ + private String levyExclYmd; + + /** + * 조원1 + */ + private String teamer1; + + /** + * 조원2 + */ + private String teamer2; + + /** + * 조원3 + */ + private String teamer3; + + /** + * 조원4 + */ + private String teamer4; + +} diff --git a/src/main/java/cokr/xit/fims/crdn/CrdnQuery.java b/src/main/java/cokr/xit/fims/crdn/CrdnQuery.java new file mode 100644 index 00000000..f907970e --- /dev/null +++ b/src/main/java/cokr/xit/fims/crdn/CrdnQuery.java @@ -0,0 +1,447 @@ +package cokr.xit.fims.crdn; + +import cokr.xit.fims.cmmn.CmmnQuery; + +/**단속 대장 정보 조회 요청 +* +*

상세 설명: +* +*

+* ============ 변경 이력 ============
+* 2023-06-23	leebj 최초 작성
+* ================================
+* 
+*/ +public class CrdnQuery extends CmmnQuery { + + private static final long serialVersionUID = 1L; + + //조회유형 + private String gridType; + private String inspectionDataType; + + //현재정보 + private String currentUserId; + private String currentUserAcnt; + private String currentInstitute; + + //ID + private String crdnId; + private String[] crdnIds; + private String amtDcsnCdGroupId; + private String dtlAmtDcsnGroupId; + private String fileLayoutId; + + //날짜 + private String aplcnYmd; + private String schCvlcptRcptYmdFrom; + private String schCvlcptRcptYmdTo; + private String schCvlcptPrcsPrnmntDtFrom; + private String schCvlcptPrcsPrnmntDtTo; + private String schRdctYmdFrom; + private String schRdctYmdTo; + private String crdnYmd; + private String schCrdnYmdFrom; + private String schCrdnYmdTo; + private String schDmndYmdFrom; + private String schDmndYmdTo; + + //from, to + private Integer schCrdnCntFrom; + private Integer schCrdnCntTo; + + //코드 + private String amtDcsnCd; + private String dtlAmtDcsnCd; + private String crdnInptSeCd; + private String cvlcptPrcsCd; + private String crdnSttsCd; + private String ansSeCd; + private String ansRsnCd; + + //포함, 제외, 특정 자료 + private String schOnlySamePlace; + private String schOnlyUnpay; + private String schExclEnd; + private String schExclOvtime; + + //YN + private String dstrbncYn; + private String towngYn; + + //기타 + private String vhrno; + private String cvlcptPrcsPicNm; + private String teamNm; + private String nxrpSendStts; + + public String getGridType() { + return ifEmpty(gridType, () -> null); + } + + public T setGridType(String gridType) { + this.gridType = gridType; + return self(); + } + + public String getCurrentUserId() { + return ifEmpty(currentUserId, () -> null); + } + + public T setCurrentUserId(String currentUserId) { + this.currentUserId = currentUserId; + return self(); + } + + public String getCurrentUserAcnt() { + return ifEmpty(currentUserAcnt, () -> null); + } + + public T setCurrentUserAcnt(String currentUserAcnt) { + this.currentUserAcnt = currentUserAcnt; + return self(); + } + + public String getCurrentInstitute() { + return ifEmpty(currentInstitute, () -> null); + } + + public T setCurrentInstitute(String currentInstitute) { + this.currentInstitute = currentInstitute; + return self(); + } + + public String getInspectionDataType() { + return ifEmpty(inspectionDataType, () -> null); + } + + public T setInspectionDataType(String inspectionDataType) { + this.inspectionDataType = inspectionDataType; + return self(); + } + + public String getCrdnId() { + return ifEmpty(crdnId, () -> null); + } + + public T setCrdnId(String crdnId) { + this.crdnId = crdnId; + return self(); + } + + public String[] getCrdnIds() { + return ifEmpty(crdnIds, () -> null); + } + + public T setCrdnIds(String... crdnIds) { + this.crdnIds = crdnIds; + return self(); + } + + public String getDstrbncYn() { + return ifEmpty(dstrbncYn, () -> null); + } + + public T setDstrbncYn(String dstrbncYn) { + this.dstrbncYn = dstrbncYn; + return self(); + } + + public String getTowngYn() { + return ifEmpty(towngYn, () -> null); + } + + public T setTowngYn(String towngYn) { + this.towngYn = towngYn; + return self(); + } + + public String getVhrno() { + return ifEmpty(vhrno, () -> null); + } + + public T setVhrno(String vhrno) { + this.vhrno = vhrno; + return self(); + } + + public String getCvlcptPrcsPicNm() { + return ifEmpty(cvlcptPrcsPicNm, () -> null); + } + + public T setCvlcptPrcsPicNm(String cvlcptPrcsPicNm) { + this.cvlcptPrcsPicNm = cvlcptPrcsPicNm; + return self(); + } + + public String getTeamNm() { + return ifEmpty(teamNm, () -> null); + } + + public T setTeamNm(String teamNm) { + this.teamNm = teamNm; + return self(); + } + + public String getSchCvlcptRcptYmdFrom() { + return ifEmpty(schCvlcptRcptYmdFrom, () -> null); + } + + public T setSchCvlcptRcptYmdFrom(String schCvlcptRcptYmdFrom) { + this.schCvlcptRcptYmdFrom = schCvlcptRcptYmdFrom; + return self(); + } + + public String getSchCvlcptRcptYmdTo() { + return ifEmpty(schCvlcptRcptYmdTo, () -> null); + } + + public T setSchCvlcptRcptYmdTo(String schCvlcptRcptYmdTo) { + this.schCvlcptRcptYmdTo = schCvlcptRcptYmdTo; + return self(); + } + + public String getSchCvlcptPrcsPrnmntDtFrom() { + return ifEmpty(schCvlcptPrcsPrnmntDtFrom, () -> null); + } + + public T setSchCvlcptPrcsPrnmntDtFrom(String schCvlcptPrcsPrnmntDtFrom) { + this.schCvlcptPrcsPrnmntDtFrom = schCvlcptPrcsPrnmntDtFrom; + return self(); + } + + public String getSchCvlcptPrcsPrnmntDtTo() { + return ifEmpty(schCvlcptPrcsPrnmntDtTo, () -> null); + } + + public T setSchCvlcptPrcsPrnmntDtTo(String schCvlcptPrcsPrnmntDtTo) { + this.schCvlcptPrcsPrnmntDtTo = schCvlcptPrcsPrnmntDtTo; + return self(); + } + + public String getSchRdctYmdFrom() { + return ifEmpty(schRdctYmdFrom, () -> null); + } + + public T setSchRdctYmdFrom(String schRdctYmdFrom) { + this.schRdctYmdFrom = schRdctYmdFrom; + return self(); + } + + public String getSchRdctYmdTo() { + return ifEmpty(schRdctYmdTo, () -> null); + } + + public T setSchRdctYmdTo(String schRdctYmdTo) { + this.schRdctYmdTo = schRdctYmdTo; + return self(); + } + + public String getCrdnYmd() { + return ifEmpty(crdnYmd, () -> null); + } + + public T setCrdnYmd(String crdnYmd) { + this.crdnYmd = crdnYmd; + return self(); + } + + public String getSchCrdnYmdFrom() { + return ifEmpty(schCrdnYmdFrom, () -> null); + } + + public T setSchCrdnYmdFrom(String schCrdnYmdFrom) { + this.schCrdnYmdFrom = schCrdnYmdFrom; + return self(); + } + + public String getSchCrdnYmdTo() { + return ifEmpty(schCrdnYmdTo, () -> null); + } + + public T setSchCrdnYmdTo(String schCrdnYmdTo) { + this.schCrdnYmdTo = schCrdnYmdTo; + return self(); + } + + public String getSchDmndYmdFrom() { + return ifEmpty(schDmndYmdFrom, () -> null); + } + + public T setSchDmndYmdFrom(String schDmndYmdFrom) { + this.schDmndYmdFrom = schDmndYmdFrom; + return self(); + } + + public String getSchDmndYmdTo() { + return ifEmpty(schDmndYmdTo, () -> null); + } + + public T setSchDmndYmdTo(String schDmndYmdTo) { + this.schDmndYmdTo = schDmndYmdTo; + return self(); + } + + public Integer getSchCrdnCntFrom() { + return ifEmpty(schCrdnCntFrom, () -> null); + } + + public T setSchCrdnCntFrom(Integer schCrdnCntFrom) { + this.schCrdnCntFrom = schCrdnCntFrom; + return self(); + } + + public Integer getSchCrdnCntTo() { + return ifEmpty(schCrdnCntTo, () -> null); + } + + public T setSchCrdnCntTo(Integer schCrdnCntTo) { + this.schCrdnCntTo = schCrdnCntTo; + return self(); + } + + public String getSchOnlySamePlace() { + return ifEmpty(schOnlySamePlace, () -> null); + } + + public T setSchOnlySamePlace(String schOnlySamePlace) { + this.schOnlySamePlace = schOnlySamePlace; + return self(); + } + + public String getSchOnlyUnpay() { + return ifEmpty(schOnlyUnpay, () -> null); + } + + public T setSchOnlyUnpay(String schOnlyUnpay) { + this.schOnlyUnpay = schOnlyUnpay; + return self(); + } + + public String getSchExclEnd() { + return ifEmpty(schExclEnd, () -> null); + } + + public T setSchExclEnd(String schExclEnd) { + this.schExclEnd = schExclEnd; + return self(); + } + + public String getSchExclOvtime() { + return ifEmpty(schExclOvtime, () -> null); + } + + public T setSchExclOvtime(String schExclOvtime) { + this.schExclOvtime = schExclOvtime; + return self(); + } + + public String getCrdnInptSeCd() { + return ifEmpty(crdnInptSeCd, () -> null); + } + + public T setCrdnInptSeCd(String crdnInptSeCd) { + this.crdnInptSeCd = crdnInptSeCd; + return self(); + } + + public String getCvlcptPrcsCd() { + return ifEmpty(cvlcptPrcsCd, () -> null); + } + + public T setCvlcptPrcsCd(String cvlcptPrcsCd) { + this.cvlcptPrcsCd = cvlcptPrcsCd; + return self(); + } + + public String getCrdnSttsCd() { + return ifEmpty(crdnSttsCd, () -> null); + } + + public T setCrdnSttsCd(String crdnSttsCd) { + this.crdnSttsCd = crdnSttsCd; + return self(); + } + + public String getAnsSeCd() { + return ifEmpty(ansSeCd, () -> null); + } + + public T setAnsSeCd(String ansSeCd) { + this.ansSeCd = ansSeCd; + return self(); + } + + public String getAnsRsnCd() { + return ifEmpty(ansRsnCd, () -> null); + } + + public T setAnsRsnCd(String ansRsnCd) { + this.ansRsnCd = ansRsnCd; + return self(); + } + + public String getAplcnYmd() { + return ifEmpty(aplcnYmd, () -> null); + } + + public T setAplcnYmd(String aplcnYmd) { + this.aplcnYmd = aplcnYmd; + return self(); + } + + public String getAmtDcsnCdGroupId() { + return ifEmpty(amtDcsnCdGroupId, () -> null); + } + + public T setAmtDcsnCdGroupId(String amtDcsnCdGroupId) { + this.amtDcsnCdGroupId = amtDcsnCdGroupId; + return self(); + } + + public String getAmtDcsnCd() { + return ifEmpty(amtDcsnCd, () -> null); + } + + public T setAmtDcsnCd(String amtDcsnCd) { + this.amtDcsnCd = amtDcsnCd; + return self(); + } + + public String getDtlAmtDcsnGroupId() { + return ifEmpty(dtlAmtDcsnGroupId, () -> null); + } + + public T setDtlAmtDcsnGroupId(String dtlAmtDcsnGroupId) { + this.dtlAmtDcsnGroupId = dtlAmtDcsnGroupId; + return self(); + } + + public String getFileLayoutId() { + return ifEmpty(fileLayoutId, () -> null); + } + + public T setFileLayoutId(String fileLayoutId) { + this.fileLayoutId = fileLayoutId; + return self(); + } + + public String getDtlAmtDcsnCd() { + return ifEmpty(dtlAmtDcsnCd, () -> null); + } + + public T setDtlAmtDcsnCd(String dtlAmtDcsnCd) { + this.dtlAmtDcsnCd = dtlAmtDcsnCd; + return self(); + } + + public String getNxrpSendStts() { + return ifEmpty(nxrpSendStts, () -> null); + } + + public T setNxrpSendStts(String nxrpSendStts) { + this.nxrpSendStts = nxrpSendStts; + return self(); + } + +} diff --git a/src/main/java/cokr/xit/fims/crdn/ExmptnVhcl.java b/src/main/java/cokr/xit/fims/crdn/ExmptnVhcl.java new file mode 100644 index 00000000..40678bef --- /dev/null +++ b/src/main/java/cokr/xit/fims/crdn/ExmptnVhcl.java @@ -0,0 +1,99 @@ +package cokr.xit.fims.crdn; + +import cokr.xit.foundation.AbstractEntity; +import lombok.Getter; +import lombok.Setter; + +/**면제차량 정보 + * @author leebj + */ +@Getter +@Setter +public class ExmptnVhcl extends AbstractEntity { + + /** + * 면제차량 ID + */ + private String exmptnVhclId; + + /** + * 이력 일련번호 + */ + private String hstrySn; + + /** + * 시군구 코드 + */ + private String sggCd; + + /** + * 차량번호 + */ + private String vhrno; + + /** + * 면제 사유 + */ + private String exmptnRsn; + + /** + * 문서 번호 + */ + private String docNo; + + /** + * 소유자 명 + */ + private String ownrNm; + + /** + * 면제 시작 일자 + */ + private String exmptnBgngYmd; + + /** + * 면제 종료 일자 + */ + private String exmptnEndYmd; + + /** + * 삭제 여부 + */ + private String delYn; + + /** + * 등록 일시 + */ + private String regDt; + + /** + * 등록자 + */ + private String rgtr; + + /** + * 수정 일시 + */ + private String mdfcnDt; + + /** + * 수정자 + */ + private String mdfr; + + /** + * 삭제 일시 + */ + private String delDt; + + /** + * 삭제자 + */ + private String dltr; + + /** + * 삭제 사유 + */ + private String delRsn; + +} diff --git a/src/main/java/cokr/xit/fims/crdn/Team.java b/src/main/java/cokr/xit/fims/crdn/Team.java new file mode 100644 index 00000000..543de8b3 --- /dev/null +++ b/src/main/java/cokr/xit/fims/crdn/Team.java @@ -0,0 +1,88 @@ +package cokr.xit.fims.crdn; + +import cokr.xit.foundation.AbstractEntity; +import lombok.Getter; +import lombok.Setter; + +/**단속팀 정보 + * @author leebj + */ +@Getter +@Setter +public class Team extends AbstractEntity { + + /** + * 단속팀 ID + */ + private String teamId; + + /** + * 시군구 코드 + */ + private String sggCd; + + /** + * 업무 구분 코드 + */ + private String taskSeCd; + + /** + * 단속 구분 코드 + */ + private String crdnSeCd; + + /** + * 조 명 + */ + private String teamNm; + + /** + * 조원1 + */ + private String teamer1; + + /** + * 조원2 + */ + private String teamer2; + + /** + * 조원3 + */ + private String teamer3; + + /** + * 조원4 + */ + private String teamer4; + + /** + * 기타 내용 + */ + private String etcCn; + + /** + * 사용 여부 + */ + private String useYn; + + /** + * 등록일시 + */ + private String regDt; + + /** + * 등록자 + */ + private String rgtr; + + /** + * 수정일시 + */ + private String mdfcnDt; + + /** + * 수정자 + */ + private String mdfr; +} diff --git a/src/main/java/cokr/xit/fims/crdn/dao/CrdnInfoMapper.java b/src/main/java/cokr/xit/fims/crdn/dao/CrdnInfoMapper.java new file mode 100644 index 00000000..4da56bf0 --- /dev/null +++ b/src/main/java/cokr/xit/fims/crdn/dao/CrdnInfoMapper.java @@ -0,0 +1,20 @@ +package cokr.xit.fims.crdn.dao; + +import org.egovframe.rte.psl.dataaccess.mapper.Mapper; + +import cokr.xit.foundation.component.AbstractMapper; +import cokr.xit.foundation.data.DataObject; + +/**단속 정보 조회 DAO + * @author leebj + */ +@Mapper("crdnInfoMapper") +public interface CrdnInfoMapper extends AbstractMapper { + + /**단속 대장 정보를 조회한다. + * @param crdnId 단속 아이디 + * @return 단속 정보 + */ + DataObject selectCrdnInfo(String crdnId); + +} diff --git a/src/main/java/cokr/xit/fims/crdn/dao/CrdnInstMapper.java b/src/main/java/cokr/xit/fims/crdn/dao/CrdnInstMapper.java new file mode 100644 index 00000000..ad0d5373 --- /dev/null +++ b/src/main/java/cokr/xit/fims/crdn/dao/CrdnInstMapper.java @@ -0,0 +1,32 @@ +package cokr.xit.fims.crdn.dao; + +import org.egovframe.rte.psl.dataaccess.mapper.Mapper; + +import cokr.xit.fims.crdn.Crdn; +import cokr.xit.foundation.component.AbstractMapper; + +/**단속 자료 등록 DAO + * @author leebj + */ +@Mapper("crdnInstMapper") +public interface CrdnInstMapper extends AbstractMapper { + + /**단속 대장 정보를 등록한다. + * @param params 파라미터 + *
  • "crdn" - 단속 대장
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int insertCrdn(Crdn crdn); + + /**단속 부가 정보를 등록한다. + * @param params 파라미터 + *
  • "crdn" - 단속 부가 정보
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int insertCrdnAddition(Crdn crdn); + +} diff --git a/src/main/java/cokr/xit/fims/crdn/dao/CrdnListMapper.java b/src/main/java/cokr/xit/fims/crdn/dao/CrdnListMapper.java new file mode 100644 index 00000000..bf320171 --- /dev/null +++ b/src/main/java/cokr/xit/fims/crdn/dao/CrdnListMapper.java @@ -0,0 +1,65 @@ +package cokr.xit.fims.crdn.dao; + +import java.util.List; + +import org.egovframe.rte.psl.dataaccess.mapper.Mapper; + +import cokr.xit.fims.crdn.CrdnQuery; +import cokr.xit.foundation.component.AbstractMapper; +import cokr.xit.foundation.data.DataObject; + +/**단속 대장 목록 조회 DAO + * @author leebj + */ +@Mapper("crdnListMapper") +public interface CrdnListMapper extends AbstractMapper { + + /**금일 등록한 단속자료 목록을 조회한다.
+ * {@link cokr.xit.fims.crdn.service.bean.CrdnService#getCrackdownList(CrdnQuery)} 참고 + * @param query 단속자료 목록 조회 조건 + * @return 단속자료 목록 + */ + List selectTodayCrackdownList(CrdnQuery query); + + /**단속자료 목록을 조회한다.
+ * {@link cokr.xit.fims.crdn.service.bean.CrdnService#getCrackdownList(CrdnQuery)} 참고 + * @param query 단속자료 목록 조회 조건 + * @return 단속자료 목록 + */ + List selectCrackdownList(CrdnQuery query); + + /**단속사진 검사 자료 목록을 조회한다.
+ * {@link cokr.xit.fims.crdn.service.bean.CrdnService#getCrackdownList(CrdnQuery)} 참고 + * @param query 단속사진 검사 자료 목록 조회 조건 + * @return 단속사진 검사 자료 목록 + */ + List selectPhotoInspectionDataList(CrdnQuery query); + + /**동일 차량 단속 그룹 목록을 조회한다.
+ * {@link cokr.xit.fims.crdn.service.bean.CrdnService#getCrackdownList(CrdnQuery)} 참고 + * @param query 동일 차량 단속 그룹 목록 조회 조건 + * @return 동일 차량 단속 그룹 목록 + */ + List selectSameVehicleMainList(CrdnQuery query); + + /**동일 차량 단속 자료 목록을 조회한다.
+ * {@link cokr.xit.fims.crdn.service.bean.CrdnService#getCrackdownList(CrdnQuery)} 참고 + * @param query 동일 차량 단속 자료 목록 조회 조건 + * @return 동일 차량 단속 자료 목록 + */ + List selectSameVehicleSubList(CrdnQuery query); + + /**표지정보 미확인 자료 목록을 조회한다.
+ * {@link cokr.xit.fims.crdn.service.bean.CrdnService#getCrackdownList(CrdnQuery)} 참고 + * @param query 표지정보 미확인 자료 목록 조회 조건 + * @return 표지정보 미확인 자료 목록 + */ + List selectTagInformationUndefinedDataList(CrdnQuery query); + + /**단속 건수를 반환한다. + * @param crdnQuery 조회조건 + * @return 단속 건수 + */ + int countCrdn(CrdnQuery crdnQuery); + +} diff --git a/src/main/java/cokr/xit/fims/crdn/dao/CrdnStngMapper.java b/src/main/java/cokr/xit/fims/crdn/dao/CrdnStngMapper.java new file mode 100644 index 00000000..6e913d3e --- /dev/null +++ b/src/main/java/cokr/xit/fims/crdn/dao/CrdnStngMapper.java @@ -0,0 +1,35 @@ +package cokr.xit.fims.crdn.dao; + +import java.util.List; +import java.util.Map; + +import org.egovframe.rte.psl.dataaccess.mapper.Mapper; + +import cokr.xit.fims.crdn.CrdnQuery; +import cokr.xit.foundation.component.AbstractMapper; + +@Mapper("crdnStngMapper") +public interface CrdnStngMapper extends AbstractMapper { + + /**기본금액을 조회한다.
+ * {@link cokr.xit.fims.crdn.service.bean.CrdnStngBean#getBasicAmt(CrdnQuery)} 참고 + * @param query 단속자료 정보 + * @return 기본금액 + */ + String selectBasicAmt(CrdnQuery query); + + /**시군구코드에 따른 법정동명 목록을 조회한다.
+ * @param sggCd 시군구코드 + * @return 법정동 목록 + */ + List selectStdgNmList(String sggCd); + + /**법정동명으로 법정동코드를 조회한다.
+ * @param map 시군구코드 및 법정동명 + * @return 법정동코드 목록 + */ + List selectStdgCdListByStdgNm(Map map); + + + +} \ No newline at end of file diff --git a/src/main/java/cokr/xit/fims/crdn/dao/CrdnTeamMapper.java b/src/main/java/cokr/xit/fims/crdn/dao/CrdnTeamMapper.java new file mode 100644 index 00000000..745baf0e --- /dev/null +++ b/src/main/java/cokr/xit/fims/crdn/dao/CrdnTeamMapper.java @@ -0,0 +1,57 @@ +package cokr.xit.fims.crdn.dao; + +import java.util.List; + +import org.egovframe.rte.psl.dataaccess.mapper.Mapper; + +import cokr.xit.fims.crdn.CrdnQuery; +import cokr.xit.fims.crdn.Team; +import cokr.xit.foundation.component.AbstractMapper; +import cokr.xit.foundation.data.DataObject; + +@Mapper("crdnTeamMapper") +public interface CrdnTeamMapper extends AbstractMapper { + + /**단속팀 목록을 조회한다.
+ * @param query 단속팀 목록 조회 조건 + * @return 단속팀 목록 + */ + List selectTeamList(CrdnQuery query); + + /**비사용 단속팀 목록을 조회한다.
+ * @param query 비사용 단속팀 목록 조회 조건 + * @return 비사용 단속팀 목록 + */ + List selectRemovedTeamList(CrdnQuery query); + + /**단속팀 정보를 삭제한다.
+ * @param team 단속팀 정보 + * @return 저장된 정보 수 + */ + int deleteTeamInfo(Team team); + + /**단속팀 정보를 등록한다.
+ * @param team 단속팀 정보 + * @return 저장된 정보 수 + */ + int insertTeamInfo(Team team); + + /**단속팀 정보를 수정한다.
+ * @param team 단속팀 정보 + * @return 저장된 정보 수 + */ + int updateTeamInfo(Team team); + + /**단속팀명으로 단속팀 정보를 조회한다.
+ * @param team 단속팀 정보 + * @return 단속팀 정보 + */ + DataObject selectTeamInfoByName(Team team); + + /**단속팀 정보를 조회한다.
+ * @param teamId 단속팀 ID + * @return 단속팀 정보 + */ + DataObject selectTeamInfo(String teamId); + +} diff --git a/src/main/java/cokr/xit/fims/crdn/dao/CrdnUpdtMapper.java b/src/main/java/cokr/xit/fims/crdn/dao/CrdnUpdtMapper.java new file mode 100644 index 00000000..261db1aa --- /dev/null +++ b/src/main/java/cokr/xit/fims/crdn/dao/CrdnUpdtMapper.java @@ -0,0 +1,95 @@ +package cokr.xit.fims.crdn.dao; + +import java.util.Map; + +import org.egovframe.rte.psl.dataaccess.mapper.Mapper; + +import cokr.xit.fims.crdn.Crdn; +import cokr.xit.foundation.component.AbstractMapper; + +/**단속 관리 DAO + * @author leebj + */ +@Mapper("crdnUpdtMapper") +public interface CrdnUpdtMapper extends AbstractMapper { + /**단속 상태를 변경한다. + * @param crdn 단속 대장 + * @return 저장된 정보수 + */ + int updateCrdnStatus(Crdn crdn); + + /**표지정보 미확인 자료를 확인 자료로 수정한다. + * @param crdn 단속 대장 + * @return 저장된 정보수 + */ + int updateTagInfo(Crdn crdn); + + /** 2시간 초과 여부를 변경한다. + * @param crdn 단속 대장 + * @return 저장된 정보수 + */ + int updateOverTimeInfo(Crdn crdn); + + /** 단속 자료의 금액을 변경한다. + * @param crdn 단속 대장 + * @return 저장된 정보수 + */ + int updateCrdnAmt(Crdn crdn); + + /** 단속 자료의 기타사항을 변경한다. + * @param crdn 단속 대장 + * @return 저장된 정보수 + */ + int updateEtcCn(Crdn crdn); + + /**단속정보를 변경한다.
+ * {@link cokr.xit.fims.crdn.service.bean.CrdnBean#update(Crdn)} 참고 + * @param crdn 단속정보 + * @return 저장된 정보수 + */ + int updateCrdn(Crdn crdn); + + /**단속 부가 정보를 변경한다.
+ * {@link cokr.xit.fims.crdn.service.bean.CrdnBean#update(Crdn)} 참고 + * @param crdn 단속정보 + * @return 저장된 정보수 + */ + int updateCrdnAddition(Crdn crdn); + + /**단속 정보를 변경한다.
+ * @param crdn 단속정보 + * @return 저장된 정보수 + */ + int updateEditCrdn(Crdn crdn); + + /** 단속 정보를 삭제한다. + * @param map 삭제 요청 파라미터 + * @return 저장된 정보수 + */ + int deleteCrdn(Map map); + + /** 단속 부가 정보를 삭제한다. + * @param map 삭제 요청 파라미터 + * @return 저장된 정보수 + */ + int deleteCrdnAdi(Map map); + + /** 단속 정보의 납부자 ID를 삭제한다. + * @param map 삭제 요청 파라미터 + * @return 저장된 정보수 + */ + int deleteCrdnPayer(Crdn crdn); + + /** + * @param + * @return 저장된 정보수 + */ + int updateNxrpCrdnLinkYn(Crdn crdn); + + /** 단속 정보의 사전통지 일자를 변경한다. + * @param crdn 단속 대장 + * @return 저장된 정보수 + */ + int updateAdvntceYmd(Crdn crdn); + +} diff --git a/src/main/java/cokr/xit/fims/crdn/dao/ExmptnVhclMapper.java b/src/main/java/cokr/xit/fims/crdn/dao/ExmptnVhclMapper.java new file mode 100644 index 00000000..1cb77dbb --- /dev/null +++ b/src/main/java/cokr/xit/fims/crdn/dao/ExmptnVhclMapper.java @@ -0,0 +1,57 @@ +package cokr.xit.fims.crdn.dao; + +import java.util.List; + +import org.egovframe.rte.psl.dataaccess.mapper.Mapper; + +import cokr.xit.fims.crdn.CrdnQuery; +import cokr.xit.fims.crdn.ExmptnVhcl; +import cokr.xit.foundation.component.AbstractMapper; +import cokr.xit.foundation.data.DataObject; + +@Mapper("exmptnVhclMapper") +public interface ExmptnVhclMapper extends AbstractMapper { + + /**면제차량 목록을 조회한다.
+ * @param query 면제차량 목록 조회 조건 + * @return 면제차량 목록 + */ + List selectExemptionVehicleList(CrdnQuery query); + + /**면제차량 정보를 조회한다.
+ * @param exemptionVehicleId 면제차량 ID + * @return 면제차량 정보 + */ + DataObject selectExemptionVehicleInfo(String exemptionVehicleId); + + /**면제차량 정보를 등록한다. + * @param exmptnVhcl 면제차량 정보 + * return 저장된 정보 수 + */ + int insertExemptionVehicleInfo(ExmptnVhcl exmptnVhcl); + + /**면제차량 정보를 수정한다. + * @param exmptnVhcl 면제차량 정보 + * return 저장된 정보 수 + */ + int updateExemptionVehicleInfo(ExmptnVhcl exmptnVhcl); + + /**면제차량 정보를 삭제한다. + * @param exmptnVhcl 면제차량 정보 + * return 저장된 정보 수 + */ + int deleteExemptionVehicleInfo(ExmptnVhcl exmptnVhcl); + + /**면제차량 이력을 등록한다. + * @param exmptnVhcl 면제차량 정보 + * return 저장된 정보 수 + */ + int insertExemptionVehicleHistory(ExmptnVhcl exmptnVhcl); + + /**면제차량 이력을 조회한다.
+ * @param exemptionVehicleId 면제차량 ID + * @return 면제차량 이력 + */ + List selectExemptionVehicleHistoryList(String exmptnVhclId); + +} diff --git a/src/main/java/cokr/xit/fims/crdn/service/bean/CrdnBean.java b/src/main/java/cokr/xit/fims/crdn/service/bean/CrdnBean.java new file mode 100644 index 00000000..5c3096e0 --- /dev/null +++ b/src/main/java/cokr/xit/fims/crdn/service/bean/CrdnBean.java @@ -0,0 +1,412 @@ +package cokr.xit.fims.crdn.service.bean; + +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Component; + +import cokr.xit.base.file.FileInfo; +import cokr.xit.base.file.service.bean.FileBean; +import cokr.xit.fims.cmmn.CmmnUtil; +import cokr.xit.fims.cmmn.CrdnPayerHstry; +import cokr.xit.fims.cmmn.CrdnSttsHstry; +import cokr.xit.fims.cmmn.service.bean.CrdnPayerHstryBean; +import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean; +import cokr.xit.fims.crdn.Crdn; +import cokr.xit.fims.crdn.Team; +import cokr.xit.fims.crdn.dao.CrdnInfoMapper; +import cokr.xit.fims.crdn.dao.CrdnInstMapper; +import cokr.xit.fims.crdn.dao.CrdnTeamMapper; +import cokr.xit.fims.crdn.dao.CrdnUpdtMapper; +import cokr.xit.fims.excl.LevyExcl; +import cokr.xit.fims.excl.service.bean.LevyExclBean; +import cokr.xit.foundation.UserInfo; +import cokr.xit.foundation.component.AbstractBean; +import cokr.xit.foundation.data.DataObject; + +/** 단속 관리 Bean + * @author leebj + */ +@Component("crdnBean") +public class CrdnBean extends AbstractBean { + + @Resource(name = "crdnSttsHstryBean") + private CrdnSttsHstryBean crdnSttsHstryBean; + + @Resource(name = "crdnPayerHstryBean") + private CrdnPayerHstryBean crdnPayerHstryBean; + + @Resource(name = "fileBean") + private FileBean fileBean; + + @Resource(name = "crdnStngBean") + private CrdnStngBean crdnStngBean; + + @Resource(name = "crdnInfoMapper") + private CrdnInfoMapper crdnInfoMapper; + + @Resource(name = "crdnInstMapper") + private CrdnInstMapper crdnInstMapper; + + @Resource(name = "crdnUpdtMapper") + private CrdnUpdtMapper crdnUpdtMapper; + + @Resource(name = "crdnTeamMapper") + private CrdnTeamMapper crdnTeamMapper; + + @Resource(name = "levyExclBean") + protected LevyExclBean levyExclBean; + + public boolean create(Map nonQueryRequest, Crdn crdn, List fileInfoList) { + if(fileInfoList != null && !fileInfoList.isEmpty()) { + crdn.setAtchFileCnt(fileInfoList.size()); + } else { + crdn.setAtchFileCnt(0); + } + + //금액 계산 + int[] basicAmt = crdnStngBean.getBasicAmt(crdn); + crdn.setFfnlgCrdnAmt(basicAmt[0]); + crdn.setFfnlgAmt(basicAmt[0]); + crdn.setAdvntceAmt(basicAmt[1]); + + //단속팀 정보 갱신 + if(!ifEmpty(crdn.getTeamId(), () -> "").equals("")) { + DataObject teamInfo = crdnTeamMapper.selectTeamInfo(crdn.getTeamId()); + + Team team = new Team(); + team.setTaskSeCd(crdn.getTaskSeCd()); + team.setSggCd(crdn.getSggCd()); + team.setTeamNm(teamInfo.string("TEAM_NM")); + team.setCrdnSeCd(crdn.getCrdnSeCd()); + team.setTeamer1(crdn.getTeamer1()); + team.setTeamer2(crdn.getTeamer2()); + team.setTeamer3(crdn.getTeamer3()); + team.setTeamer4(crdn.getTeamer4()); + + crdnStngBean.saveTeamInfo(true, team); + } + + //상태코드 설정 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + if(ifEmpty(crdn.getCrdnSttsCd(), () -> "").equals("")){ //상태코드가 없을경우 + if(ifEmpty(crdn.getCvlcptLinkYn(), () -> "").equals("Y")) { //민원연계자료일 경우 + crdn.setCrdnSttsCd("01"); //초기상태 + crdn.setCrdnSttsChgDt(dateFormat.format(System.currentTimeMillis())); + } else { //민원연계자료가 아닐 경우 + if(ifEmpty(crdn.getRtpyrId(), () -> "").equals("")) { //납부자가 정보가 없을 경우 + crdn.setCrdnSttsCd("01"); //초기상태 + crdn.setCrdnSttsChgDt(dateFormat.format(System.currentTimeMillis())); + } else { + crdn.setCrdnSttsCd("21"); //납부자등록완료 + crdn.setCrdnSttsChgDt(dateFormat.format(System.currentTimeMillis())); + } + } + } + + //단속 대장 등록 + boolean result = this.createLedger(crdn); + if (!result) { + throw new RuntimeException("단속자료 등록 중 단속자료 등록에 실패하였습니다."); + } + + SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyyMMdd"); + Date curTime = new Date(); + String strCurrentDate = yyyyMMdd.format(curTime); + + String taskDtlId = crdn.getCrdnId(); + + if(crdn.getCrdnSttsCd().equals("83")) { + // 부과제외(TB_LEVY_EXCL) 대장 등록 + LevyExcl excl01 = new LevyExcl(); + excl01.setCrdnId(crdn.getCrdnId()); + excl01.setLevyExclYmd(strCurrentDate); + excl01.setLevyExclSeCd("2"); + excl01.setLevyExclRsnCd("192"); + excl01.setEtcCn(""); + + String rtnScs = levyExclBean.createLevyExcl(excl01); + if (rtnScs.contains("[F]")) { + throw new RuntimeException("단속자료 등록 중 부과제외 자료 등록에 실패하였습니다."); + } + + taskDtlId = excl01.getLevyExclId(); + } + + // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장 등록 + CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); + crdnSttsHstry.setCrdnId(crdn.getCrdnId()); + crdnSttsHstry.setBfrSttsCd(""); + crdnSttsHstry.setBfrSttsChgDt(""); + crdnSttsHstry.setCrdnSttsCd(crdn.getCrdnSttsCd()); + crdnSttsHstry.setTaskDtlId(taskDtlId); + crdnSttsHstry.setEtcCn(""); + + result = crdnSttsHstryBean.create(crdnSttsHstry); + if (!result) { + throw new RuntimeException("단속자료 등록 중 단속상태 이력 등록에 실패하였습니다."); + } + + //단속납부자이력(TB_CRDN_PAYER_HSTRY) 대장 등록 + if(!ifEmpty(crdn.getRtpyrId(), () -> "").equals("")) { + CrdnPayerHstry crdnPayerHstry = new CrdnPayerHstry(); + crdnPayerHstry.setCrdnId(crdn.getCrdnId()); + crdnPayerHstry.setRtpyrId(crdn.getRtpyrId()); + crdnPayerHstry.setAddrSn(crdn.getAddrSn()); + result = crdnPayerHstryBean.createCrdnPayerHstry(crdnPayerHstry); + if (!result) { + throw new RuntimeException("단속자료 등록 중 단속 납부자 이력 등록에 실패하였습니다."); + } + + // 단속 대장의 납부자ID 수정 및 단속 납부자 이력(TB_CRDN_PAYER_HSTRY) 대장에 등록한다. + result = crdnPayerHstryBean.createCrdnPayerAddrHstry(crdnPayerHstry); + if (!result) { + throw new RuntimeException("단속자료 등록 중 단속 납부자주소 이력 등록에 실패하였습니다."); + } + } + + //파일 등록 + if(fileInfoList != null && !fileInfoList.isEmpty()) { + fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(Crdn.INF_TYPE).setInfoKey(crdn.getCrdnId())); + int effected = fileBean.create(fileInfoList); + if(effected == 0) { + throw new RuntimeException("단속자료 등록 중 파일 등록에 실패하였습니다."); + } + } + + return result; + } + + /**단속 대장 정보를 등록한다. + * @param crdn 단속 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean createLedger(Crdn crdn) { + + int effected = crdnInstMapper.insertCrdn(crdn); + if(effected != 1) { + return false; + } + + effected = crdnInstMapper.insertCrdnAddition(crdn); + if(effected != 1) { + return false; + } + + return true; + + } + + /**단속 대장 정보를 수정한다. + * @param nonQueryRequest 수정 요청, crdn 단속 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean updateLedger(Map nonQueryRequest, Crdn crdn) { + String updateInfomationType = (String)ifEmpty(nonQueryRequest.get("updateInfomationType"), "") ; + + switch (ifEmpty(updateInfomationType, () -> "")) { + default: + if(crdnUpdtMapper.updateCrdnAddition(crdn) != 1) { + return false; + } + return crdnUpdtMapper.updateCrdn(crdn) == 1 ? true : false; + } + } + + /**단속 정보를 삭제한다. + * @param crdnIds 단속아이디 목록 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean remove(String... crdnIds) { + if (isEmpty(crdnIds)) return false; + + Map paramMap = new HashMap(); + List crdnIdList = Arrays.asList(crdnIds); + paramMap.put("crdnIds", crdnIdList); + paramMap.put("removedBy", UserInfo.current().getId()); + + return crdnUpdtMapper.deleteCrdn(paramMap) >= 1 ? true : false; + } + + /**단속 자료를 수정한다. + * @param crdn 단속 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String updateCrackdown(Crdn crdn) { + // 변수 선언 + int effected = 0; // DB 처리 결과 + + //금액 계산 + int[] basicAmt = crdnStngBean.getBasicAmt(crdn); + crdn.setFfnlgCrdnAmt(basicAmt[0]); + crdn.setFfnlgAmt(basicAmt[0]); + crdn.setAdvntceAmt(basicAmt[1]); + + // 단속(TB_CRDN) 대장을 수정한다. + effected = crdnUpdtMapper.updateEditCrdn(crdn); + if (effected != 1) { + throw new RuntimeException("단속 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 단속 부가 정보(TB_CRDN_ADI) 대장을 수정한다. + effected = crdnUpdtMapper.updateCrdnAddition(crdn); + if (effected != 1) { + throw new RuntimeException("단속 부가 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**단속 자료를 삭제한다. + * @param crdn 단속 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String removeCrackdown(Crdn crdn) { + // 변수 선언 + boolean rtnScs = false; // DB 처리 결과 + int effected = 0; + + // 단속 ID로 단속 정보 조회 + DataObject infoCrdn = crdnInfoMapper.selectCrdnInfo(crdn.getCrdnId()); + + // 단속상태이력(TB_CRDN_STTS_HSTRY) + CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); + crdnSttsHstry.setCrdnId(infoCrdn.string("CRDN_ID")); + crdnSttsHstry.setBfrSttsCd(infoCrdn.string("CRDN_STTS_CD")); + crdnSttsHstry.setBfrSttsChgDt(infoCrdn.string("CRDN_STTS_CHG_DT")); + crdnSttsHstry.setCrdnSttsCd("99"); + + // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록한다. + rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); + if (!rtnScs) { + throw new RuntimeException("단속 삭제 중 단속 대장의 단속상태코드 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + Map paramMap = new HashMap(); + List crdnIdList = Arrays.asList(crdn.getCrdnId()); + paramMap.put("crdnIds", crdnIdList); + paramMap.put("removedBy", UserInfo.current().getId()); + paramMap.put("delRsn", crdn.getDelRsn()); + + // 단속(TB_CRDN) 대장을 삭제한다. + effected = crdnUpdtMapper.deleteCrdn(paramMap); + if (effected != 1) { + throw new RuntimeException("단속 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 단속(TB_CRDN) 대장을 삭제한다. + effected = crdnUpdtMapper.deleteCrdnAdi(paramMap); + if (effected != 1) { + throw new RuntimeException("단속 부가 정보 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**단속 자료의 납부자 ID를 삭제한다. + * @param crdn 단속 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String removeCrackdownPayer(Crdn crdn) { + // 단속(TB_CRDN) 대장에 납부자 ID를 삭제한다. + int effected = crdnUpdtMapper.deleteCrdnPayer(crdn); + if (effected != 1) { + throw new RuntimeException("단속 자료의 납부자 정보가 없습니다."); // 예외를 발생시켜서 DB Rollback + } + + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**단속 자료의 처리 상태 코드를 수정한다. + * @param crdn 단속 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String updateCrackdownStatus(Crdn crdn) { + // 단속 ID로 단속 정보 조회 + DataObject infoCrdn = crdnInfoMapper.selectCrdnInfo(crdn.getCrdnId()); + + // 단속상태이력(TB_CRDN_STTS_HSTRY) + CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); + crdnSttsHstry.setCrdnId(infoCrdn.string("CRDN_ID")); + crdnSttsHstry.setBfrSttsCd(infoCrdn.string("CRDN_STTS_CD")); + crdnSttsHstry.setBfrSttsChgDt(infoCrdn.string("CRDN_STTS_CHG_DT")); + crdnSttsHstry.setEtcCn("[개별총정보-단속상태변경] " + crdn.getEtcCn()); + crdnSttsHstry.setCrdnSttsCd(crdn.getCrdnSttsCd()); + + // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록한다. + boolean rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); + if (!rtnScs) { + throw new RuntimeException("단속 대장의 단속상태코드 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + return "[S] 작업이 정상 처리 되었습니다."; + } + + /** 장비 연계파일을 삭제한다. + * @param workPath 작업 디렉토리, fileName 파일명 + * @return 저장 여부 + */ + public boolean removeEquipmentLinkFile(String workPath, String fileName) { + boolean saved = false; + + try { + + Stream walk = Files.walk(Paths.get(workPath)); + + List deleteFilePaths = new ArrayList(); + + walk.filter(Files::isRegularFile) + .filter(p -> p.toFile().getName().equalsIgnoreCase(fileName)) + .collect(Collectors.toList()) + .forEach(item -> deleteFilePaths.add(item.toFile().getPath())); + + for(String deleteFilePath : deleteFilePaths) { + saved = (new File(deleteFilePath)).delete(); + } + + //빈 디렉토리 삭제 + CmmnUtil.deleteEmptyDir(new File(workPath), false); + + walk.close(); + } catch (Exception e) { + throw new RuntimeException(e); + } + + return saved; + } + +} diff --git a/src/main/java/cokr/xit/fims/crdn/service/bean/CrdnStngBean.java b/src/main/java/cokr/xit/fims/crdn/service/bean/CrdnStngBean.java new file mode 100644 index 00000000..b0951f84 --- /dev/null +++ b/src/main/java/cokr/xit/fims/crdn/service/bean/CrdnStngBean.java @@ -0,0 +1,560 @@ +package cokr.xit.fims.crdn.service.bean; + +import java.util.List; + +import javax.annotation.Resource; + +import org.assertj.core.util.Arrays; +import org.springframework.stereotype.Component; + +import cokr.xit.fims.cmmn.CmmnUtil; +import cokr.xit.fims.crdn.Crdn; +import cokr.xit.fims.crdn.CrdnQuery; +import cokr.xit.fims.crdn.ExmptnVhcl; +import cokr.xit.fims.crdn.Team; +import cokr.xit.fims.crdn.dao.CrdnStngMapper; +import cokr.xit.fims.crdn.dao.CrdnTeamMapper; +import cokr.xit.fims.crdn.dao.ExmptnVhclMapper; +import cokr.xit.foundation.component.AbstractBean; +import cokr.xit.foundation.data.DataObject; + +/** 단속 설정 Bean + * @author leebj + */ +@Component("crdnStngBean") +public class CrdnStngBean extends AbstractBean { + + public static String[] SAFE_TAG_AREA = {"03","06","07"}; //안전표지구역 + + public static String[] CAR_GROUP1 = {"12","14","15","21"}; //승합자동차등 + public static String[] CAR_GROUP2 = {"11","13"}; //승용자동차등 + public static String[] CAR_GROUP3 = {"31"}; //이륜자동차등 + + @Resource(name = "crdnStngMapper") + private CrdnStngMapper crdnStngMapper; + + @Resource(name = "crdnTeamMapper") + private CrdnTeamMapper crdnTeamMapper; + + @Resource(name = "exmptnVhclMapper") + private ExmptnVhclMapper exmptnVhclMapper; + + /**잔액을 계산한다. + * @param state 대장 자료 상태 + * @param advntceAmt 사전통지금액 + * @param ffnlgAmt 과태료금액 + * @param minusAmt 감경금액 + * @param adtnAmt 가산금액 + * @param rcvmtAmt 수납금액 + * @return 잔액 + */ + public int getBalance(String state, int advntceAmt, int ffnlgAmt, int minusAmt, int adtnAmt, int rcvmtAmt) { + int result = 0; + if(Integer.parseInt(state) < Integer.parseInt("51")) { + result = advntceAmt - rcvmtAmt - minusAmt; + } else if(state.equals("71") || + state.equals("72") || + state.equals("73") || + state.equals("74") || + state.equals("75") || + state.equals("76") || + state.equals("80") || + state.equals("81") || + state.equals("82") || + state.equals("83") || + state.equals("84") || + state.equals("85")) { + + } else { + result = ffnlgAmt - rcvmtAmt - minusAmt + adtnAmt; + } + + return result; + } + + /**기본금액을 계산한다. + * @param crdn 단속 정보 + * @return 최초금액, 사전통지금액 + */ + public int[] getBasicAmt(Crdn crdn) { + int[] amt = {0, 0}; + + String taskSeCd = crdn.getTaskSeCd(); + + CrdnQuery query = new CrdnQuery(); + query.setTaskSeCd(crdn.getTaskSeCd()); + query.setAplcnYmd(crdn.getCrdnYmd()); + + String ffnlgCarmdlCd = crdn.getFfnlgCarmdlCd(); + if(taskSeCd.equals("PVS") || taskSeCd.equals("BPV") || taskSeCd.equals("PES")) { + if(ifEmpty(ffnlgCarmdlCd, () -> "").equals("")) { + return amt; + } + } + + if(taskSeCd.equals("PVS")) { + query.setAmtDcsnCdGroupId("FIM055"); + String crdnSpareaCd = crdn.getCrdnSpareaCd(); + if(Arrays.asList(SAFE_TAG_AREA).contains(crdnSpareaCd)) { + query.setAmtDcsnCd("02"); + } else { + + String crdnTm = crdn.getCrdnTm(); + boolean workTimeYn = Integer.parseInt(crdnTm) >= 80000 && Integer.parseInt(crdnTm) <= 200000; + + if(crdnSpareaCd.equals("01") && workTimeYn) { + query.setAmtDcsnCd("03"); + } else if((crdnSpareaCd.equals("02") || crdnSpareaCd.equals("05")) && workTimeYn) { + query.setAmtDcsnCd("04"); + } else { + query.setAmtDcsnCd("01"); + } + } + + query.setDtlAmtDcsnGroupId("FIM056"); + if(Arrays.asList(CAR_GROUP1).contains(ffnlgCarmdlCd)) { + query.setDtlAmtDcsnCd("01"); + } + if(Arrays.asList(CAR_GROUP2).contains(ffnlgCarmdlCd)) { + query.setDtlAmtDcsnCd("02"); + } + + int ffnlgCrdnAmt = Integer.parseInt(ifEmpty(crdnStngMapper.selectBasicAmt(query), () -> "0")); + + if(ffnlgCrdnAmt > 0 && ifEmpty(crdn.getOvtmYn(), ()-> "").equals("Y")) { + ffnlgCrdnAmt += 10000; + } + + amt[0] = ffnlgCrdnAmt; + amt[1] = (int)(ffnlgCrdnAmt * 0.8); + + } else if(taskSeCd.equals("BPV")) { + + query.setAmtDcsnCdGroupId("FIM056"); + if(Arrays.asList(CAR_GROUP1).contains(ffnlgCarmdlCd)) { + query.setAmtDcsnCd("01"); + } + if(Arrays.asList(CAR_GROUP2).contains(ffnlgCarmdlCd)) { + query.setAmtDcsnCd("02"); + } + if(Arrays.asList(CAR_GROUP3).contains(ffnlgCarmdlCd)) { + query.setAmtDcsnCd("03"); + } + + int ffnlgCrdnAmt = Integer.parseInt(ifEmpty(crdnStngMapper.selectBasicAmt(query), () -> "0")); + amt[0] = ffnlgCrdnAmt; + amt[1] = ffnlgCrdnAmt; + + } else if(taskSeCd.equals("DPV")) { + + query.setAmtDcsnCdGroupId("FIM006"); + query.setAmtDcsnCd(crdn.getVltnCd()); + + int ffnlgCrdnAmt = Integer.parseInt(ifEmpty(crdnStngMapper.selectBasicAmt(query), () -> "0")); + amt[0] = ffnlgCrdnAmt; + amt[1] = (int)(ffnlgCrdnAmt * 0.8); + + } else if(taskSeCd.equals("ECA")) { + + query.setAmtDcsnCdGroupId("FIM061"); + query.setAmtDcsnCd(crdn.getVltnCd()); + + int ffnlgCrdnAmt = Integer.parseInt(ifEmpty(crdnStngMapper.selectBasicAmt(query), () -> "0")); + amt[0] = ffnlgCrdnAmt; + amt[1] = (int)(ffnlgCrdnAmt * 0.8); + + } else if(taskSeCd.equals("PES")) { + + query.setAmtDcsnCdGroupId("FIM057"); + + if(ffnlgCarmdlCd.equals("21")) { + query.setAmtDcsnCd("01"); + query.setDtlAmtDcsnGroupId("FIM059"); + + String vltnNmtm = crdn.getVltnNmtm(); + if(vltnNmtm == null || vltnNmtm.equals("") || vltnNmtm.equals("0") || vltnNmtm.equals("1")) { + query.setDtlAmtDcsnCd("01"); + } else if(vltnNmtm.equals("2")) { + query.setDtlAmtDcsnCd("02"); + } else { + query.setDtlAmtDcsnCd("03"); + } + } + + + if(ffnlgCarmdlCd.equals("13") || ffnlgCarmdlCd.equals("14")) { + query.setAmtDcsnCd("02"); + query.setDtlAmtDcsnGroupId("FIM058"); + //query.setDtlAmtDcsnCd(업종); // TODO : 차주 업종 + } + ; + + int ffnlgCrdnAmt = Integer.parseInt(ifEmpty(crdnStngMapper.selectBasicAmt(query), () -> "0")); + amt[0] = ffnlgCrdnAmt; + boolean isPenaltyAmt = (crdn.getFfnlgCarmdlCd().equals("13") || crdn.getFfnlgCarmdlCd().equals("14")); //과징금 + if(isPenaltyAmt) { + amt[1] = (ffnlgCrdnAmt); + } else { + amt[1] = (int)(ffnlgCrdnAmt * 0.8); + } + + } + + return amt; + } + + /** 차량번호로 렌트카 여부를 확인한다. + * @param vhrno 차량번호 + * @return 렌트카 여부 + */ + public boolean isRent(String vhrno) { + int len = vhrno.length(); + if(len >= 7) { + + String fifthFromLast = vhrno.substring(len-5, len-4); + + if(fifthFromLast.equals("하") + || fifthFromLast.equals("허") + || fifthFromLast.equals("호") + || fifthFromLast.equals("후")) { + return true; + } + } + + return false; + } + + /** 차종과 차량번호로 영업용 차량 여부를 확인한다. + * @param ffnlgCarmdlCd 차종, vhrno 차량번호 + * @return 영업용 차량 여부 판단 결과 + */ + public String getBusinessYnOfCar(String ffnlgCarmdlCd, String vhrno) { + + if(vhrno.equals("")) { + return "차량번호없음"; + } + if(ffnlgCarmdlCd.equals("") || ffnlgCarmdlCd.equals("31")) { + return "판단불가"; + } + + if(vhrno.contains("바") || vhrno.contains("사") || vhrno.contains("아") || vhrno.contains("자")) { + return "영업용"; + } else { + return "비영업용"; + } + + } + + /** 차량번호로 차량구분을 판단한다. + * @param vhrno 차량번호 + * @return 영업용 차량 여부 판단 결과 + */ + public String getCarGb(String vhrno) { + + if(vhrno.equals("")) { + return "차량번호 없음"; + } + + boolean first3isNumber = CmmnUtil.isNumeric(vhrno.substring(0, 3)); + if(first3isNumber) { + int first3 = Integer.parseInt(vhrno.substring(0, 3)); + if(first3 >= 0 && first3 <= 99) { + return "중기"; + } else if(first3 >= 100 && first3 <= 997) { + return "일반"; + } else if(first3 >= 998 && first3 <= 999) { + return "기타"; + } + } + + if(!(this.getHeavyEquipmentCarkind(vhrno).equals(""))) { + return "중기"; + } + + if(vhrno.contains("외교")) { + return "외교"; + } + if(vhrno.contains("준외")) { + return "준외"; + } + if(vhrno.contains("영사")) { + return "영사"; + } + if(vhrno.contains("준영")) { + return "준영"; + } + + if(vhrno.contains("국기") || vhrno.contains("협정") || vhrno.contains("대표") || vhrno.contains("외빈")) { + return "국제"; + } + + if(vhrno.substring(0,1).equals("임")) { + return "임시"; + } + + if(vhrno.length() == 7 + && vhrno.substring(0, 3).equals("16다") + && CmmnUtil.isNumeric(vhrno.substring(3, 7))) { + return "미군"; + } + + if(vhrno.length() == 10 + && this.isBiefSidoName(vhrno.substring(0, 2)) + && CmmnUtil.isNumeric(vhrno.substring(2, 5)) + && vhrno.substring(5, 6).equals("-") + && CmmnUtil.isNumeric(vhrno.substring(6, 10))) { + return "미군"; + } + + int vhrnoLength = vhrno.length(); + + if(this.isBiefSidoName(vhrno.substring(0, 2))) { + + //서울 0 가 0000 + //서울 00 가 0000 + //서울 중 가 0000 + //서울 마포 가 0000 + //서울 영등포 가 0000 + + if(vhrnoLength >= 8 && vhrnoLength <= 10) { + + String suffix1 = vhrno.substring(vhrnoLength-5, vhrnoLength-4); + String suffix2 = vhrno.substring(vhrnoLength-4); + + String middle = vhrno.substring(2, vhrnoLength-5); + + if(CmmnUtil.isKorean(suffix1) && CmmnUtil.isNumeric(suffix2)) { + + if(CmmnUtil.isNumeric(middle) && (middle.length() == 1 || middle.length() == 2)) { + return "일반"; + } + if(CmmnUtil.isKorean(middle) && (middle.length() >= 1 && middle.length() <= 3)) { + return "일반"; + } + } + } + + } else { + + //00가0000 + if(vhrnoLength == 7 + && CmmnUtil.isNumeric(vhrno.substring(0, 2)) + && CmmnUtil.isKorean(vhrno.substring(2, 3)) + && CmmnUtil.isNumeric(vhrno.substring(3, 7))) { + return "일반"; + } + } + + return "판단불가"; + } + + + + public String getHeavyEquipmentCarkind(String vhrno) { + + + + if(this.isBiefSidoName(vhrno.substring(0, 2)) + && CmmnUtil.isKorean(vhrno.substring(4, 5)) + && CmmnUtil.isNumeric(vhrno.substring(5, 9)) + ) { + switch(vhrno.substring(2, 4)) { + case "01" : return "불도저"; + case "02" : return "굴삭기"; + case "03" : return "로더"; + case "04" : return "지게차"; + case "05" : return "스크레이퍼"; + case "06" : return "덤프트럭"; + case "07" : return "기중기"; + case "08" : return "콘크리트믹서트럭"; + case "14" : + if(!vhrno.substring(4,5).equals("허")) { + return "콘크리트믹서트럭"; + } + } + + switch(vhrno.substring(2, 5)) { + case "26거" : return "도로보수트럭"; + case "26너" : return "노면파쇄기"; + case "26버" : return "터널고소용자동차"; + case "26어" : return "수목이식기"; + } + + } + + return ""; + } + + public boolean isBiefSidoName(String str) { + + String[] sidoNames = { + "서울","대전","대구","부산","광주","인천","울산","세종", + "경기","강원","충북","충남","전북","전남","경북","경남","제주" + }; + + if(Arrays.asList(sidoNames).contains(str)) { + return true; + } else { + return false; + } + + } + + + + /**단속팀 목록을 조회한다. + * @param query 단속팀 목록 조회조건 + * @return 단속팀 목록 + */ + public List selectTeamList(CrdnQuery query){ + return crdnTeamMapper.selectTeamList(query); + } + + /**비사용 단속팀 목록을 조회한다. + * @param query 비사용 단속팀 목록 조회조건 + * @return 비사용 단속팀 목록 + */ + public List selectRemovedTeamList(CrdnQuery query) { + return crdnTeamMapper.selectRemovedTeamList(query); + } + + /**단속팀 정보를 삭제한다. + * @param teamId 단속팀 ID + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean removeTeamInfo(String teamId) { + + Team team = new Team(); + team.setTeamId(teamId); + team.setRemovedBy(currentUser().getId()); + return crdnTeamMapper.deleteTeamInfo(team) == 1 ? true : false; + } + + /**단속팀 정보를 저장한다. + * @param fromInsertCrdn 단속정보 입력 프로세스에서 호출하였는지 여부, teamId 단속팀 ID + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean saveTeamInfo(boolean fromInsertCrdn, Team team) { + DataObject teamInfo = crdnTeamMapper.selectTeamInfoByName(team); + + boolean result = false; + + if(teamInfo != null) { + boolean differ = false; + if(!ifEmpty(team.getCrdnSeCd(), () -> "").equals(teamInfo.string("CRDN_SE_CD"))) { + differ = true; + } + if(!ifEmpty(team.getTeamer1(), () -> "").equals(teamInfo.string("TEAMER_1"))) { + differ = true; + } + if(!ifEmpty(team.getTeamer2(), () -> "").equals(teamInfo.string("TEAMER_2"))) { + differ = true; + } + if(!ifEmpty(team.getTeamer3(), () -> "").equals(teamInfo.string("TEAMER_3"))) { + differ = true; + } + if(!ifEmpty(team.getTeamer4(), () -> "").equals(teamInfo.string("TEAMER_4"))) { + differ = true; + } + + if(differ) { + Team del = new Team(); + del.setTeamId(teamInfo.string("TEAM_ID")); + del.setRemovedBy(currentUser().getId()); + crdnTeamMapper.deleteTeamInfo(del); + + result = crdnTeamMapper.insertTeamInfo(team) == 1 ? true : false; + } else { + if(!fromInsertCrdn) { + team.setTeamId(teamInfo.string("TEAM_ID")); + result = crdnTeamMapper.updateTeamInfo(team) == 1 ? true : false; + } + } + } else { + result = crdnTeamMapper.insertTeamInfo(team) == 1 ? true : false; + } + + return result; + } + + /**단속팀 정보를 조회한다. + * @param teamId 단속팀 ID + * @return 단속팀 정보 + */ + public DataObject selectTeamInfo(String teamId) { + return crdnTeamMapper.selectTeamInfo(teamId); + } + + /**면제차량 목록을 조회한다. + * @param query 면제차량 목록 조회조건 + * @return 면제차량 목록 + */ + public List selectExemptionVehicleList(CrdnQuery query) { + return exmptnVhclMapper.selectExemptionVehicleList(query); + } + + /**면제차량 정보를 조회한다. + * @param exemptionVehicleId 면제차량 ID + * @return 면제차량 정보 + */ + public DataObject getExemptionVehicleInfo(String exemptionVehicleId) { + return exmptnVhclMapper.selectExemptionVehicleInfo(exemptionVehicleId); + } + + /**면제차량 정보를 등록한다. + * @param exmptnVhcl 면제차량 정보 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean createExemptionVehicleInfo(ExmptnVhcl exmptnVhcl) { + if(exmptnVhclMapper.insertExemptionVehicleInfo(exmptnVhcl) != 1) { + return false; + } + + return exmptnVhclMapper.insertExemptionVehicleHistory(exmptnVhcl) == 1 ? true : false; + } + + /**면제차량 정보를 수정한다. + * @param exmptnVhcl 면제차량 정보 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean updateExemptionVehicleInfo(ExmptnVhcl exmptnVhcl) { + if(exmptnVhclMapper.updateExemptionVehicleInfo(exmptnVhcl) != 1) { + return false; + } + + return exmptnVhclMapper.insertExemptionVehicleHistory(exmptnVhcl) == 1 ? true : false; + } + + /**면제차량 정보를 삭제한다. + * @param exmptnVhcl 면제차량 정보 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean removeExemptionVehicleInfo(ExmptnVhcl exmptnVhcl) { + exmptnVhcl.setRemovedBy(currentUser().getId()); + if(exmptnVhclMapper.deleteExemptionVehicleInfo(exmptnVhcl) != 1) { + return false; + } + + return exmptnVhclMapper.insertExemptionVehicleHistory(exmptnVhcl) == 1 ? true : false; + } + + public List getExemptionVehicleHistoryList(String exmptnVhclId) { + return exmptnVhclMapper.selectExemptionVehicleHistoryList(exmptnVhclId); + } + +} diff --git a/src/main/java/cokr/xit/fims/excl/LevyExcl.java b/src/main/java/cokr/xit/fims/excl/LevyExcl.java new file mode 100644 index 00000000..3a38adfa --- /dev/null +++ b/src/main/java/cokr/xit/fims/excl/LevyExcl.java @@ -0,0 +1,66 @@ +package cokr.xit.fims.excl; + +import cokr.xit.foundation.AbstractEntity; +import lombok.Getter; +import lombok.Setter; + +/** + * 부과 제외 대장 + * @author JoJH + */ +@Getter +@Setter +public class LevyExcl extends AbstractEntity { + + /** + * 부과 제외 ID + */ + private String levyExclId; + + /** + * 단속 ID + */ + private String crdnId; + + /** + * 부과 제외 일자 + */ + private String levyExclYmd; + + /** + * 부과 제외 구분 코드 + */ + private String levyExclSeCd; + + /** + * 부과 제외 사유 코드 + */ + private String levyExclRsnCd; + + /** + * 기타 내용 + */ + private String etcCn; + + /** + * 삭제 여부 + */ + private String delYn; + + /** + * 삭제 사유 + */ + private String delRsn; + + // 추가 ///////////////////////////////////////////////////////////////////// + /** + * 부과제외 Ids + */ + private String[] levyExclIds; + + /** + * 시군구 코드 + */ + private String sggCd; + +} diff --git a/src/main/java/cokr/xit/fims/excl/LevyExclQuery.java b/src/main/java/cokr/xit/fims/excl/LevyExclQuery.java new file mode 100644 index 00000000..9cfbd4ee --- /dev/null +++ b/src/main/java/cokr/xit/fims/excl/LevyExclQuery.java @@ -0,0 +1,345 @@ +package cokr.xit.fims.excl; + +import cokr.xit.fims.cmmn.CmmnQuery; + +/**부과제외 대장 정보 조회 요청 +* +*

상세 설명: +* +*

+* ============ 변경 이력 ============
+* 2023-06-23	JoJH 최초 작성
+* ================================
+* 
+*/ +public class LevyExclQuery extends CmmnQuery { + + private static final long serialVersionUID = 1L; + + // ID + private String crdnId; // 단속 ID + private String[] levyExclIds; // 부과제외 Ids + private String levyExclId; // 부과제외 ID + private String[] opnnIds; // 의견제출 Ids + private String opnnId; // 의견제출 ID + private String mngId; // 의견제출 심의 회원 ID + private String[] reRegIds; // 재등록 Ids + private String reRegId; // 재등록 ID + + // 검색 조건 + private String schLevyExclYmdFrom; // 부과제외_부과제외 일자 시작 + private String schLevyExclYmdTo; // 부과제외_부과제외 일자 종료 + private String schLevyExclSeCd; // 부과제외_부과제외 구분 코드 + private String schLevyExclRsnCd; // 부과제외_부과제외 구분 코드 + private String schRcptYmdFrom; // 의견제출_접수 일자 시작 + private String schRcptYmdTo; // 의견제출_접수 일자 종료 + private String schAnsYmdFrom; // 의견제출_답변 일자 시작 + private String schAnsYmdTo; // 의견제출_답변 일자 종료 + private String schOpnnSbmsnSttsCd; // 의견제출_의견 제출 상태 코드 + private String schOpnnSbmsnSeCd; // 의견제출_의견 제출 구분 코드 + private String schNtfctnSeCd; // 의견제출_통보 구분 코드 + private String schSttrNm; // 의견제출_진술자 명 + private String schReRegYmdFrom; // 단속재등록_재등록 일자 시작 + private String schReRegYmdTo; // 단속재등록_재등록 일자 종료 + // 상세 검색 조건 + private String schCrdnYmdFrom; // 단속(TB_CRDN)_단속 일자 시작 + private String schCrdnYmdTo; // 단속(TB_CRDN)_단속 일자 종료 + private String schVhrno; // 단속(TB_CRDN)_차량번호 + private String schRtpyrNo; // 납부자(TB_PAYER)_납부자 번호 + private String schRtpyrNm; // 납부자(TB_PAYER)_납부자 명 + + // ETC + private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회). + private String delRsn; // 삭제 사유 + private String levyExclSeCd; // 부과제외_부과 제외 구분 코드 + private String ansRsnCd; // 민원 답변 문구(TB_CVLCPT_ANS_WORDS) - 답변 사유 코드 + private String sndngRcvmtCd; // 발송 수납 코드 + + public String getCrdnId() { + return ifEmpty(crdnId, () -> null); + } + + public T setCrdnId(String crdnId) { + this.crdnId = crdnId; + return self(); + } + + public String[] getLevyExclIds() { + return ifEmpty(levyExclIds, () -> null); + } + + public T setLevyExclIds(String... levyExclIds) { + this.levyExclIds = levyExclIds; + return self(); + } + + public String getLevyExclId() { + return ifEmpty(levyExclId, () -> null); + } + + public T setLevyExclId(String levyExclId) { + this.levyExclId = levyExclId; + return self(); + } + + public String[] getOpnnIds() { + return ifEmpty(opnnIds, () -> null); + } + + public T setOpnnIds(String... opnnIds) { + this.opnnIds = opnnIds; + return self(); + } + + public String getOpnnId() { + return ifEmpty(opnnId, () -> null); + } + + public T setOpnnId(String opnnId) { + this.opnnId = opnnId; + return self(); + } + + public String getMngId() { + return ifEmpty(mngId, () -> null); + } + + public T setMngId(String mngId) { + this.mngId = mngId; + return self(); + } + + public String[] getReRegIds() { + return ifEmpty(reRegIds, () -> null); + } + + public T setReRegIds(String... reRegIds) { + this.reRegIds = reRegIds; + return self(); + } + + public String getReRegId() { + return ifEmpty(reRegId, () -> null); + } + + public T setReRegId(String reRegId) { + this.reRegId = reRegId; + return self(); + } + + public String getSchLevyExclYmdFrom() { + return ifEmpty(schLevyExclYmdFrom, () -> null); + } + + public T setSchLevyExclYmdFrom(String schLevyExclYmdFrom) { + this.schLevyExclYmdFrom = schLevyExclYmdFrom; + return self(); + } + + public String getSchLevyExclYmdTo() { + return ifEmpty(schLevyExclYmdTo, () -> null); + } + + public T setSchLevyExclYmdTo(String schLevyExclYmdTo) { + this.schLevyExclYmdTo = schLevyExclYmdTo; + return self(); + } + + public String getSchLevyExclSeCd() { + return ifEmpty(schLevyExclSeCd, () -> null); + } + + public T setSchLevyExclSeCd(String schLevyExclSeCd) { + this.schLevyExclSeCd = schLevyExclSeCd; + return self(); + } + + public String getSchLevyExclRsnCd() { + return ifEmpty(schLevyExclRsnCd, () -> null); + } + + public T setSchLevyExclRsnCd(String schLevyExclRsnCd) { + this.schLevyExclRsnCd = schLevyExclRsnCd; + return self(); + } + + public String getSchRcptYmdFrom() { + return ifEmpty(schRcptYmdFrom, () -> null); + } + + public T setSchRcptYmdFrom(String schRcptYmdFrom) { + this.schRcptYmdFrom = schRcptYmdFrom; + return self(); + } + + public String getSchRcptYmdTo() { + return ifEmpty(schRcptYmdTo, () -> null); + } + + public T setSchRcptYmdTo(String schRcptYmdTo) { + this.schRcptYmdTo = schRcptYmdTo; + return self(); + } + + public String getSchAnsYmdFrom() { + return ifEmpty(schAnsYmdFrom, () -> null); + } + + public T setSchAnsYmdFrom(String schAnsYmdFrom) { + this.schAnsYmdFrom = schAnsYmdFrom; + return self(); + } + + public String getSchAnsYmdTo() { + return ifEmpty(schAnsYmdTo, () -> null); + } + + public T setSchAnsYmdTo(String schAnsYmdTo) { + this.schAnsYmdTo = schAnsYmdTo; + return self(); + } + + public String getSchOpnnSbmsnSttsCd() { + return ifEmpty(schOpnnSbmsnSttsCd, () -> null); + } + + public T setSchOpnnSbmsnSttsCd(String schOpnnSbmsnSttsCd) { + this.schOpnnSbmsnSttsCd = schOpnnSbmsnSttsCd; + return self(); + } + + public String getSchOpnnSbmsnSeCd() { + return ifEmpty(schOpnnSbmsnSeCd, () -> null); + } + + public T setSchOpnnSbmsnSeCd(String schOpnnSbmsnSeCd) { + this.schOpnnSbmsnSeCd = schOpnnSbmsnSeCd; + return self(); + } + + public String getSchNtfctnSeCd() { + return ifEmpty(schNtfctnSeCd, () -> null); + } + + public T setSchNtfctnSeCd(String schNtfctnSeCd) { + this.schNtfctnSeCd = schNtfctnSeCd; + return self(); + } + + public String getSchSttrNm() { + return ifEmpty(schSttrNm, () -> null); + } + + public T setSchSttrNm(String schSttrNm) { + this.schSttrNm = schSttrNm; + return self(); + } + + public String getSchReRegYmdFrom() { + return ifEmpty(schReRegYmdFrom, () -> null); + } + + public T setSchReRegYmdFrom(String schReRegYmdFrom) { + this.schReRegYmdFrom = schReRegYmdFrom; + return self(); + } + + public String getSchReRegYmdTo() { + return ifEmpty(schReRegYmdTo, () -> null); + } + + public T setSchReRegYmdTo(String schReRegYmdTo) { + this.schReRegYmdTo = schReRegYmdTo; + return self(); + } + + // 상세 검색 조건 /////////////////////////////////////////////////////////////// + public String getSchCrdnYmdFrom() { + return ifEmpty(schCrdnYmdFrom, () -> null); + } + + public void setSchCrdnYmdFrom(String schCrdnYmdFrom) { + this.schCrdnYmdFrom = schCrdnYmdFrom; + } + + public String getSchCrdnYmdTo() { + return ifEmpty(schCrdnYmdTo, () -> null); + } + + public void setSchCrdnYmdTo(String schCrdnYmdTo) { + this.schCrdnYmdTo = schCrdnYmdTo; + } + + public String getSchVhrno() { + return ifEmpty(schVhrno, () -> null); + } + + public void setSchVhrno(String schVhrno) { + this.schVhrno = schVhrno; + } + + public String getSchRtpyrNo() { + return ifEmpty(schRtpyrNo, () -> null); + } + + public void setSchRtpyrNo(String schRtpyrNo) { + this.schRtpyrNo = schRtpyrNo; + } + + public String getSchRtpyrNm() { + return ifEmpty(schRtpyrNm, () -> null); + } + + public void setSchRtpyrNm(String schRtpyrNm) { + this.schRtpyrNm = schRtpyrNm; + } + // 상세 검색 조건 /////////////////////////////////////////////////////////////// + + // ETC ///////////////////////////////////////////////////////////////////// + public String getCallPurpose() { + return ifEmpty(callPurpose, () -> null); + } + + public T setCallPurpose(String callPurpose) { + this.callPurpose = callPurpose; + return self(); + } + + public String getDelRsn() { + return ifEmpty(delRsn, () -> null); + } + + public T setDelRsn(String delRsn) { + this.delRsn = delRsn; + return self(); + } + + public String getLevyExclSeCd() { + return ifEmpty(levyExclSeCd, () -> null); + } + + public T setLevyExclSeCd(String levyExclSeCd) { + this.levyExclSeCd = levyExclSeCd; + return self(); + } + + public String getAnsRsnCd() { + return ifEmpty(ansRsnCd, () -> null); + } + + public T setAnsRsnCd(String ansRsnCd) { + this.ansRsnCd = ansRsnCd; + return self(); + } + + public String getSndngRcvmtCd() { + return ifEmpty(sndngRcvmtCd, () -> null); + } + + public T setSndngRcvmtCd(String sndngRcvmtCd) { + this.sndngRcvmtCd = sndngRcvmtCd; + return self(); + } + // ETC ///////////////////////////////////////////////////////////////////// + +} diff --git a/src/main/java/cokr/xit/fims/excl/dao/LevyExclMapper.java b/src/main/java/cokr/xit/fims/excl/dao/LevyExclMapper.java new file mode 100644 index 00000000..45e1a28b --- /dev/null +++ b/src/main/java/cokr/xit/fims/excl/dao/LevyExclMapper.java @@ -0,0 +1,90 @@ +package cokr.xit.fims.excl.dao; + +import java.util.List; + +import org.egovframe.rte.psl.dataaccess.mapper.Mapper; + +import cokr.xit.fims.crdn.Crdn; +import cokr.xit.fims.excl.LevyExcl; +import cokr.xit.fims.excl.LevyExclQuery; +import cokr.xit.foundation.component.AbstractMapper; +import cokr.xit.foundation.data.DataObject; + +/** 부과제외 대장 정보 DAO + * + *

상세 설명: 부과제외 대장 테이블에 접근하여 데이터를 조회하고 저장한다. + * + *

+ * ============ 변경 이력 ============
+ * 2023-06-23	JoJH 최초 작성
+ * ================================
+ * 
+ */ +@Mapper("levyExclMapper") +public interface LevyExclMapper extends AbstractMapper { + + /**지정한 조건에 따라 부과제외 대장 목록을 조회하여 반환한다. + * @param req 부과제외 대장 조회 조건 + * @return 부과제외 대장 목록 + */ + List selectLevyExclList(LevyExclQuery req); + + /**지정한 조건에 따라 부과제외 대장 객체들을 조회하여 반환한다. + * @param req 부과제외 대장 조회 조건 + * @return 부과제외 대장 객체 정보 + */ + List selectLevyExcls(LevyExclQuery req); + + /**지정한 조건에 따라 부과제외 대장 정보를 조회하여 반환한다. + * @param req 부과제외 대장 조회 조건 + * @return 부과제외 대장 정보 + */ + default DataObject selectLevyExclInfo(LevyExclQuery req) { + // 삭제 여부 확인 + if (req.getDelYn() == null) { + req.setDelYn("N"); + } + // 기본 정렬 + if (req.getOrderBy() == null) { + req.setOrderBy("LE.LEVY_EXCL_ID DESC"); + } + + List levyExcls = selectLevyExcls(req); + + return !levyExcls.isEmpty() ? levyExcls.get(0) : null; + } + + /**부과제외 대장 정보를 등록한다. + * @param params 파라미터 + *
  • "levyExcl" - 부과제외 대장
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int insertLevyExcl(LevyExcl levyExcl); + + /**부과제외 대장 정보를 수정한다. + * @param params 파라미터 + *
  • "levyExcl" - 부과제외 대장
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int updateLevyExcl(LevyExcl levyExcl); + + /**부과제외 대장 정보를 삭제한다. + * @param params 파라미터 + *
  • "levyExcl" - 부과제외 대장
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int deleteLevyExcl(LevyExcl levyExcl); + + /**단속(TB_CRDN) 대장의 주차가능결과코드를 수정한다. + * @param crdn 단속 대장 + * @return 저장된 정보수 + */ + int updatePrkPsbltyRsltCd(Crdn crdn); + +} diff --git a/src/main/java/cokr/xit/fims/excl/service/bean/LevyExclBean.java b/src/main/java/cokr/xit/fims/excl/service/bean/LevyExclBean.java new file mode 100644 index 00000000..fcf7a358 --- /dev/null +++ b/src/main/java/cokr/xit/fims/excl/service/bean/LevyExclBean.java @@ -0,0 +1,288 @@ +package cokr.xit.fims.excl.service.bean; + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Component; + +import cokr.xit.fims.cmmn.CmmnUtil; +import cokr.xit.fims.cmmn.CrdnSttsHstry; +import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean; +import cokr.xit.fims.crdn.Crdn; +import cokr.xit.fims.excl.LevyExcl; +import cokr.xit.fims.excl.LevyExclQuery; +import cokr.xit.fims.excl.dao.LevyExclMapper; +import cokr.xit.fims.rdca.Rdamt; +import cokr.xit.fims.rdca.service.bean.RdamtBean; +import cokr.xit.foundation.component.AbstractBean; +import cokr.xit.foundation.data.DataObject; + +/**부과제외 대장 정보 관리 Bean + * + *

상세 설명: 부과제외 대장 DAO(Excl01Mapper)를 사용해 업무 기능을 구현한 클래스 + * + *

+ * ============ 변경 이력 ============
+ * 2023-06-23	JoJH 최초 작성
+ * ================================
+ * 
+ */ +@Component("levyExclBean") +public class LevyExclBean extends AbstractBean { + + /** 부과제외 대장 정보 DAO */ + @Resource(name="levyExclMapper") + private LevyExclMapper levyExclMapper; + + /** 단속 상태 이력 정보 Bean */ + @Resource(name="crdnSttsHstryBean") + private CrdnSttsHstryBean crdnSttsHstryBean; + + /** 감액 대장 정보 Bean */ + @Resource(name="rdamtBean") + private RdamtBean rdamtBean; + + /**지정한 조건에 따라 부과제외 대장 목록을 조회하여 반환한다. + * @param req 부과제외 조회 조건 + * @return 부과제외 대장 목록 + */ + public List getLevyExclList(LevyExclQuery req) { + // 삭제 여부 확인 + if (req.getDelYn() == null) { + req.setDelYn("N"); + } + // 정렬 확인 + if (req.getOrderBy() == null) { + if (req.getBy() == null) { + req.setOrderBy("REG_DT"); + } else { + req.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(req.getBy())); + } + } + + return levyExclMapper.selectLevyExclList(req); + } + + /**지정한 조건에 따라 부과제외 이력 객체들을 반환한다. + * @param req 부과제외 조회 조건 + * @return 부과제외 객체 목록 + */ + public List getLevyExcls(LevyExclQuery req) { + // 삭제 여부 확인 + if (req.getDelYn() == null) { + req.setDelYn("N"); + } + // 정렬 확인 + if (req.getOrderBy() == null) { + req.setOrderBy("LE.LEVY_EXCL_ID DESC"); + } + + return levyExclMapper.selectLevyExcls(req); + } + + /**지정한 부과제외 ID의 부과제외 정보를 반환한다. + * @param req 부과제외 조회 조건 + * @return 부과제외 정보 + */ + public DataObject getLevyExclInfo(LevyExclQuery req) { + DataObject info = levyExclMapper.selectLevyExclInfo(req); + + // 신규 부과제외 등록일 경우 부과제외 구분코드를 입력한다. + if (req.getCallPurpose().equals("create")) { + info.set("LEVY_EXCL_SE_CD", req.getLevyExclSeCd()); + } + + return info; + } + + /**부과제외 대장 정보를 등록한다. + * @param excl 부과제외 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String createLevyExcl(LevyExcl levyExcl) { + // 변수 선언 + int rtnNocs = -1; // 처리 결과 건수 + String rtnMsg = ""; // 처리 결과 메시지 + + // 단속 ID로 단속, 부과제외 정보 조회 + DataObject levyExclInfo = levyExclMapper.selectLevyExclInfo(new LevyExclQuery().setCrdnId(levyExcl.getCrdnId())); + + // 등록 대상 자료 검증 + if (!levyExclInfo.string("LEVY_EXCL_ID").equals("")) { // 부과제외 ID가 있다면 이미 부과제외 자료가 존재하므로 종료.. + rtnMsg = "[F] 작업중 이미 등록된 부과제외 자료가 존재합니다."; + return rtnMsg; + } + if (!levyExclInfo.string("CVLCPT_LINK_ID").equals("")) { // 민원 ID + if (levyExclInfo.string("CVLCPT_PRCS_CD").equals("00")) { // 민원 처리상태 확인 + rtnMsg = "[F] 작업중 단속 민원 자료가 처리 되지 않았습니다.
단속 민원 업무를 먼저 처리 하시기 바랍니다."; + return rtnMsg; + } + } + if (levyExcl.getLevyExclSeCd().contains("1,2")) { // 비부과(서손), 계고 + if (levyExclInfo.number("CRDN_STTS_CD").intValue() >= 51) { // 단속상태코드가 부과(51) 보다 크다면, 비부과 또는 계고 등록을 할 수 없다. + rtnMsg = "[F] 작업중 오류가 발생하였습니다.
현재 자료의 단속상태가 " + levyExclInfo.string("CRDN_STTS_NM") + " 상태 입니다."; + return rtnMsg; + } + } else if (levyExcl.getLevyExclSeCd().equals("3")) { // 부과취소 + if (levyExclInfo.number("CRDN_STTS_CD").intValue() < 51) { // 단속상태코드가 부과(51) 보다 작다면, 전액감액 등록 할 수 없다. + rtnMsg = "[F] 작업중 오류가 발생하였습니다.
현재 자료의 단속상태가 " + levyExclInfo.string("CRDN_STTS_NM") + " 상태 입니다."; + return rtnMsg; + } + if (levyExclInfo.string("LEVY_ID").equals("")) { // 부과(TB_LEVY) 정보 확인 + rtnMsg = "[F] 작업 중 부과 자료가 존재하지 않습니다.
비부과로 처리 하시기 바랍니다."; + return rtnMsg; + } + } + + // 부과취소(전액감액)일 경우 부과(TB_LEVY)에 감액금액 입력이 필요.. + if (levyExcl.getLevyExclSeCd().equals("3")) { + // 감액(TB_RDAMT) 등록 + Rdamt rdamt = new Rdamt(); + rdamt.setLevyId(levyExclInfo.string("LEVY_ID")); // 부과 ID + rdamt.setRdamtYmd(levyExcl.getLevyExclYmd()); // 감액 일자 + rdamt.setRdamtSeCd("02"); // 감액 구분 코드 FIM085 - 02:부과취소 + rdamt.setRdamtRsnCd(levyExcl.getLevyExclRsnCd()); // 감액 사유 코드 + + rtnMsg = rdamtBean.createRdamt(rdamt); + if (!rtnMsg.contains("[S]")) { + throw new RuntimeException(rtnMsg.replace("[F]", "")); // 예외를 발생시켜서 DB Rollback + } + } + + // 부과제외(TB_LEVY_EXCL) 대장을 등록한다. + rtnNocs = levyExclMapper.insertLevyExcl(levyExcl); + if (rtnNocs != 1) { + throw new RuntimeException("부과제외 정보 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 표지정보 확인여부가 미확인(0)이면 -> 조회미대상(9) 으로 + if (levyExclInfo.string("PRK_PSBLTY_RSLT_CD").equals("0")) { // 주차 가능 결과 코드(FIM034) - 0: 미확인 + Crdn crdn = new Crdn(); + crdn.setCrdnId(levyExclInfo.string("CRDN_ID")); // 단속 ID + crdn.setPrkPsbltyRsltCd("9"); // 주차 가능 결과 코드(FIM034) 9: 조회미대상 + + rtnNocs = levyExclMapper.updatePrkPsbltyRsltCd(crdn); + if (rtnNocs != 1) { + throw new RuntimeException("부과제외 삭제 작업 중 단속 대장의 표지정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } + + // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. + String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD) + if (levyExcl.getLevyExclSeCd().equals("1")) { // 비부과 + newCrdnSttsCd = "81"; // 비부과(서손) + } else if (levyExcl.getLevyExclSeCd().equals("2")) { // 계고 + newCrdnSttsCd = "83"; // 계고 + } else if (levyExcl.getLevyExclSeCd().equals("3")) { // 부과취소(전액감액) + newCrdnSttsCd = "80"; // 부과취소 + } + + // 단속상태이력(TB_CRDN_STTS_HSTRY) + CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); + crdnSttsHstry.setCrdnId(levyExclInfo.string("CRDN_ID")); + crdnSttsHstry.setBfrSttsCd(levyExclInfo.string("CRDN_STTS_CD")); + crdnSttsHstry.setBfrSttsChgDt(levyExclInfo.string("CRDN_STTS_CHG_DT")); + crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); + crdnSttsHstry.setTaskDtlId(levyExcl.getLevyExclId()); + + boolean rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); + if (!rtnScs) { + throw new RuntimeException("부과제외 등록 작업 중 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**부과제외 대장 정보를 수정한다. + * @param excl 부과제외 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String updateLevyExcl(LevyExcl levyExcl) { + // 부과제외(TB_LEVY_EXCL) 대장을 수정한다. + int rtnNocs = levyExclMapper.updateLevyExcl(levyExcl); + if (rtnNocs != 1) { + throw new RuntimeException("부과제외 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**부과제외 대장 정보를 삭제한다. + * @param excl 부과제외 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String removeLevyExcl(LevyExcl levyExcl) { + // 변수 선언 + int rtnNocs = -1; // 처리 결과 건수 + String rtnMsg = ""; // 처리 결과 메시지 + + // 부과제외(TB_LEVY_EXCL) 정보를 조회한다. + DataObject levyExclInfo = levyExclMapper.selectLevyExclInfo(new LevyExclQuery().setLevyExclId(levyExcl.getLevyExclId())); + + // 삭제 대상 자료 검증 + if (levyExclInfo.string("LEVY_EXCL_ID").equals("")) { + rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
부과제외 자료가 존재하지 않습니다."; + return rtnMsg; + } + if (levyExclInfo.string("LEVY_EXCL_SE_CD").equals("1") && !levyExclInfo.string("CRDN_STTS_CD").equals("81")) { // 비부과(서손) + rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
현재 자료의 단속 상태가 " + levyExclInfo.string("CRDN_STTS_NM") + " 이(가) 아닙니다."; + return rtnMsg; + } else if (levyExclInfo.string("LEVY_EXCL_SE_CD").equals("2") && !("83,84").contains(levyExclInfo.string("CRDN_STTS_CD"))) { // 계고 + rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
현재 자료의 단속 상태가 " + levyExclInfo.string("CRDN_STTS_NM") + " 이(가) 아닙니다."; + return rtnMsg; + } else if (levyExclInfo.string("LEVY_EXCL_SE_CD").equals("3") && !levyExclInfo.string("CRDN_STTS_CD").equals("80")) { // 부과취소 + rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
현재 자료의 단속 상태가 " + levyExclInfo.string("CRDN_STTS_NM") + " 이(가) 아닙니다."; + return rtnMsg; + } + + // 부과제외(TB_LEVY_EXCL) 대장을 삭제한다. + rtnNocs = levyExclMapper.deleteLevyExcl(levyExcl); + if (rtnNocs != 1) { + throw new RuntimeException("부과제외 정보 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장에 부과제외 이력삭제 및 부과제외삭제 이력을 등록한다. + String deltCrdnSttsCd = ""; + if (levyExclInfo.string("CRDN_STTS_CD").equals("80")) { // 임시 + throw new RuntimeException("부과취소는 부과제외 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } else if (levyExclInfo.string("CRDN_STTS_CD").equals("81")) { + deltCrdnSttsCd = "91"; // 비부과(서손) 삭제 + } else if (("83,84").contains(levyExclInfo.string("CRDN_STTS_CD"))) { + deltCrdnSttsCd = "93"; // 계고 삭제 + } + + boolean rtnScs = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(levyExclInfo.string("CRDN_ID"), levyExclInfo.string("CRDN_STTS_CD"), deltCrdnSttsCd, levyExcl.getDelRsn(), true); + if (!rtnScs) { + throw new RuntimeException("부과제외 삭제 작업 중 단속상태이력 삭제 및 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 부과제외 구분이 비부과(서손)일 경우 + if (levyExclInfo.string("LEVY_EXCL_SE_CD").equals("1")) { + // 표지정보 확인여부가 조회미대상이면 -> 미확인 으로 + // 혹시 차적조회가 안되었으면? 놔두자 차적조회되면 그 때 표지정보 BJ_Send가 처리할테니 + if (levyExclInfo.string("PRK_PSBLTY_RSLT_CD").equals("9")) { // 주차 가능 결과 코드 - 9 조회 미대상 + Crdn crdn = new Crdn(); + crdn.setCrdnId(levyExclInfo.string("CRDN_ID")); // 단속 ID + crdn.setPrkPsbltyRsltCd("0"); // 주차 가능 결과 코드 - 0 미확인 + + rtnNocs = levyExclMapper.updatePrkPsbltyRsltCd(crdn); + if (rtnNocs != 1) { + throw new RuntimeException("부과제외 삭제 작업 중 단속 대장의 표지정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } + } + + return "[S] 작업이 정상 처리 되었습니다."; + } + +} diff --git a/src/main/java/cokr/xit/fims/levy/Levy.java b/src/main/java/cokr/xit/fims/levy/Levy.java new file mode 100644 index 00000000..93ee0ec2 --- /dev/null +++ b/src/main/java/cokr/xit/fims/levy/Levy.java @@ -0,0 +1,466 @@ +package cokr.xit.fims.levy; + +import cokr.xit.foundation.AbstractEntity; +import lombok.Getter; +import lombok.Setter; + +/** + * 부과 대장 + * @author JoJH + */ +@Getter +@Setter +public class Levy extends AbstractEntity { + + /** + * 부과 ID + */ + private String levyId; + + /** + * 시군구 코드 + */ + private String sggCd; + + /** + * 업무 구분 코드 + */ + private String taskSeCd; + + /** + * 단속 ID + */ + private String crdnId; + + /** + * 기관 코드 + */ + private String instCd; + + /** + * 부서 코드 + */ + private String deptCd; + + /** + * 회계 연도 + */ + private String fyr; + + /** + * 회계 구분 코드 + */ + private String acntgSeCd; + + /** + * 세목 코드 + */ + private String txitmCd; + + /** + * 운영 항목 코드 + */ + private String operItemCd; + + /** + * 특별회계 사업 코드 + */ + private String spclBizCd; + + /** + * 부과 번호 + */ + private String levyNo; + + /** + * 분납 일련번호 + */ + private String ispySn; + + /** + * 부과 구분 코드 + */ + private String levySeCd; + + /** + * 통합 구분 코드 + */ + private String untySeCd; + + /** + * 감경 구분 코드 + */ + private String rdctSeCd; + + /** + * 분납 구분 명 + */ + private String ispySeNm; + + /** + * 부과 일자 + */ + private String levyYmd; + + /** + * 최초 납기 일자 + */ + private String frstDudtYmd; + + /** + * 납기 일자 + */ + private String dudtYmd; + + /** + * 과태료 금액 + */ + private Integer ffnlgAmt; + + /** + * 부과 본세 + */ + private Integer levyPcptax; + + /** + * 부과 가산금 + */ + private Integer levyAdamt; + + /** + * 분납 이자 + */ + private Integer ispyInt; + + /** + * 수납 본세 + */ + private Integer rcvmtPcptax; + + /** + * 수납 가산금 + */ + private Integer rcvmtAdamt; + + /** + * 감액 본세 + */ + private Integer rdamtPcptax; + + /** + * 감액 가산금 + */ + private Integer rdamtAdamt; + + /** + * 합계 금액 + */ + private Integer sumAmt; + + /** + * 납기 후 일자 + */ + private String dudtAftrYmd; + + /** + * 납기 후 금액 + */ + private Integer dudtAftrAmt; + + /** + * 과세 물건 + */ + private String txtnThing; + + /** + * 관리 아이템1 + */ + private String mngItem1; + + /** + * 관리 아이템2 + */ + private String mngItem2; + + /** + * 관리 아이템3 + */ + private String mngItem3; + + /** + * 관리 아이템4 + */ + private String mngItem4; + + /** + * 관리 아이템5 + */ + private String mngItem5; + + /** + * 관리 아이템6 + */ + private String mngItem6; + + /** + * 체납 사유 코드 + */ + private String npmntRsnCd; + + /** + * 수납 일자 + */ + private String rcvmtYmd; + + /** + * 납부 방법 구분 코드 + */ + private String payMthdSeCd; + + /** + * 압류 일자 + */ + private String szrYmd; + + /** + * 압류 물건 + */ + private String szrThing; + + /** + * 대체 압류 자동차등록번호 + */ + private String rpmSzrVhrno; + + /** + * 압류 해제 일자 + */ + private String szrRmvYmd; + + /** + * 압류 해제 사유 + */ + private String szrRmvRsn; + + /** + * 기타 내용 + */ + private String etcCn; + + /** + * 전자납부번호 + */ + private String epayno; + + /** + * 은행 명 + */ + private String bankNm; + + /** + * 가상 계좌번호 + */ + private String vrActno; + + /** + * 은행 명 2 + */ + private String bankNm2; + + /** + * 가상 계좌번호 2 + */ + private String vrActno2; + + /** + * 은행 명 3 + */ + private String bankNm3; + + /** + * 가상 계좌번호 3 + */ + private String vrActno3; + + /** + * 은행 명 4 + */ + private String bankNm4; + + /** + * 가상 계좌번호 4 + */ + private String vrActno4; + + /** + * 은행 명 5 + */ + private String bankNm5; + + /** + * 가상 계좌번호 5 + */ + private String vrActno5; + + /** + * 은행 명 6 + */ + private String bankNm6; + + /** + * 가상 계좌번호 6 + */ + private String vrActno6; + + /** + * 은행 명 7 + */ + private String bankNm7; + + /** + * 가상 계좌번호 7 + */ + private String vrActno7; + + /** + * 은행 명 8 + */ + private String bankNm8; + + /** + * 가상 계좌번호 8 + */ + private String vrActno8; + + /** + * 은행 명 9 + */ + private String bankNm9; + + /** + * 가상 계좌번호 9 + */ + private String vrActno9; + + /** + * 은행 명 10 + */ + private String bankNm10; + + /** + * 가상 계좌번호 10 + */ + private String vrActno10; + + /** + * 은행 명 11 + */ + private String bankNm11; + + /** + * 가상 계좌번호 11 + */ + private String vrActno11; + + /** + * 은행 명 12 + */ + private String bankNm12; + + /** + * 가상 계좌번호 12 + */ + private String vrActno12; + /** + * 은행 명 13 + */ + private String bankNm13; + + /** + * 가상 계좌번호 13 + */ + private String vrActno13; + /** + * 은행 명 14 + */ + private String bankNm14; + + /** + * 가상 계좌번호 14 + */ + private String vrActno14; + /** + * 은행 명 15 + */ + private String bankNm15; + + /** + * 가상 계좌번호 15 + */ + private String vrActno15; + /** + * 은행 명 16 + */ + private String bankNm16; + + /** + * 가상 계좌번호 16 + */ + private String vrActno16; + /** + * 은행 명 17 + */ + private String bankNm17; + + /** + * 가상 계좌번호 17 + */ + private String vrActno17; + /** + * 은행 명 18 + */ + private String bankNm18; + + /** + * 가상 계좌번호 18 + */ + private String vrActno18; + /** + * 은행 명 19 + */ + private String bankNm19; + + /** + * 가상 계좌번호 19 + */ + private String vrActno19; + /** + * 은행 명 20 + */ + private String bankNm20; + + /** + * 가상 계좌번호 20 + */ + private String vrActno20; + /** + * 세외수입 부과 키 + */ + private String nxrpLevyKey; + + /** + * 삭제 여부 + */ + private String delYn; + + /** + * 삭제 사유 + */ + private String delRsn; + + /** + * 단속 Ids + */ + private String[] crdnIds; + +} diff --git a/src/main/java/cokr/xit/fims/levy/LevyQuery.java b/src/main/java/cokr/xit/fims/levy/LevyQuery.java new file mode 100644 index 00000000..a92e63de --- /dev/null +++ b/src/main/java/cokr/xit/fims/levy/LevyQuery.java @@ -0,0 +1,428 @@ +package cokr.xit.fims.levy; + +import cokr.xit.fims.cmmn.CmmnQuery; + +/**과태료 부과 대장 정보 조회 요청 + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2023-08-30	JoJH 최초 작성
+ * ================================
+ * 
+ */ +public class LevyQuery extends CmmnQuery { + + private static final long serialVersionUID = 1L; + + // ID + private String[] crdnIds; // 단속 Ids + private String crdnId; // 단속 ID + private String[] levyIds; // 부과 Ids + private String levyId; // 부과 ID + private String[] rdctIds; // 감경 Ids + private String rdctId; // 감경 ID + // 검색 조건 + private String schFyr; // 회계연도 + private String schLevyNoFrom; // 부과 번호 시작 + private String schLevyNoTo; // 부과 번호 종료 + private String schRdctSeCd; // 감경 구분 코드 + private String schLevyYmdFrom; // 부과 일자 시작 + private String schLevyYmdTo; // 부과 일자 종료 + private String schRdctYmdFrom; // 감경 일자 시작 + private String schRdctYmdTo; // 감경 일자 종료 + private String schRdctRsnCd; // 감경 사유 코드 + private String schCrdnYmdFrom; // 단속 일자 시작 + private String schCrdnYmdTo; // 단속 일자 종료 + private String schVhrno; // 차량번호 + private String schCrdnSttsCd; // 단속 상태 코드 + private String schVltnCd; // 위반 코드 + private String schCvlcptRcptYmdFrom; // 민원 접수 일자 시작 + private String schCvlcptRcptYmdTo; // 민원 접수 일자 종료 + private String schCvlcptPrcsCmptnDtFrom; // 민원 처리 완료 일시 시작 + private String schCvlcptPrcsCmptnDtTo; // 민원 처리 완료 일시 종료 + private String schCvlcptPrcsPic; // 민원 처리 담당자 + private String schRtpyrNo; // 납부자 번호 + private String schRtpyrNm; // 납부자 명 + // 상세 검색 조건 + + // ETC + private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회). + private String delRsn; // 삭제 사유 + private String tnocs; // 총 건수 + private String gramtFfnlgAmt; // 총 금액 + private String gramtAdvntceAmt; // 총 감경부과 금액 + // 부과 등록 + private String fyr; // 회계연도 + private String acntgSeCd; // 회계 구분 코드 + private String txitmCd; // 세목 코드 + private String operItemCd; // 운영 항목 코드 + private String levyYmd; // 부과 일자 + private String dudtYmd; // 납기 일자 + private String crdnSttsCd; // 단속 상태 코드 + + // ID + public String[] getCrdnIds() { + return ifEmpty(crdnIds, () -> null); + } + + public T setCrdnIds(String... crdnIds) { + this.crdnIds = crdnIds; + return self(); + } + + public String getCrdnId() { + return ifEmpty(crdnId, () -> null); + } + + public T setCrdnId(String crdnId) { + this.crdnId = crdnId; + return self(); + } + + public String[] getLevyIds() { + return ifEmpty(levyIds, () -> null); + } + + public T setLevyIds(String... levyIds) { + this.levyIds = levyIds; + return self(); + } + + public String getLevyId() { + return ifEmpty(levyId, () -> null); + } + + public T setLevyId(String levyId) { + this.levyId = levyId; + return self(); + } + + public String[] getRdctIds() { + return ifEmpty(rdctIds, () -> null); + } + + public T setRdctIds(String... rdctIds) { + this.rdctIds = rdctIds; + return self(); + } + + public String getRdctId() { + return ifEmpty(rdctId, () -> null); + } + + public T setRdctId(String rdctId) { + this.rdctId = rdctId; + return self(); + } + + // 검색 조건 ////////////////////////////////////////////////////////////////// + public String getSchRdctYmdFrom() { + return ifEmpty(schRdctYmdFrom, () -> null); + } + + public T setSchRdctYmdFrom(String schRdctYmdFrom) { + this.schRdctYmdFrom = schRdctYmdFrom; + return self(); + } + + public String getSchRdctYmdTo() { + return ifEmpty(schRdctYmdTo, () -> null); + } + + public T setSchRdctYmdTo(String schRdctYmdTo) { + this.schRdctYmdTo = schRdctYmdTo; + return self(); + } + + public String getSchRdctRsnCd() { + return ifEmpty(schRdctRsnCd, () -> null); + } + + public T setSchRdctRsnCd(String schRdctRsnCd) { + this.schRdctRsnCd = schRdctRsnCd; + return self(); + } + + public String getSchFyr() { + return ifEmpty(schFyr, () -> null); + } + + public T setSchFyr(String schFyr) { + this.schFyr = schFyr; + return self(); + } + + public String getSchLevyNoFrom() { + return ifEmpty(schLevyNoFrom, () -> null); + } + + public T setSchLevyNoFrom(String schLevyNoFrom) { + this.schLevyNoFrom = schLevyNoFrom; + return self(); + } + + public String getSchLevyNoTo() { + return ifEmpty(schLevyNoTo, () -> null); + } + + public T setSchLevyNoTo(String schLevyNoTo) { + this.schLevyNoTo = schLevyNoTo; + return self(); + } + + public String getSchRdctSeCd() { + return ifEmpty(schRdctSeCd, () -> null); + } + + public T setSchRdctSeCd(String schRdctSeCd) { + this.schRdctSeCd = schRdctSeCd; + return self(); + } + + public String getSchLevyYmdFrom() { + return ifEmpty(schLevyYmdFrom, () -> null); + } + + public T setSchLevyYmdFrom(String schLevyYmdFrom) { + this.schLevyYmdFrom = schLevyYmdFrom; + return self(); + } + + public String getSchLevyYmdTo() { + return ifEmpty(schLevyYmdTo, () -> null); + } + + public T setSchLevyYmdTo(String schLevyYmdTo) { + this.schLevyYmdTo = schLevyYmdTo; + return self(); + } + + public String getSchCrdnYmdFrom() { + return ifEmpty(schCrdnYmdFrom, () -> null); + } + + public T setSchCrdnYmdFrom(String schCrdnYmdFrom) { + this.schCrdnYmdFrom = schCrdnYmdFrom; + return self(); + } + + public String getSchCrdnYmdTo() { + return ifEmpty(schCrdnYmdTo, () -> null); + } + + public T setSchCrdnYmdTo(String schCrdnYmdTo) { + this.schCrdnYmdTo = schCrdnYmdTo; + return self(); + } + + public String getSchVhrno() { + return ifEmpty(schVhrno, () -> null); + } + + public T setSchVhrno(String schVhrno) { + this.schVhrno = schVhrno; + return self(); + } + + public String getSchCrdnSttsCd() { + return ifEmpty(schCrdnSttsCd, () -> null); + } + + public T setSchCrdnSttsCd(String schCrdnSttsCd) { + this.schCrdnSttsCd = schCrdnSttsCd; + return self(); + } + + public String getSchVltnCd() { + return ifEmpty(schVltnCd, () -> null); + } + + public T setSchVltnCd(String schVltnCd) { + this.schVltnCd = schVltnCd; + return self(); + } + + public String getSchCvlcptRcptYmdFrom() { + return ifEmpty(schCvlcptRcptYmdFrom, () -> null); + } + + public T setSchCvlcptRcptYmdFrom(String schCvlcptRcptYmdFrom) { + this.schCvlcptRcptYmdFrom = schCvlcptRcptYmdFrom; + return self(); + } + + public String getSchCvlcptRcptYmdTo() { + return ifEmpty(schCvlcptRcptYmdTo, () -> null); + } + + public T setSchCvlcptRcptYmdTo(String schCvlcptRcptYmdTo) { + this.schCvlcptRcptYmdTo = schCvlcptRcptYmdTo; + return self(); + } + + public String getSchCvlcptPrcsCmptnDtFrom() { + return ifEmpty(schCvlcptPrcsCmptnDtFrom, () -> null); + } + + public T setSchCvlcptPrcsCmptnDtFrom(String schCvlcptPrcsCmptnDtFrom) { + this.schCvlcptPrcsCmptnDtFrom = schCvlcptPrcsCmptnDtFrom; + return self(); + } + + public String getSchCvlcptPrcsCmptnDtTo() { + return ifEmpty(schCvlcptPrcsCmptnDtTo, () -> null); + } + + public T setSchCvlcptPrcsCmptnDtTo(String schCvlcptPrcsCmptnDtTo) { + this.schCvlcptPrcsCmptnDtTo = schCvlcptPrcsCmptnDtTo; + return self(); + } + + public String getSchCvlcptPrcsPic() { + return ifEmpty(schCvlcptPrcsPic, () -> null); + } + + public T setSchCvlcptPrcsPic(String schCvlcptPrcsPic) { + this.schCvlcptPrcsPic = schCvlcptPrcsPic; + return self(); + } + + public String getSchRtpyrNo() { + return ifEmpty(schRtpyrNo, () -> null); + } + + public T setSchRtpyrNo(String schRtpyrNo) { + this.schRtpyrNo = schRtpyrNo; + return self(); + } + + public String getSchRtpyrNm() { + return ifEmpty(schRtpyrNm, () -> null); + } + + public T setSchRtpyrNm(String schRtpyrNm) { + this.schRtpyrNm = schRtpyrNm; + return self(); + } + // 검색 조건 ////////////////////////////////////////////////////////////////// + + // 상세 검색 조건 /////////////////////////////////////////////////////////////// + + // 상세 검색 조건 /////////////////////////////////////////////////////////////// + + // ETC //////////////////////////////////////////////////////////////////// + public String getCallPurpose() { + return ifEmpty(callPurpose, () -> null); + } + + public T setCallPurpose(String callPurpose) { + this.callPurpose = callPurpose; + return self(); + } + + public String getDelRsn() { + return ifEmpty(delRsn, () -> null); + } + + public T setDelRsn(String delRsn) { + this.delRsn = delRsn; + return self(); + } + // ETC ///////////////////////////////////////////////////////////////////// + + public String getTnocs() { + return ifEmpty(tnocs, () -> null); + } + + public T setTnocs(String tnocs) { + this.tnocs = tnocs; + return self(); + } + + public String getGramtFfnlgAmt() { + return ifEmpty(gramtFfnlgAmt, () -> null); + } + + public T setGramtFfnlgAmt(String gramtFfnlgAmt) { + this.gramtFfnlgAmt = gramtFfnlgAmt; + return self(); + } + + public String getGramtAdvntceAmt() { + return ifEmpty(gramtAdvntceAmt, () -> null); + } + + public T setGramtAdvntceAmt(String gramtAdvntceAmt) { + this.gramtAdvntceAmt = gramtAdvntceAmt; + return self(); + } + // ETC //////////////////////////////////////////////////////////////////// + + // 부과 등록 ////////////////////////////////////////////////////////////////// + public String getFyr() { + return ifEmpty(fyr, () -> null); + } + + public T setFyr(String fyr) { + this.fyr = fyr; + return self(); + } + + public String getAcntgSeCd() { + return ifEmpty(acntgSeCd, () -> null); + } + + public T setAcntgSeCd(String acntgSeCd) { + this.acntgSeCd = acntgSeCd; + return self(); + } + + public String getTxitmCd() { + return ifEmpty(txitmCd, () -> null); + } + + public T setTxitmCd(String txitmCd) { + this.txitmCd = txitmCd; + return self(); + } + + public String getOperItemCd() { + return ifEmpty(operItemCd, () -> null); + } + + public T setOperItemCd(String operItemCd) { + this.operItemCd = operItemCd; + return self(); + } + + public String getLevyYmd() { + return ifEmpty(levyYmd, () -> null); + } + + public T setLevyYmd(String levyYmd) { + this.levyYmd = levyYmd; + return self(); + } + + public String getDudtYmd() { + return ifEmpty(dudtYmd, () -> null); + } + + public T setDudtYmd(String dudtYmd) { + this.dudtYmd = dudtYmd; + return self(); + } + + public String getCrdnSttsCd() { + return ifEmpty(crdnSttsCd, () -> null); + } + + public T setCrdnSttsCd(String crdnSttsCd) { + this.crdnSttsCd = crdnSttsCd; + return self(); + } + // 부과 등록 ////////////////////////////////////////////////////////////////// + +} diff --git a/src/main/java/cokr/xit/fims/levy/dao/LevyMapper.java b/src/main/java/cokr/xit/fims/levy/dao/LevyMapper.java new file mode 100644 index 00000000..23881c4f --- /dev/null +++ b/src/main/java/cokr/xit/fims/levy/dao/LevyMapper.java @@ -0,0 +1,140 @@ +package cokr.xit.fims.levy.dao; + +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.levy.Levy; +import cokr.xit.fims.levy.LevyQuery; + +/** 부과 대장 정보 DAO + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2023-08-30	JoJH 최초 작성
+ * ================================
+ * 
+ */ +@Mapper("levyMapper") +public interface LevyMapper extends AbstractMapper { + + /**지정한 조건에 따라 감경부과 대상 목록을 조회하여 반환한다.
+ * @param req 부과 대장 조회 조건 + * @return 부과 대장 목록 + */ + List selectRdctLevyTrgtList(LevyQuery req); + + /**지정한 조건에 따라 감경부과 대상 단속ID 목록을 조회하여 반환한다.
+ * @param req 부과 대장 조회 조건 + * @return 단속 ID 목록 + */ + List selectRdctLevyTrgtIds(LevyQuery req); + + /**지정한 조건에 따라 부과 대장 목록을 조회하여 반환한다.
+ * @param req 부과 대장 조회 조건 + * @return 부과 대장 목록 + */ + List selectLevyList(LevyQuery req); + + /**지정한 조건에 따라 부과 대장 객체들을 반환한다. + * @param req 부과 대장 조회 조건 + * @return 부과 대장 객체 목록 + */ + List selectLevys(LevyQuery req); + + /**지정한 부과 ID에 따라 부과 대장 객체를 반환한다. + * @param levyId 부과 ID + * @return 부과 대장 객체 + */ + default DataObject selectLevyInfo(LevyQuery req) { + // 삭제 여부 확인 + if (req.getDelYn() == null) { + req.setDelYn("N"); + } + // 기본 정렬 + if (req.getOrderBy() == null) { + req.setOrderBy("L.LEVY_ID DESC"); + } + + List levys = selectLevys(req); + + return !levys.isEmpty() ? levys.get(0) : null; + } + + /**지정한 단속 ID에 따라 단속 대장 객체를 반환한다. + * @param crdnId 단속 ID + * @return 고지 번호 + */ + String selectMaxLevyNo(LevyQuery req); + + /**부과 대장 정보를 등록한다. + * @param params 파라미터 + *
  • "levy" - 부과 대장
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int insertLevy(Levy levy); + + /**부과 대장 정보를 수정한다. + * @param params 파라미터 + *
  • "levy" - 부과 대장
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int updateLevy(Levy levy); + + /**부과 대장에 부과일자, 최초납기일자, 납기일자 정보를 수정한다. + * @param levy 부과 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + int updateRdctLevyYmd(Levy levy); + + /**부과 대장에 수납 금액 정보를 수정한다. + * @param levy 부과 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + int updateRcvmt(Levy levy); + + /**부과 대장에 감액 금액 정보를 수정한다. + * @param levy 부과 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + int updateRdamt(Levy levy); + + /**지정한 부과 대장을 삭제한다. + * @param params 파라미터 + *
  • "levy" - 부과 대장
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int deleteLevy(Levy levy); + + /**지정한 단속 ID로 단속 대장 객체를 반환한다. + * @param crdnId 단속 ID + * @return 단속 대장 객체 + */ + DataObject selectCrdn(String crdnId); + + /**지정한 조건에 따라 부과 대장 객체들을 반환한다. + * @param req 부과 대장 조회 조건 + * @return 부과 대장 객체 목록 + */ + DataObject selectLevyAmt(LevyQuery req); + +} diff --git a/src/main/java/cokr/xit/fims/rdca/Rdamt.java b/src/main/java/cokr/xit/fims/rdca/Rdamt.java new file mode 100644 index 00000000..964bfbb8 --- /dev/null +++ b/src/main/java/cokr/xit/fims/rdca/Rdamt.java @@ -0,0 +1,96 @@ +package cokr.xit.fims.rdca; + +import lombok.Getter; +import lombok.Setter; +import cokr.xit.foundation.AbstractEntity; + +/** + * 감액 대장 + * @author JoJH + */ +@Getter +@Setter +public class Rdamt extends AbstractEntity { + + /** + * 감액 ID + */ + private String rdamtId; + + /** + * 부과 ID + */ + private String levyId; + + /** + * 최종 본세 + */ + private Integer lastPcptax; + + /** + * 최종 가산금 + */ + private Integer lastAdamt; + + /** + * 감액 일자 + */ + private String rdamtYmd; + + /** + * 감액 구분 코드 + */ + private String rdamtSeCd; + + /** + * 감액 사유 코드 + */ + private String rdamtRsnCd; + + /** + * 감액 본세 + */ + private Integer rdamtPcptax; + + /** + * 감액 가산금 + */ + private Integer rdamtAdamt; + + /** + * 감액 취소 여부 + */ + private String rdamtRtrcnYn; + + /** + * 감액 취소 일자 + */ + private String rdamtRtrcnYmd; + + /** + * 감액 취소 사유 + */ + private String rdamtRtrcnRsn; + + /** + * 삭제 여부 + */ + private String delYn; + + /** + * 삭제 사유 + */ + private String delRsn; + + // 추가 ///////////////////////////////////////////////////////////////////// + /** + * 부과 Ids + */ + private String[] levyIds; + + /** + * 시군구 코드 + */ + private String sggCd; + +} diff --git a/src/main/java/cokr/xit/fims/rdca/RdamtQuery.java b/src/main/java/cokr/xit/fims/rdca/RdamtQuery.java new file mode 100644 index 00000000..af8eb1eb --- /dev/null +++ b/src/main/java/cokr/xit/fims/rdca/RdamtQuery.java @@ -0,0 +1,110 @@ +package cokr.xit.fims.rdca; + +import cokr.xit.fims.cmmn.CmmnQuery; + +/**감액 대장 정보 조회 요청 + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2024-02-01	JoJH 최초 작성
+ * ================================
+ * 
+ */ +public class RdamtQuery extends CmmnQuery { + + private static final long serialVersionUID = 1L; + + // ID + private String[] rdamtIds; // 감액 Ids + private String rdamtId; // 감액 ID + private String[] levyIds; // 부과 Ids + private String levyId; // 부과 ID + + // 검색 조건 + private String schLevyExclYmdFrom; // 부과제외_부과제외 일자 시작 + private String schLevyExclYmdTo; // 부과제외_부과제외 일자 종료 + // 상세 검색 조건 + + // 동적 검색 조건 + + // ETC + private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회). + private String delRsn; // 삭제 사유 + + + public String[] getRdamtIds() { + return ifEmpty(rdamtIds, () -> null); + } + + public T setRdamtIds(String... rdamtIds) { + this.rdamtIds = rdamtIds; + return self(); + } + + public String getRdamtId() { + return ifEmpty(rdamtId, () -> null); + } + + public T setRdamtId(String rdamtId) { + this.rdamtId = rdamtId; + return self(); + } + + public String[] getLevyIds() { + return ifEmpty(levyIds, () -> null); + } + + public T setLevyIds(String... levyIds) { + this.levyIds = levyIds; + return self(); + } + + public String getLevyId() { + return ifEmpty(levyId, () -> null); + } + + public T setLevyId(String levyId) { + this.levyId = levyId; + return self(); + } + + public String getSchLevyExclYmdFrom() { + return ifEmpty(schLevyExclYmdFrom, () -> null); + } + + public T setSchLevyExclYmdFrom(String schLevyExclYmdFrom) { + this.schLevyExclYmdFrom = schLevyExclYmdFrom; + return self(); + } + + public String getSchLevyExclYmdTo() { + return ifEmpty(schLevyExclYmdTo, () -> null); + } + + public T setSchLevyExclYmdTo(String schLevyExclYmdTo) { + this.schLevyExclYmdTo = schLevyExclYmdTo; + return self(); + } + + // ETC ///////////////////////////////////////////////////////////////////// + public String getCallPurpose() { + return ifEmpty(callPurpose, () -> null); + } + + public T setCallPurpose(String callPurpose) { + this.callPurpose = callPurpose; + return self(); + } + + public String getDelRsn() { + return ifEmpty(delRsn, () -> null); + } + + public T setDelRsn(String delRsn) { + this.delRsn = delRsn; + return self(); + } + // ETC ///////////////////////////////////////////////////////////////////// +} diff --git a/src/main/java/cokr/xit/fims/rdca/dao/RdamtMapper.java b/src/main/java/cokr/xit/fims/rdca/dao/RdamtMapper.java new file mode 100644 index 00000000..4b3ec010 --- /dev/null +++ b/src/main/java/cokr/xit/fims/rdca/dao/RdamtMapper.java @@ -0,0 +1,117 @@ +package cokr.xit.fims.rdca.dao; + +import java.util.List; +import java.util.Map; + +import org.egovframe.rte.psl.dataaccess.mapper.Mapper; + +import cokr.xit.foundation.component.AbstractMapper; +import cokr.xit.foundation.data.DataObject; +import cokr.xit.fims.rdca.Rdamt; +import cokr.xit.fims.rdca.RdamtQuery; + +/** 감액 대장 정보 DAO + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2024-02-01	JoJH 최초 작성
+ * ================================
+ * 
+ */ +@Mapper("rdamtMapper") +public interface RdamtMapper extends AbstractMapper { + + /**지정한 조건에 따라 감액 대장 목록을 조회하여 반환한다.
+ * @param req 감액 대장 조회 조건 + * @return 감액 대장 목록 + */ + List selectRdamtList(RdamtQuery req); + + /**지정한 조건에 따라 감액 대장 객체들을 반환한다. + * @param req 감액 대장 조회 조건 + * @return 감액 대장 객체 목록 + */ + List selectRdamts(RdamtQuery req); + + /**지정한 조건에 따라 감액 대장 객체 1건을 반환한다. + * @param req 감액 대장 조회 조건 + * @return 감액 대장 객체 + */ + default DataObject selectRdamtInfo(RdamtQuery req) { + // 삭제 여부 확인 + if (req.getDelYn() == null) { + req.setDelYn("N"); + } + // 기본 정렬 + if (req.getOrderBy() == null) { + req.setOrderBy("R.RDAMT_ID DESC"); + } + + List rdcamts = selectRdamts(req); + + return !rdcamts.isEmpty() ? rdcamts.get(0) : null; + } + + /**감액 대장 정보를 등록한다. + * @param params 파라미터 + *
  • "rdcamt" - 감액 대장
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int insertRdamt(Map params); + + /**감액 대장 정보를 등록한다. + * @param rdamt 감액 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + default boolean insert(Rdamt rdamt) { + return rdamt != null && insertRdamt(params().set("rdamt", rdamt)) == 1; + } + + /**감액 대장 정보를 수정한다. + * @param params 파라미터 + *
  • "rdamt" - 감액 대장
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int updateRdamt(Map params); + + /**감액 대장 정보를 수정한다. + * @param rdamt 감액 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + default boolean update(Rdamt rdamt) { + return rdamt != null && updateRdamt(params().set("rdamt", rdamt)) == 1; + } + + /**지정한 감액 대장을 삭제한다. + * @param params 파라미터 + *
  • "rdcamt" - 감액 대장
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int deleteRdamt(Map params); + + /**감액 대장 정보를 삭제한다. + * @param rdamt 감액 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + default boolean delete(Rdamt rdamt) { + return rdamt != null && deleteRdamt(params().set("rdamt", rdamt)) == 1; + } + +} diff --git a/src/main/java/cokr/xit/fims/rdca/service/bean/RdamtBean.java b/src/main/java/cokr/xit/fims/rdca/service/bean/RdamtBean.java new file mode 100644 index 00000000..66ec4624 --- /dev/null +++ b/src/main/java/cokr/xit/fims/rdca/service/bean/RdamtBean.java @@ -0,0 +1,207 @@ +package cokr.xit.fims.rdca.service.bean; + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Component; + +import cokr.xit.fims.cmmn.CmmnUtil; +import cokr.xit.fims.levy.Levy; +import cokr.xit.fims.levy.LevyQuery; +import cokr.xit.fims.levy.dao.LevyMapper; +import cokr.xit.fims.rdca.Rdamt; +import cokr.xit.fims.rdca.RdamtQuery; +import cokr.xit.fims.rdca.dao.RdamtMapper; +import cokr.xit.foundation.component.AbstractBean; +import cokr.xit.foundation.data.DataObject; + +/**감액 대장 정보 관리 Bean + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2024-02-01	JoJH 최초 작성
+ * ================================
+ * 
+ */ +@Component("rdamtBean") +public class RdamtBean extends AbstractBean { + + /** 감액 대장 정보 DAO */ + @Resource(name = "rdamtMapper") + private RdamtMapper rdamtMapper; + + /** 부과 대장 정보 DAO */ + @Resource(name = "levyMapper") + private LevyMapper levyMapper; + + /**지정한 조건에 따라 감액 대장 목록을 조회하여 반환한다. + * @param req 감액 대장 조회 조건 + * @return 감액 대장 목록 + */ + public List getRdamtList(RdamtQuery req) { + // 삭제 여부 확인 + if (req.getDelYn() == null) { + req.setDelYn("N"); + } + // 정렬 확인 + if (req.getOrderBy() == null) { + if (req.getBy() == null) { + req.setOrderBy("REG_DT"); + } else { + req.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(req.getBy())); + } + } + + return rdamtMapper.selectRdamtList(req); + } + + /**지정한 조건에 따라 감액 대장 객체들을 반환한다. + * @param req 감액 대장 조회 조건 + * @return 감액 대장 객체 목록 + */ + public List getRdamts(RdamtQuery req) { + // 삭제 여부 확인 + if (req.getDelYn() == null) { + req.setDelYn("N"); + } + if (req.getOrderBy() == null) { + req.setOrderBy("R.RDAMT_ID DESC"); + } + + return rdamtMapper.selectRdamts(req); + } + + /**지정한 조건에 따라 감액 대장 객체 1건을 반환한다. + * @param req 감액 대장 조회 조건 + * @return 감액 대장 객체 + */ + public DataObject getRdamtInfo(RdamtQuery req) { + DataObject rdamtInfo = new DataObject(); + +// if (req.getCallPurpose().equals("create")) { +// rdcamtInfo = rdcamtMapper.selectCrdnInfo(req); +// } else { + rdamtInfo = rdamtMapper.selectRdamtInfo(req); +// } + + return rdamtInfo; + } + + /**감액 대장 정보를 등록한다. + * @param rdcamt 감액 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String createRdamt(Rdamt rdamt) { + // 변수 선언 + boolean rtnScs = false; // DB 처리 결과 + int rtnNocs = -1; // 처리 결과 건수 + String rtnMsg = ""; // 처리 결과 메시지 + + // 부과 ID로 부과 정보 조회 + DataObject levyInfo = levyMapper.selectLevyAmt(new LevyQuery().setLevyId(rdamt.getLevyId())); + + // 부과(TB_LEVY) 대장 정보를 수정한다. + Levy levy = new Levy(); + levy.setLevyId(levyInfo.string("LEVY_ID")); // 부과 ID + + if ("02,03,04".contains(rdamt.getRdamtSeCd())) { // 02:부과취소, 03:이의신청수용, 04:법원이송 + // 수납금액이 있으면 오류 발생 + if (levyInfo.number("RCVMT_PCPTAX").intValue() + levyInfo.number("RCVMT_ADAMT").intValue() > 0) { + rtnMsg = "[F] 수납금액이 존재합니다.
부분 감액으로 진행하시기 바랍니다."; // 예외를 발생시켜서 DB Rollback + return rtnMsg; + } + + levy.setRdamtPcptax(levyInfo.number("LEVY_PCPTAX").intValue()); // 감액 본세 + levy.setRdamtAdamt(levyInfo.number("LEVY_ADAMT").intValue()); // 감액 가산금 + levy.setSumAmt(0); // 합계 금액 + levy.setDudtAftrAmt(0); // 납기 후 금액 + } else { + levy.setRdamtPcptax(levyInfo.number("RDAMT_PCPTAX").intValue() + rdamt.getRdamtPcptax()); // 감액 본세 + levy.setRdamtAdamt(levyInfo.number("RDAMT_ADAMT").intValue() + rdamt.getRdamtAdamt()); // 감액 가산금 + levy.setSumAmt(levyInfo.number("SUM_AMT").intValue() - rdamt.getRdamtPcptax() - rdamt.getRdamtAdamt()); // 합계 금액 + if (levy.getSumAmt() > 0) { + levy.setDudtAftrAmt(levyInfo.number("DUDT_AFTR_AMT").intValue() - rdamt.getRdamtPcptax() - rdamt.getRdamtAdamt()); // 납기 후 금액 + } else { + levy.setDudtAftrAmt(0); + } + } + + rtnNocs = levyMapper.updateRdamt(levy); + if (rtnNocs != 1) { + throw new RuntimeException("부과 대장의 감액 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 감액(TB_RDAMT) 대장 정보를 등록한다. + if ("02,03,04".contains(rdamt.getRdamtSeCd())) { // 02:부과취소, 03:이의신청수용, 04:법원이송 + rdamt.setLastPcptax(levyInfo.number("LEVY_PCPTAX").intValue()); + rdamt.setLastAdamt(levyInfo.number("LEVY_ADAMT").intValue()); + rdamt.setRdamtPcptax(levyInfo.number("LEVY_PCPTAX").intValue()); + rdamt.setRdamtAdamt(levyInfo.number("LEVY_ADAMT").intValue()); + } else { + rdamt.setLastPcptax(levyInfo.number("LAST_PCPTAX").intValue()); + rdamt.setLastAdamt(levyInfo.number("LAST_ADAMT").intValue()); + rdamt.setRdamtPcptax(rdamt.getRdamtPcptax()); + rdamt.setRdamtAdamt(rdamt.getRdamtAdamt()); + } + + rtnScs = rdamtMapper.insert(rdamt); + if (!rtnScs) { + throw new RuntimeException("감액 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**감액 대장 정보를 수정한다. + * @param rdcamt 감액 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String updateRdamt(Rdamt rdamt) { + // 변수 선언 + boolean rtnScs = false; // DB 처리 결과 + String rtnMsg = "[F] "; // 처리 결과 메시지 + + // 감액(TB_RDAMT) 대장 정보를 수정한다. + rtnScs = rdamtMapper.update(rdamt); + if (!rtnScs) { + throw new RuntimeException("감액 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + rtnMsg = "[S] 작업이 정상 처리 되었습니다."; + + return rtnMsg; + } + + /**감액 대장 정보를 삭제한다. + * @param rdcamt 감액 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String removeRdamt(Rdamt rdamt) { + // 변수 선언 + boolean rtnScs = false; // DB 처리 결과 + String rtnMsg = "[F] "; // 처리 결과 메시지 + + // 감액(TB_RDAMT) 대장 정보를 삭제한다. + rtnScs = rdamtMapper.delete(rdamt); + if (!rtnScs) { + throw new RuntimeException("감액 정보 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + rtnMsg = "[S] 작업이 정상 처리 되었습니다."; + + return rtnMsg; + } + +} diff --git a/src/main/resources/sql/mapper/fims/crdn/crdn-info-mapper.xml b/src/main/resources/sql/mapper/fims/crdn/crdn-info-mapper.xml new file mode 100644 index 00000000..76c9eb84 --- /dev/null +++ b/src/main/resources/sql/mapper/fims/crdn/crdn-info-mapper.xml @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/sql/mapper/fims/crdn/crdn-inst-mapper.xml b/src/main/resources/sql/mapper/fims/crdn/crdn-inst-mapper.xml new file mode 100644 index 00000000..4dcd3b1b --- /dev/null +++ b/src/main/resources/sql/mapper/fims/crdn/crdn-inst-mapper.xml @@ -0,0 +1,170 @@ + + + + + +/* 단속 대장 등록(crdnInstMapper.insertCrdn) */ + + + + + + + +INSERT INTO TB_CRDN ( + CRDN_ID + , SGG_CD + , CRDN_REG_SE_CD + , CRDN_INPT_SE_CD + , TASK_SE_CD + , CVLCPT_LINK_YN + , LINK_TBL_NM + , LINK_ID + , RTPYR_ID + , ADDR_SN + , CRDN_YMD + , CRDN_TM + , VHRNO + , CRDN_STDG_NM + , CRDN_ROAD_NM + , CRDN_PLC + , VLTN_ID + , GPS_X + , GPS_Y + , ATCH_FILE_CNT + , VIN + , VHCL_NM + , VHCL_COLR + , FFNLG_CRDN_AMT + , FFNLG_RDCRT + , FFNLG_AMT + , ADVNTCE_BGNG_YMD + , ADVNTCE_DUDT_YMD + , ADVNTCE_AMT + , OPNN_SBMSN_YN + , ETC_CN + , CRDN_STTS_CD + , CRDN_STTS_CHG_DT + , ADTN_AMT + , MINUS_AMT + , RCVMT_AMT + , BFR_CRDN_ID + , DEL_YN + , REG_DT + , RGTR + , MDFCN_DT + , MDFR + , DEL_DT + , DLTR + , DEL_RSN +) VALUES ( + #{crdnId} + , #{sggCd} + , #{crdnRegSeCd} + , #{crdnInptSeCd} + , #{taskSeCd} + , #{cvlcptLinkYn} + , #{linkTblNm} + , #{linkId} + , #{rtpyrId} + , #{addrSn} + , #{crdnYmd} + , #{crdnTm} + , #{vhrno} + , #{crdnStdgNm} + , #{crdnRoadNm} + , #{crdnPlc} + , (SELECT A.VLTN_ID + FROM TB_VLTN A + WHERE A.SGG_CD = #{sggCd} + AND A.TASK_SE_CD = #{taskSeCd} + AND A.VLTN_CD = #{vltnCd}) + , #{gpsX} + , #{gpsY} + , #{atchFileCnt} + , #{vin} + , #{vhclNm} + , #{vhclColr} + , #{ffnlgCrdnAmt} + , #{ffnlgRdcrt} + , #{ffnlgAmt} + , #{advntceBgngYmd} + , #{advntceDudtYmd} + , #{advntceAmt} + , #{opnnSbmsnYn} + , #{etcCn} + , #{crdnSttsCd} + , #{crdnSttsChgDt} + , #{adtnAmt} + , #{minusAmt} + , #{rcvmtAmt} + , #{bfrCrdnId} + , 'N' + , #{createdAt} + , #{createdBy} + , #{lastModified} + , #{modifiedBy} + , #{removedAt} + , #{removedBy} + , #{delRsn} +) + + + +/* 단속 부가 정보 등록(crdnInstMapper.insertCrdnAddition) */ +INSERT INTO TB_CRDN_ADI ( + CRDN_ID + , CRDN_SE_CD + , DTL_CRDN_PLC + , CRDN_SPAREA_CD + , CRDN_BGNG_TM + , CRDN_END_TM + , CRDN_SN + , MOSC_X + , MOSC_Y + , TOWNG_YN + , USE_FUEL_CD + , FFNLG_CARMDL_CD + , PRK_PSBLTY_RSLT_CD + , VLTN_NMTM + , OVTM_YN + , OVTM_PRTTN_YN + , TEAM_ID + , DEL_YN + , REG_DT + , RGTR + , MDFCN_DT + , MDFR + , DEL_DT + , DLTR + , DEL_RSN +) VALUES ( + #{crdnId} + , #{crdnSeCd} + , #{dtlCrdnPlc} + , #{crdnSpareaCd} + , #{crdnBgngTm} + , #{crdnEndTm} + , #{crdnSn} + , #{moscX} + , #{moscY} + , #{towngYn} + , #{useFuelCd} + , #{ffnlgCarmdlCd} + , #{prkPsbltyRsltCd} + , #{vltnNmtm} + , IFNULL(#{ovtmYn},'N') + , 'N' + , #{teamId} + , 'N' + , #{createdAt} + , #{createdBy} + , #{lastModified} + , #{modifiedBy} + , #{removedAt} + , #{removedBy} + , #{delRsn} +) + + + \ No newline at end of file diff --git a/src/main/resources/sql/mapper/fims/crdn/crdn-list-mapper.xml b/src/main/resources/sql/mapper/fims/crdn/crdn-list-mapper.xml new file mode 100644 index 00000000..56df26b7 --- /dev/null +++ b/src/main/resources/sql/mapper/fims/crdn/crdn-list-mapper.xml @@ -0,0 +1,497 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/sql/mapper/fims/crdn/crdn-stng-mapper.xml b/src/main/resources/sql/mapper/fims/crdn/crdn-stng-mapper.xml new file mode 100644 index 00000000..a2aa1133 --- /dev/null +++ b/src/main/resources/sql/mapper/fims/crdn/crdn-stng-mapper.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/sql/mapper/fims/crdn/crdn-team-mapper.xml b/src/main/resources/sql/mapper/fims/crdn/crdn-team-mapper.xml new file mode 100644 index 00000000..1e31ec7e --- /dev/null +++ b/src/main/resources/sql/mapper/fims/crdn/crdn-team-mapper.xml @@ -0,0 +1,143 @@ + + + + + + + + + +/* 단속팀 정보 삭제(crdnTeamMapper.deleteTeamInfo) */ +UPDATE TB_TEAM + SET USE_YN = 'N' + , MDFCN_DT = + , MDFR = #{removedBy} + WHERE TEAM_ID = #{teamId} + + + +/* 단속팀 정보 등록(crdnTeamMapper.insertTeamInfo) */ + + + + + + + +INSERT + INTO TB_TEAM ( + TEAM_ID + , SGG_CD + , TASK_SE_CD + , TEAM_NM + , CRDN_SE_CD + , TEAMER_1 + , TEAMER_2 + , TEAMER_3 + , TEAMER_4 + , ETC_CN + , USE_YN + , REG_DT + , RGTR + , MDFCN_DT + , MDFR + ) VALUES ( + #{teamId} + , #{sggCd} + , #{taskSeCd} + , #{teamNm} + , #{crdnSeCd} + , #{teamer1} + , #{teamer2} + , #{teamer3} + , #{teamer4} + , #{etcCn} + , 'Y' + , + , #{createdBy} + , + , #{modifiedBy} + ) + + + +/* 단속팀 정보 수정(crdnTeamMapper.updateTeamInfo) */ +UPDATE TB_TEAM + SET ETC_CN = #{etcCn} + , MDFCN_DT = + , MDFR = #{modifiedBy} + WHERE TEAM_ID = #{teamId} + + + + + + + \ No newline at end of file diff --git a/src/main/resources/sql/mapper/fims/crdn/crdn-updt-mapper.xml b/src/main/resources/sql/mapper/fims/crdn/crdn-updt-mapper.xml new file mode 100644 index 00000000..996307f9 --- /dev/null +++ b/src/main/resources/sql/mapper/fims/crdn/crdn-updt-mapper.xml @@ -0,0 +1,207 @@ + + + + + /* 단속 상태 수정(crdnUpdtMapper.updateCrdnStatus) */ + UPDATE TB_CRDN + SET CRDN_STTS_CD = #{crdnSttsCd} /* 단속 상태 */ + , CRDN_STTS_CHG_DT = /* 단속 상태 변경 일시 */ + , MDFCN_DT = /* 수정일시 */ + , MDFR = #{modifiedBy} /* 수정자 */ + WHERE CRDN_ID = #{crdnId} /* 단속 ID */ + AND DEL_YN = 'N' /* 삭제 여부 */ + + + + /* 단속정보 수정(crdnUpdtMapper.updateCrdn) */ + UPDATE TB_CRDN + SET MDFCN_DT = /* 수정일시 */ + , MDFR = #{modifiedBy} /* 수정자 */ + , ATCH_FILE_CNT = ATCH_FILE_CNT + (#{changeFileCnt}) + , RTPYR_ID = #{rtpyrId} + , CRDN_YMD = #{crdnYmd} + , CRDN_TM = #{crdnTm} + , VHRNO = #{vhrno} + , CRDN_STDG_NM = #{crdnStdgNm} + , CRDN_ROAD_NM = #{crdnRoadNm} + , CRDN_PLC = #{crdnPlc} + , VLTN_ID = (SELECT A.VLTN_ID + FROM TB_VLTN A + WHERE A.SGG_CD = #{sggCd} + AND A.TASK_SE_CD = #{taskSeCd} + AND A.VLTN_CD = #{vltnCd}) + , GPS_X = #{gpsX} + , GPS_Y = #{gpsY} + , VIN = #{vin} + , VHCL_NM = #{vhclNm} + , VHCL_COLR = #{vhclColr} + , ETC_CN = #{etcCn} + , FFNLG_CRDN_AMT = #{ffnlgCrdnAmt} + , FFNLG_AMT = #{ffnlgAmt} + , FFNLG_RDCRT = #{ffnlgRdcrt} + , ADVNTCE_AMT = #{advntceAmt} + + , CRDN_STTS_CD = #{crdnSttsCd} + , CRDN_STTS_CHG_DT = + + WHERE CRDN_ID = #{crdnId} /* 단속 ID */ + + + +/* 단속 부가정보 수정(crdnUpdtMapper.updateCrdnAddition) */ + UPDATE TB_CRDN_ADI + SET MDFCN_DT = /* 수정일시 */ + , MDFR = #{modifiedBy} /* 수정자 */ + + , OVTM_YN = #{ovtmYn} + , CRDN_SPAREA_CD = #{crdnSpareaCd} + + + , DTL_CRDN_PLC = #{dtlCrdnPlc} + , MOSC_X = #{moscX} + , MOSC_Y = #{moscY} + + + , USE_FUEL_CD = #{useFuelCd} + + + , PRK_PSBLTY_RSLT_CD = #{prkPsbltyRsltCd} + + + , VLTN_NMTM = #{vltnNmtm} + + + , CRDN_SE_CD = #{crdnSeCd} + , CRDN_BGNG_TM = #{crdnBgngTm} + , CRDN_END_TM = #{crdnEndTm} + , FFNLG_CARMDL_CD = #{ffnlgCarmdlCd} + + + , CRDN_SN = #{crdnSn} + , TOWNG_YN = #{towngYn} + + WHERE CRDN_ID = #{crdnId} + + + + /* 표지정보확인 수정(crdnUpdtMapper.updateTagInfo) */ + UPDATE TB_CRDN_ADI + SET PRK_PSBLTY_RSLT_CD = '1' + , MDFCN_DT = /* 수정일시 */ + , MDFR = #{modifiedBy} /* 수정자 */ + WHERE CRDN_ID = #{crdnId} /* 단속 ID */ + + + + /* 시간초과 여부 수정(crdnUpdtMapper.overTimeInfo) */ + UPDATE TB_CRDN_ADI + SET OVTM_YN = #{ovtmYn} + , MDFCN_DT = /* 수정일시 */ + , MDFR = #{modifiedBy} /* 수정자 */ + WHERE CRDN_ID = #{crdnId} /* 단속 ID */ + + + + /* 단속 금액 수정(crdnUpdtMapper.updateCrdnAmt) */ + UPDATE TB_CRDN + SET MDFCN_DT = /* 수정일시 */ + , MDFR = #{modifiedBy} /* 수정자 */ + , FFNLG_CRDN_AMT = #{ffnlgCrdnAmt} + , FFNLG_AMT = #{ffnlgAmt} + , ADVNTCE_AMT = #{advntceAmt} + WHERE CRDN_ID = #{crdnId} /* 단속 ID */ + + + + /* 단속 기타사항 수정(crdnUpdtMapper.updateEtcCn) */ + UPDATE TB_CRDN + SET MDFCN_DT = /* 수정일시 */ + , MDFR = #{modifiedBy} /* 수정자 */ + , ETC_CN = #{etcCn} + WHERE CRDN_ID = #{crdnId} /* 단속 ID */ + + + /* 단속 정보 수정(crdnUpdtMapper.updateEditCrdn) */ + UPDATE TB_CRDN + SET CRDN_YMD = #{crdnYmd} + , CRDN_TM = #{crdnTm} + , VHRNO = #{vhrno} + , CRDN_STDG_NM = #{crdnStdgNm} + , CRDN_ROAD_NM = #{crdnRoadNm} + , CRDN_PLC = #{crdnPlc} + , VLTN_ID = (SELECT X.VLTN_ID + FROM TB_VLTN X + WHERE X.SGG_CD = #{sggCd} AND X.TASK_SE_CD = #{taskSeCd} + AND X.VLTN_CD = #{vltnCd}) + , GPS_X = #{gpsX} + , GPS_Y = #{gpsY} + , VIN = #{vin} + , VHCL_NM = #{vhclNm} + , VHCL_COLR = #{vhclColr} + , FFNLG_CRDN_AMT = #{ffnlgCrdnAmt} + , FFNLG_AMT = #{ffnlgAmt} + , ADVNTCE_AMT = #{advntceAmt} + , ETC_CN = #{etcCn} + , MDFCN_DT = + , MDFR = #{modifiedBy} + WHERE CRDN_ID = #{crdnId} + AND DEL_YN = 'N' + + + /* 단속 정보 삭제(crdnUpdtMapper.deleteCrdn) */ + UPDATE TB_CRDN + SET DEL_YN = 'Y' + , DEL_DT = + , DLTR = #{removedBy} + , DEL_RSN = #{delRsn} + WHERE CRDN_ID IN ( + #{crdnId} + ) + AND DEL_YN = 'N' + + + /* 단속 부가 정보 삭제(crdnUpdtMapper.deleteCrdnAdi) */ + UPDATE TB_CRDN_ADI + SET DEL_YN = 'Y' + , DEL_DT = + , DLTR = #{removedBy} + , DEL_RSN = #{delRsn} + WHERE CRDN_ID IN ( + #{crdnId} + ) + AND DEL_YN = 'N' + + + /* 단속 납부자 ID 삭제(crdnUpdtMapper.deleteCrdnPayer) */ + UPDATE TB_CRDN + SET RTPYR_ID = NULL + , MDFCN_DT = + , MDFR = #{modifiedBy} + WHERE CRDN_ID = #{crdnId} + AND RTPYR_ID = #{rtpyrId} + AND DEL_YN = 'N' + + + + /* 세외수입 단속 연계 여부 변경(crdnUpdtMapper.updateNxrpCrdnLinkYn) */ + UPDATE TB_CRDN + SET NXRP_CRDN_LINK_YN = 'Y' + , NXRP_CRDN_LINK_DT = + , NXRP_CRDN_LINK_USER_ID = #{modifiedBy} + , MDFCN_DT = + , MDFR = #{modifiedBy} + WHERE CRDN_ID = #{crdnId} + AND DEL_YN = 'N' + + + /* 사전통지 일자 수정(crdnUpdtMapper.updateAdvntceYmd) */ + UPDATE TB_CRDN + SET ADVNTCE_BGNG_YMD = #{advntceBgngYmd} + , ADVNTCE_DUDT_YMD = #{advntceDudtYmd} + , MDFCN_DT = + , MDFR = #{modifiedBy} + WHERE CRDN_ID = #{crdnId} + AND DEL_YN = 'N' + + + \ No newline at end of file diff --git a/src/main/resources/sql/mapper/fims/crdn/exmptn-vhcl-mapper.xml b/src/main/resources/sql/mapper/fims/crdn/exmptn-vhcl-mapper.xml new file mode 100644 index 00000000..0bd02708 --- /dev/null +++ b/src/main/resources/sql/mapper/fims/crdn/exmptn-vhcl-mapper.xml @@ -0,0 +1,188 @@ + + + + + + + + + +/* 면제차량 정보 등록(exmptnVhclMapper.insertExemptionVehicleInfo) */ + + + + + + + +INSERT INTO TB_EXMPTN_VHCL ( + EXMPTN_VHCL_ID + , SGG_CD + , VHRNO + , EXMPTN_RSN + , DOC_NO + , OWNR_NM + , EXMPTN_BGNG_YMD + , EXMPTN_END_YMD + , DEL_YN + , REG_DT + , RGTR + , MDFCN_DT + , MDFR +) VALUES ( + #{exmptnVhclId} + , #{sggCd} + , #{vhrno} + , #{exmptnRsn} + , #{docNo} + , #{ownrNm} + , #{exmptnBgngYmd} + , #{exmptnEndYmd} + , 'N' + , + , #{createdBy} + , + , #{modifiedBy} +) + + + +/* 면제차량 정보 수정(exmptnVhclMapper.updateExemptionVehicleInfo) */ +UPDATE TB_EXMPTN_VHCL + SET EXMPTN_RSN = #{exmptnRsn} + , DOC_NO = #{docNo} + , OWNR_NM = #{ownrNm} + , EXMPTN_BGNG_YMD = #{exmptnBgngYmd} + , EXMPTN_END_YMD = #{exmptnEndYmd} + , MDFCN_DT = + , MDFR = #{modifiedBy} + WHERE EXMPTN_VHCL_ID = #{exmptnVhclId} + + + +/* 면제차량 정보 삭제(exmptnVhclMapper.deleteExemptionVehicleInfo) */ +UPDATE TB_EXMPTN_VHCL + SET DEL_YN = 'Y' + , DEL_RSN = #{delRsn} + , DEL_DT = + , DLTR = #{removedBy} + WHERE EXMPTN_VHCL_ID = #{exmptnVhclId} + + + +/* 면제차량 정보 등록(exmptnVhclMapper.insertExemptionVehicleHistory) */ + +SELECT + LPAD(CAST(IFNULL(MAX(HSTRY_SN) + 1, 1) AS INT), 5, '0') + AS NEW_ID +FROM TB_EXMPTN_VHCL_HSTRY WHERE EXMPTN_VHCL_ID = #{exmptnVhclId} + +INSERT INTO TB_EXMPTN_VHCL_HSTRY ( + EXMPTN_VHCL_ID + , HSTRY_SN + , SGG_CD + , VHRNO + , EXMPTN_RSN + , DOC_NO + , OWNR_NM + , EXMPTN_BGNG_YMD + , EXMPTN_END_YMD + , DEL_YN + , REG_DT + , RGTR + , MDFCN_DT + , MDFR + , DEL_DT + , DLTR + , DEL_RSN +) SELECT + EXMPTN_VHCL_ID + , #{hstrySn} + , SGG_CD + , VHRNO + , EXMPTN_RSN + , DOC_NO + , OWNR_NM + , EXMPTN_BGNG_YMD + , EXMPTN_END_YMD + , DEL_YN + , REG_DT + , RGTR + , MDFCN_DT + , MDFR + , DEL_DT + , DLTR + , DEL_RSN + FROM TB_EXMPTN_VHCL + WHERE EXMPTN_VHCL_ID = #{exmptnVhclId} + + + + + \ No newline at end of file diff --git a/src/main/resources/sql/mapper/fims/excl/levyExcl-mapper.xml b/src/main/resources/sql/mapper/fims/excl/levyExcl-mapper.xml new file mode 100644 index 00000000..14d4b4a2 --- /dev/null +++ b/src/main/resources/sql/mapper/fims/excl/levyExcl-mapper.xml @@ -0,0 +1,327 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT LE.LEVY_EXCL_ID + , LE.LEVY_EXCL_YMD + , LE.LEVY_EXCL_SE_CD + , (SELECT GET_CODE_NM('FIM021', LE.LEVY_EXCL_SE_CD) FROM DUAL) AS LEVY_EXCL_SE_NM + , LE.LEVY_EXCL_RSN_CD + , (SELECT GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM + , LE.ETC_CN + , LE.DEL_YN + , LE.REG_DT + , LE.RGTR + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM + , LE.MDFCN_DT + , LE.MDFR + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM + , C.CRDN_ID + , C.SGG_CD + , C.TASK_SE_CD + , (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM + , C.CRDN_YMD + , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM + , C.VHRNO + , C.CRDN_STDG_NM + , C.CRDN_ROAD_NM + , C.CRDN_PLC + , C.FFNLG_CRDN_AMT + , C.CRDN_STTS_CD + , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM + , (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM + , (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM + , (SELECT GET_CODE_NM('LVS005', CA.USE_FUEL_CD) FROM DUAL) AS USE_FUEL_NM + , (SELECT GET_CODE_NM('FIM034', CA.PRK_PSBLTY_RSLT_CD) FROM DUAL) AS PRK_PSBLTY_RSLT_NM + , V.VLTN_ID + , V.VLTN_CD + , V.VLTN_ARTCL + , P.RTPYR_ID + , P.RTPYR_SE_CD + , (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM + , P.RTPYR_NO + , P.RTPYR_NM + , PA.ADDR_SN + , PA.ZIP + , PA.ADDR + , PA.DTL_ADDR + , CC.CVLCPT_LINK_ID + , CC.CVLCPT_RCPT_YMD + , CC.CVLCPT_APLY_NO + , CC.CVLCPT_RCPT_NO + , CC.CVLCPT_PRCS_CD + , (SELECT GET_CODE_NM('FIM017', CC.CVLCPT_PRCS_CD) FROM DUAL) AS CVLCPT_PRCS_NM + FROM TB_LEVY_EXCL LE + INNER JOIN TB_CRDN C ON (LE.CRDN_ID = C.CRDN_ID) + INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID) + LEFT OUTER JOIN TB_VLTN V ON (C.VLTN_ID = V.VLTN_ID) + LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) + LEFT OUTER JOIN TB_PAYER_ADDR PA ON (C.RTPYR_ID = PA.RTPYR_ID AND C.ADDR_SN = PA.ADDR_SN) + LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.LINK_ID = CC.CVLCPT_LINK_ID AND C.CVLCPT_LINK_YN = 'Y' AND CC.DEL_YN = 'N') + + + + + + SELECT C.CRDN_ID + , C.SGG_CD + , C.TASK_SE_CD + , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM + , C.VHRNO + , C.CRDN_STDG_NM + , C.CRDN_PLC + , C.CRDN_STTS_CD + , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM + , CA.PRK_PSBLTY_RSLT_CD + , CC.CVLCPT_LINK_ID + , CC.CVLCPT_PRCS_CD + , L.LEVY_ID + , LE.LEVY_EXCL_ID + , LE.LEVY_EXCL_YMD + , LE.LEVY_EXCL_SE_CD + , (SELECT GET_CODE_NM('FIM021', LE.LEVY_EXCL_SE_CD) FROM DUAL) AS LEVY_EXCL_SE_NM + , LE.LEVY_EXCL_RSN_CD + , (SELECT GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM + , LE.ETC_CN + , LE.REG_DT + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM + , LE.MDFCN_DT + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM + FROM TB_CRDN C + INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID) + LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.LINK_ID = CC.CVLCPT_LINK_ID AND C.CVLCPT_LINK_YN = 'Y' AND CC.DEL_YN = 'N') + LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N') + LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N') + + + + + /* 부과제외 대장 등록(levyExclMapper.insertLevyExcl) */ + + + + + + + + + INSERT + INTO TB_LEVY_EXCL ( + LEVY_EXCL_ID + , CRDN_ID + , LEVY_EXCL_YMD + , LEVY_EXCL_SE_CD + , LEVY_EXCL_RSN_CD + , ETC_CN + , DEL_YN + , REG_DT + , RGTR + , MDFCN_DT + , MDFR + ) + VALUES ( + #{levyExclId} + , #{crdnId} + , #{levyExclYmd} + , #{levyExclSeCd} + , #{levyExclRsnCd} + , #{etcCn} + , 'N' + , + , #{createdBy} + , + , #{modifiedBy} + ) + + + /* 부과제외 대장 수정(levyExclMapper.updateLevyExcl) */ + UPDATE TB_LEVY_EXCL + SET LEVY_EXCL_YMD = #{levyExclYmd} + , LEVY_EXCL_RSN_CD = #{levyExclRsnCd} + , ETC_CN = #{etcCn} + , MDFCN_DT = + , MDFR = #{modifiedBy} + WHERE LEVY_EXCL_ID = #{levyExclId} + AND DEL_YN = 'N' + + + /* 부과제외 대장 삭제(levyExclMapper.deleteLevyExcl) */ + UPDATE TB_LEVY_EXCL + SET DEL_YN = 'Y' + , DEL_DT = + , DLTR = #{modifiedBy} + , DEL_RSN = #{delRsn} + WHERE LEVY_EXCL_ID = #{levyExclId} + AND DEL_YN = 'N' + + + /* 단속 대장 주차가능결과코드를 수정(levyExclMapper.updatePrkPsbltyRsltCd) */ + UPDATE TB_CRDN_ADI + SET PRK_PSBLTY_RSLT_CD = #{prkPsbltyRsltCd} + , MDFCN_DT = + , MDFR = #{modifiedBy} + WHERE CRDN_ID = #{crdnId} + AND DEL_YN = 'N' + + + diff --git a/src/main/resources/sql/mapper/fims/levy/levy-mapper.xml b/src/main/resources/sql/mapper/fims/levy/levy-mapper.xml new file mode 100644 index 00000000..48116620 --- /dev/null +++ b/src/main/resources/sql/mapper/fims/levy/levy-mapper.xml @@ -0,0 +1,1055 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT COUNT(*) OVER() AS TNOCS + , SUM(C.FFNLG_AMT) OVER() AS GRAMT_FFNLG_AMT + , SUM(C.ADVNTCE_AMT) OVER() AS GRAMT_ADVNTCE_AMT + , C.CRDN_ID + , C.SGG_CD + , C.TASK_SE_CD + , (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM + , C.CRDN_INPT_SE_CD + , (SELECT GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM + , C.CRDN_YMD + , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM + , (SELECT GET_MASK_DATETIME(C.CRDN_YMD, '-', C.CRDN_TM, ':') FROM DUAL) AS CRDN_YMD_TM_MASK + , C.VHRNO + , C.CRDN_STDG_NM + , C.CRDN_ROAD_NM + , C.CRDN_PLC + , C.FFNLG_CRDN_AMT + , C.FFNLG_AMT + , C.ADVNTCE_AMT + , C.CRDN_STTS_CD + , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM + , C.CRDN_STTS_CHG_DT + , C.REG_DT + , C.RGTR + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.RGTR) AS RGTR_NM + , C.MDFCN_DT + , C.MDFR + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.MDFR) AS MDFR_NM + , V.VLTN_ID + , V.VLTN_CD + , V.VLTN_ARTCL + , CC.CVLCPT_LINK_ID + , CC.CVLCPT_RCPT_YMD + , CC.CVLCPT_APLY_NO + , CC.CVLCPT_RCPT_NO + , CC.CVLCPT_PRCS_PIC_NM + , CC.CVLCPT_PRCS_SMRY + , CC.CVLCPT_PRCS_CD + , (SELECT GET_CODE_NM('FIM017', CC.CVLCPT_PRCS_CD) FROM DUAL) AS CVLCPT_PRCS_NM + , CC.CVLCPT_PRCS_CMPTN_DT + , CC.CVLCPT_TRSM_CD + , (SELECT GET_CODE_NM('FIM018', CC.CVLCPT_TRSM_CD) FROM DUAL) AS CVLCPT_TRSM_NM + , CC.CVLCPT_TRSM_DT + , P.RTPYR_ID + , P.RTPYR_SE_CD + , (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM + , P.RTPYR_NO + , P.RTPYR_NM + , PA.ADDR_SN + , PA.ZIP + , PA.ADDR + , PA.DTL_ADDR + , L.LEVY_ID + + + + FROM TB_CRDN C + INNER JOIN TB_VLTN V ON (C.VLTN_ID = V.VLTN_ID) + LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.LINK_ID = CC.CVLCPT_LINK_ID AND C.CVLCPT_LINK_YN = 'Y' AND CC.DEL_YN = 'N') + LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) + LEFT OUTER JOIN TB_PAYER_ADDR PA ON (C.RTPYR_ID = PA.RTPYR_ID AND C.ADDR_SN = PA.ADDR_SN) + LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N') + + + AND C.CRDN_ID IN ( + #{crdnId} + ) + + + AND C.CRDN_YMD =]]> #{schCrdnYmdFrom} + + + AND C.CRDN_YMD #{schCrdnYmdTo} + + + AND C.VHRNO = #{schVhrno} + + + AND V.VLTN_CD = #{schVltnCd} + + + AND CC.CVLCPT_RCPT_YMD =]]> #{schCvlcptRcptYmdFrom} + + + AND CC.CVLCPT_RCPT_YMD #{schCvlcptRcptYmdTo} + + + AND CC.CVLCPT_PRCS_CMPTN_DT =]]> CONCAT(#{schCvlcptPrcsCmptnDtFrom},'000000') + + + AND CC.CVLCPT_PRCS_CMPTN_DT CONCAT(#{schCvlcptPrcsCmptnDtTo},'235959') + + + AND CC.CVLCPT_PRCS_PIC = #{schCvlcptPrcsPic} + + + AND P.RTPYR_NO = #{schRtpyrNo} + + + AND P.RTPYR_NM = #{schRtpyrNm} + + + AND C.SGG_CD = #{sggCd} + + + AND C.TASK_SE_CD = #{taskSeCd} + + AND C.DEL_YN = 'N' + + + + AND C.REG_DT =]]> CONCAT(#{schRegDateFrom},'000000') + + + AND C.REG_DT CONCAT(#{schRegDateTo},'235959') + + + + + AND C.MDFCN_DT =]]> CONCAT(#{schRegDateFrom},'000000') + + + AND C.MDFCN_DT CONCAT(#{schRegDateTo},'235959') + + + + + + + + + AND C.RGTR = #{schRgtrCd} + + + + + AND C.MDFR = #{schRgtrCd} + + + + + + + + + + + C.CRDN_YMD + C.VHRNO + C.CRDN_STDG_NM + C.CRDN_PLC + C.FFNLG_CRDN_AMT + C.FFNLG_AMT + C.ADVNTCE_AMT + C.CRDN_STTS_CD + P.RTPYR_SE_CD + P.RTPYR_NO + P.RTPYR_NM + PA.ZIP + PA.ADDR + PA.DTL_ADDR + V.VLTN_ARTCL + CC.CVLCPT_RCPT_YMD + CC.CVLCPT_APLY_NO + CC.CVLCPT_RCPT_NO + CC.CVLCPT_TRSM_CD + + #{term} + + + + + + AND C.CRDN_STTS_CD BETWEEN '21' AND '31' + AND C.RTPYR_ID IS NOT NULL + AND (CC.CVLCPT_PRCS_CD IS NULL OR CC.CVLCPT_PRCS_CD ]]> '00') + AND L.LEVY_ID IS NULL + + + + + + + + + SELECT L.LEVY_ID + , L.SGG_CD + , L.TASK_SE_CD + , (SELECT GET_CODE_NM('FIM054', L.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM + , L.INST_CD + , L.DEPT_CD + , L.FYR + , L.ACNTG_SE_CD + , (SELECT GET_CODE_NM('FIM074', L.ACNTG_SE_CD) FROM DUAL) AS ACNTG_SE_NM + , L.TXITM_CD + , (SELECT GET_CODE_NM('FIM075', L.TXITM_CD) FROM DUAL) AS TXITM_NM + , L.OPER_ITEM_CD + , (SELECT GET_CODE_NM('FIM076', L.TXITM_CD+L.OPER_ITEM_CD) FROM DUAL) AS OPER_ITEM_NM + , L.SPCL_BIZ_CD + , (SELECT GET_CODE_NM('FIM077', L.SPCL_BIZ_CD) FROM DUAL) AS SPCL_BIZ_NM + , L.LEVY_NO + , L.ISPY_SN + , L.LEVY_SE_CD + , (SELECT GET_CODE_NM('FIM040', L.LEVY_SE_CD) FROM DUAL) AS LEVY_SE_NM + , L.UNTY_SE_CD + , (SELECT GET_CODE_NM('FIM072', L.UNTY_SE_CD) FROM DUAL) AS UNTY_SE_NM + , L.RDCT_SE_CD + , (SELECT GET_CODE_NM('FIM046', L.RDCT_SE_CD) FROM DUAL) AS RDCT_SE_NM + , L.ISPY_SE_NM + , L.LEVY_YMD + , L.FRST_DUDT_YMD + , L.DUDT_YMD + , L.DUDT_AFTR_YMD + , L.FFNLG_AMT + , L.LEVY_PCPTAX + , L.LEVY_ADAMT + , L.ISPY_INT + , L.RCVMT_PCPTAX + , L.RCVMT_ADAMT + , L.RDAMT_PCPTAX + , L.RDAMT_ADAMT + , L.SUM_AMT + , L.DUDT_AFTR_AMT + , L.TXTN_THING + , L.MNG_ITEM1 + , L.MNG_ITEM2 + , L.MNG_ITEM3 + , L.MNG_ITEM4 + , L.MNG_ITEM5 + , L.MNG_ITEM6 + , L.NPMNT_RSN_CD + , (SELECT GET_CODE_NM('FIM043', L.NPMNT_RSN_CD) FROM DUAL) AS NPMNT_RSN_NM + , L.RCVMT_YMD + , L.PAY_MTHD_SE_CD + , (SELECT GET_CODE_NM('FIM045', L.PAY_MTHD_SE_CD) FROM DUAL) AS PAY_MTHD_SE_NM + , L.SZR_YMD + , L.SZR_THING + , L.RPM_SZR_VHRNO + , L.SZR_RMV_YMD + , L.SZR_RMV_RSN + , L.ETC_CN + , L.EPAYNO + , (SELECT GET_MASK_EPAYNO(L.EPAYNO) FROM DUAL) AS EPAYNO_MASK + , L.BANK_NM + , L.VR_ACTNO + , L.BANK_NM2 + , L.VR_ACTNO2 + , L.BANK_NM3 + , L.VR_ACTNO3 + , L.BANK_NM4 + , L.VR_ACTNO4 + , L.BANK_NM5 + , L.VR_ACTNO5 + , L.BANK_NM6 + , L.VR_ACTNO6 + , L.BANK_NM7 + , L.VR_ACTNO7 + , L.BANK_NM8 + , L.VR_ACTNO8 + , L.BANK_NM9 + , L.VR_ACTNO9 + , L.BANK_NM10 + , L.VR_ACTNO10 + , L.BANK_NM11 + , L.VR_ACTNO11 + , L.BANK_NM12 + , L.VR_ACTNO12 + , L.BANK_NM13 + , L.VR_ACTNO13 + , L.BANK_NM14 + , L.VR_ACTNO14 + , L.BANK_NM15 + , L.VR_ACTNO15 + , L.BANK_NM16 + , L.VR_ACTNO16 + , L.BANK_NM17 + , L.VR_ACTNO17 + , L.BANK_NM18 + , L.VR_ACTNO18 + , L.BANK_NM19 + , L.VR_ACTNO19 + , L.BANK_NM20 + , L.VR_ACTNO20 + , L.NXRP_LEVY_KEY + , L.DEL_YN + , L.REG_DT + , L.RGTR + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.RGTR) AS RGTR_NM + , L.MDFCN_DT + , L.MDFR + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.MDFR) AS MDFR_NM + , C.CRDN_ID + , C.CRDN_YMD + , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM + , (GET_MASK_DATETIME(C.CRDN_YMD, '-', C.CRDN_TM, ':')) AS CRDN_YMD_TM_MASK + , C.VHRNO + , C.CRDN_STDG_NM + , C.CRDN_ROAD_NM + , C.CRDN_PLC + , C.FFNLG_CRDN_AMT + , C.CRDN_STTS_CD + , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM + , C.CRDN_STTS_CHG_DT + , V.VLTN_ID + , V.VLTN_CD + , V.VLTN_ARTCL + , P.RTPYR_ID + , P.RTPYR_SE_CD + , (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM + , P.RTPYR_NO + , P.RTPYR_NM + , PA.ADDR_SN + , PA.ZIP + , PA.ADDR + , PA.DTL_ADDR + FROM TB_LEVY L + INNER JOIN TB_CRDN C ON (L.CRDN_ID = C.CRDN_ID) + INNER JOIN TB_VLTN V ON (C.VLTN_ID = V.VLTN_ID) + LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) + LEFT OUTER JOIN TB_PAYER_ADDR PA ON (C.RTPYR_ID = PA.RTPYR_ID AND C.ADDR_SN = PA.ADDR_SN) + + + + + + + + + + + /* 부과 대장 등록(levyMapper.insertLevy) */ + + + + + + + + INSERT + INTO TB_LEVY ( + LEVY_ID + , SGG_CD + , TASK_SE_CD + , CRDN_ID + , INST_CD + , DEPT_CD + , FYR + , ACNTG_SE_CD + , TXITM_CD + , OPER_ITEM_CD + , SPCL_BIZ_CD + , LEVY_NO + , ISPY_SN + , LEVY_SE_CD + , UNTY_SE_CD + , RDCT_SE_CD + , ISPY_SE_NM + , LEVY_YMD + , FRST_DUDT_YMD + , DUDT_YMD + , DUDT_AFTR_YMD + , FFNLG_AMT + , LEVY_PCPTAX + , LEVY_ADAMT + , ISPY_INT + , RCVMT_PCPTAX + , RCVMT_ADAMT + , RDAMT_PCPTAX + , RDAMT_ADAMT + , SUM_AMT + , DUDT_AFTR_AMT + , TXTN_THING + , MNG_ITEM1 + , MNG_ITEM2 + , MNG_ITEM3 + , MNG_ITEM4 + , MNG_ITEM5 + , MNG_ITEM6 + , NPMNT_RSN_CD + , RCVMT_YMD + , PAY_MTHD_SE_CD + , SZR_YMD + , SZR_THING + , RPM_SZR_VHRNO + , SZR_RMV_YMD + , SZR_RMV_RSN + , ETC_CN + , EPAYNO + , BANK_NM + , VR_ACTNO + , BANK_NM2 + , VR_ACTNO2 + , BANK_NM3 + , VR_ACTNO3 + , BANK_NM4 + , VR_ACTNO4 + , BANK_NM5 + , VR_ACTNO5 + , BANK_NM6 + , VR_ACTNO6 + , BANK_NM7 + , VR_ACTNO7 + , BANK_NM8 + , VR_ACTNO8 + , BANK_NM9 + , VR_ACTNO9 + , BANK_NM10 + , VR_ACTNO10 + , BANK_NM11 + , VR_ACTNO11 + , BANK_NM12 + , VR_ACTNO12 + , BANK_NM13 + , VR_ACTNO13 + , BANK_NM14 + , VR_ACTNO14 + , BANK_NM15 + , VR_ACTNO15 + , BANK_NM16 + , VR_ACTNO16 + , BANK_NM17 + , VR_ACTNO17 + , BANK_NM18 + , VR_ACTNO18 + , BANK_NM19 + , VR_ACTNO19 + , BANK_NM20 + , VR_ACTNO20 + , NXRP_LEVY_KEY + , DEL_YN + , REG_DT + , RGTR + , MDFCN_DT + , MDFR + ) + VALUES ( + #{levyId} + , #{sggCd} + , #{taskSeCd} + , #{crdnId} + , #{instCd} + , #{deptCd} + , #{fyr} + , #{acntgSeCd} + , #{txitmCd} + , #{operItemCd} + , #{spclBizCd} + , #{levyNo} + , #{ispySn} + , #{levySeCd} + , #{untySeCd} + , #{rdctSeCd} + , #{ispySeNm} + , #{levyYmd} + , #{frstDudtYmd} + , #{dudtYmd} + , #{dudtAftrYmd} + , #{ffnlgAmt} + , #{levyPcptax} + , #{levyAdamt} + , #{ispyInt} + , #{rcvmtPcptax} + , #{rcvmtAdamt} + , #{rdamtPcptax} + , #{rdamtAdamt} + , #{sumAmt} + , #{dudtAftrAmt} + , #{txtnThing} + , #{mngItem1} + , #{mngItem2} + , #{mngItem3} + , #{mngItem4} + , #{mngItem5} + , #{mngItem6} + , #{npmntRsnCd} + , #{rcvmtYmd} + , #{payMthdSeCd} + , #{szrYmd} + , #{szrThing} + , #{rpmSzrVhrno} + , #{szrRmvYmd} + , #{szrRmvRsn} + , #{etcCn} + , #{epayno} + , #{bankNm} + , #{vrActno} + , #{bankNm2} + , #{vrActno2} + , #{bankNm3} + , #{vrActno3} + , #{bankNm4} + , #{vrActno4} + , #{bankNm5} + , #{vrActno5} + , #{bankNm6} + , #{vrActno6} + , #{bankNm7} + , #{vrActno7} + , #{bankNm8} + , #{vrActno8} + , #{bankNm9} + , #{vrActno9} + , #{bankNm10} + , #{vrActno10} + , #{bankNm11} + , #{vrActno11} + , #{bankNm12} + , #{vrActno12} + , #{bankNm13} + , #{vrActno13} + , #{bankNm14} + , #{vrActno14} + , #{bankNm15} + , #{vrActno15} + , #{bankNm16} + , #{vrActno16} + , #{bankNm17} + , #{vrActno17} + , #{bankNm18} + , #{vrActno18} + , #{bankNm19} + , #{vrActno19} + , #{bankNm20} + , #{vrActno20} + , #{nxrpLevyKey} + , 'N' + , + , #{createdBy} + , + , #{modifiedBy} + ) + + + /* 부과 대장 수정(levyMapper.updateLevy) */ + UPDATE TB_LEVY + SET INST_CD = #{instCd} + , DEPT_CD = #{deptCd} + , FYR = #{fyr} + , ACNTG_SE_CD = #{acntgSeCd} + , TXITM_CD = #{txitmCd} + , OPER_ITEM_CD = #{operItemCd} + , SPCL_BIZ_CD = #{spclBizCd} + , LEVY_NO = #{levyNo} + , ISPY_SN = #{ispySn} + , LEVY_SE_CD = #{levySeCd} + , UNTY_SE_CD = #{untySeCd} + , RDCT_SE_CD = #{rdctSeCd} + , ISPY_SE_NM = #{ispySeNm} + , LEVY_YMD = #{levyYmd} + , FRST_DUDT_YMD = #{frstDudtYmd} + , DUDT_YMD = #{dudtYmd} + , DUDT_AFTR_YMD = #{dudtAftrYmd} + , FFNLG_AMT = #{ffnlgAmt} + , LEVY_PCPTAX = #{levyPcptax} + , LEVY_ADAMT = #{levyAdamt} + , ISPY_INT = #{ispyInt} + , RCVMT_PCPTAX = #{rcvmtPcptax} + , RCVMT_ADAMT = #{rcvmtAdamt} + , RDAMT_PCPTAX = #{rdamtPcptax} + , RDAMT_ADAMT = #{rdamtAdamt} + , SUM_AMT = #{sumAmt} + , DUDT_AFTR_AMT = #{dudtAftrAmt} + , TXTN_THING = #{txtnThing} + , MNG_ITEM1 = #{mngItem1} + , MNG_ITEM2 = #{mngItem2} + , MNG_ITEM3 = #{mngItem3} + , MNG_ITEM4 = #{mngItem4} + , MNG_ITEM5 = #{mngItem5} + , MNG_ITEM6 = #{mngItem6} + , NPMNT_RSN_CD = #{npmntRsnCd} + , RCVMT_YMD = #{rcvmtYmd} + , PAY_MTHD_SE_CD = #{payMthdSeCd} + , SZR_YMD = #{szrYmd} + , SZR_THING = #{szrThing} + , RPM_SZR_VHRNO = #{rpmSzrVhrno} + , SZR_RMV_YMD = #{szrRmvYmd} + , SZR_RMV_RSN = #{szrRmvRsn} + , ETC_CN = #{etcCn} + , EPAYNO = #{epayno} + , BANK_NM = #{bankNm} + , VR_ACTNO = #{vrActno} + , BANK_NM2 = #{bankNm2} + , VR_ACTNO2 = #{vrActno2} + , BANK_NM3 = #{bankNm3} + , VR_ACTNO3 = #{vrActno3} + , BANK_NM4 = #{bankNm4} + , VR_ACTNO4 = #{vrActno4} + , BANK_NM5 = #{bankNm5} + , VR_ACTNO5 = #{vrActno5} + , BANK_NM6 = #{bankNm6} + , VR_ACTNO6 = #{vrActno6} + , BANK_NM7 = #{bankNm7} + , VR_ACTNO7 = #{vrActno7} + , BANK_NM8 = #{bankNm8} + , VR_ACTNO8 = #{vrActno8} + , BANK_NM9 = #{bankNm9} + , VR_ACTNO9 = #{vrActno9} + , BANK_NM10 = #{bankNm10} + , VR_ACTNO10 = #{vrActno10} + , BANK_NM11 = #{bankNm11} + , VR_ACTNO11 = #{vrActno11} + , BANK_NM12 = #{bankNm12} + , VR_ACTNO12 = #{vrActno12} + , BANK_NM13 = #{bankNm13} + , VR_ACTNO13 = #{vrActno13} + , BANK_NM14 = #{bankNm14} + , VR_ACTNO14 = #{vrActno14} + , BANK_NM15 = #{bankNm15} + , VR_ACTNO15 = #{vrActno15} + , BANK_NM16 = #{bankNm16} + , VR_ACTNO16 = #{vrActno16} + , BANK_NM17 = #{bankNm17} + , VR_ACTNO17 = #{vrActno17} + , BANK_NM18 = #{bankNm18} + , VR_ACTNO18 = #{vrActno18} + , BANK_NM19 = #{bankNm19} + , VR_ACTNO19 = #{vrActno19} + , BANK_NM20 = #{bankNm20} + , VR_ACTNO20 = #{vrActno20} + , NXRP_LEVY_KEY = #{nxrpLevyKey} + , MDFCN_DT = + , MDFR = #{modifiedBy} + WHERE LEVY_ID = #{levyId} + AND DEL_YN = 'N' + + + /* 부과 대장에 부과일자, 최초납기일자, 납기일자 수정(levyMapper.updateRdctLevyYmd) */ + UPDATE TB_LEVY + SET LEVY_YMD = #{levyYmd} + , FRST_DUDT_YMD = #{frstDudtYmd} + , DUDT_YMD = #{dudtYmd} + + , FFNLG_AMT = #{ffnlgAmt} + + + , LEVY_PCPTAX = #{levyPcptax} + + + , SUM_AMT = #{sumAmt} + + , MDFCN_DT = + , MDFR = #{modifiedBy} + WHERE LEVY_ID = #{levyId} + AND DEL_YN = 'N' + + + /* 부과 대장에 수납 금액 정보를 수정(levyMapper.updateRcvmt) */ + UPDATE TB_LEVY + SET RCVMT_PCPTAX = #{rcvmtPcptax} + , RCVMT_ADAMT = #{rcvmtAdamt} + , SUM_AMT = #{sumAmt} + , DUDT_AFTR_AMT = #{dudtAftrAmt} + , RCVMT_YMD = #{rcvmtYmd} + , PAY_MTHD_SE_CD = #{payMthdSeCd} + , MDFCN_DT = + , MDFR = #{modifiedBy} + WHERE LEVY_ID = #{levyId} + AND DEL_YN = 'N' + + + /* 부과 대장에 감액 금액 정보를 수정(levyMapper.updateRdamt) */ + UPDATE TB_LEVY + SET RDAMT_PCPTAX = #{rdamtPcptax} + , RDAMT_ADAMT = #{rdamtAdamt} + , SUM_AMT = #{sumAmt} + , DUDT_AFTR_AMT = #{dudtAftrAmt} + , MDFCN_DT = + , MDFR = #{modifiedBy} + WHERE LEVY_ID = #{levyId} + AND DEL_YN = 'N' + + + /* 부과 대장 삭제(levyMapper.deleteLevy) */ + UPDATE TB_LEVY + SET DEL_YN = 'Y' + , DEL_DT = + , DLTR = #{modifiedBy} + , DEL_RSN = #{delRsn} + WHERE LEVY_ID = #{levyId} + AND DEL_YN = 'N' + + + + + diff --git a/src/main/resources/sql/mapper/fims/rdca/rdcamt-mapper.xml b/src/main/resources/sql/mapper/fims/rdca/rdcamt-mapper.xml new file mode 100644 index 00000000..cd73d34a --- /dev/null +++ b/src/main/resources/sql/mapper/fims/rdca/rdcamt-mapper.xml @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT R.RDAMT_ID + , R.LEVY_ID + , R.LAST_PCPTAX + , R.LAST_ADAMT + , R.RDAMT_YMD + , R.RDAMT_SE_CD + , R.RDAMT_RSN_CD + , R.RDAMT_PCPTAX + , R.RDAMT_ADAMT + , R.RDAMT_RTRCN_YN + , R.RDAMT_RTRCN_YMD + , R.RDAMT_RTRCN_RSN + , R.DEL_YN + , R.REG_DT + , R.RGTR + , R.MDFCN_DT + , R.MDFR + , R.DEL_DT + , R.DLTR + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.RGTR) AS RGTR_NM + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.MDFR) AS MDFR_NM + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.DLTR) AS DLTR_NM + FROM TB_RDAMT R + INNER JOIN TB_LEVY L ON (R.LEVY_ID = L.LEVY_ID) + + + + SELECT R.RDAMT_ID + , R.LEVY_ID + , R.LAST_PCPTAX + , R.LAST_ADAMT + , R.RDAMT_YMD + , R.RDAMT_SE_CD + , R.RDAMT_RSN_CD + , R.RDAMT_PCPTAX + , R.RDAMT_ADAMT + , R.RDAMT_RTRCN_YN + , R.RDAMT_RTRCN_YMD + , R.RDAMT_RTRCN_RSN + , R.DEL_YN + , R.REG_DT + , R.RGTR + , R.MDFCN_DT + , R.MDFR + , R.DEL_DT + , R.DLTR + , R.DEL_RSN + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.RGTR) AS RGTR_NM + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.MDFR) AS MDFR_NM + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.DLTR) AS DLTR_NM + FROM TB_RDAMT + + + + + + + /* 감액 대장 등록(rdcamtMapper.insertRdamt) */ + + SELECT CONCAT(#{rdamt.sggCd}, DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(RDAMT_ID, 10)) + 1, 1) AS INT), 11, '0')) AS NEW_ID + FROM TB_RDAMT + WHERE RDAMT_ID LIKE CONCAT(#{rdamt.sggCd}, DATE_FORMAT(CURRENT_DATE, '%Y'), '%') + + INSERT + INTO TB_RDAMT ( + RDAMT_ID + , LEVY_ID + , LAST_PCPTAX + , LAST_ADAMT + , RDAMT_YMD + , RDAMT_SE_CD + , RDAMT_RSN_CD + , RDAMT_PCPTAX + , RDAMT_ADAMT + , RDAMT_RTRCN_YN + , RDAMT_RTRCN_YMD + , RDAMT_RTRCN_RSN + , DEL_YN + , REG_DT + , RGTR + , MDFCN_DT + , MDFR + ) + VALUES ( + #{rdamt.rdamtId} + , #{rdamt.levyId} + , #{rdamt.lastPcptax} + , #{rdamt.lastAdamt} + , #{rdamt.rdamtYmd} + , #{rdamt.rdamtSeCd} + , #{rdamt.rdamtRsnCd} + , #{rdamt.rdamtPcptax} + , #{rdamt.rdamtAdamt} + , 'N' + , #{rdamt.rdamtRtrcnYmd} + , #{rdamt.rdamtRtrcnRsn} + , 'N' + , + , #{rdamt.createdBy} + , + , #{rdamt.modifiedBy} + ) + + + /* 감액 대장 수정(rdamtMapper.updateRdamt) */ + UPDATE TB_RDAMT + SET LAST_PCPTAX = #{rdamt.lastPcptax} + , LAST_ADAMT = #{rdamt.lastAdamt} + , RDAMT_YMD = #{rdamt.rdamtYmd} + , RDAMT_SE_CD = #{rdamt.rdamtSeCd} + , RDAMT_RSN_CD = #{rdamt.rdamtRsnCd} + , RDAMT_PCPTAX = #{rdamt.rdamtPcptax} + , RDAMT_ADAMT = #{rdamt.rdamtAdamt} + , RDAMT_RTRCN_YN = #{rdamt.rdamtRtrcnYn} + , RDAMT_RTRCN_YMD = #{rdamt.rdamtRtrcnYmd} + , RDAMT_RTRCN_RSN = #{rdamt.rdamtRtrcnRsn} + , MDFCN_DT = + , MDFR = #{rdamt.modifiedBy} + WHERE RDAMT_ID = #{rdamt.rdamtId} + AND DEL_YN = 'N' + + + /* 감액 대장 삭제(rdamtMapper.deleteRdamt) */ + UPDATE TB_RDAMT + SET DEL_YN = 'Y' + , DEL_DT = + , DLTR = #{rdamt.modifiedBy} + , DEL_RSN = #{rdamt.delRsn} + WHERE RDAMT_ID = #{rdamt.rdamtId} + AND DEL_YN = 'N' + + +