diff --git a/src/main/java/cokr/xit/fims/crdn/web/Crdn05Controller.java b/src/main/java/cokr/xit/fims/crdn/web/Crdn05Controller.java index cc8f2080..aadea53d 100644 --- a/src/main/java/cokr/xit/fims/crdn/web/Crdn05Controller.java +++ b/src/main/java/cokr/xit/fims/crdn/web/Crdn05Controller.java @@ -379,7 +379,7 @@ public class Crdn05Controller extends ApplicationController { } /**단속 대장을 수기 등록한다. - * @param hReq 등록 요청, crdn 단속 대장 정보, newFileList 업로드한 이미지 파일 + * @param hreq 등록 요청, crdn 단속 대장 정보, newFileList 업로드한 이미지 파일 * @return jsonView *
{
* "saved": 등록되었으면 true, 그렇지 않으면 false
@@ -387,7 +387,7 @@ public class Crdn05Controller extends ApplicationController {
*/
@Task
@RequestMapping(name="단속자료 수기 등록", value=METHOD_URL.createCrdnDataByManual)
- public ModelAndView createCrdnDataByManual(HttpServletRequest hReq, Crdn crdn, MultipartFile[] newFileList) {
+ public ModelAndView createCrdnDataByManual(HttpServletRequest hreq, Crdn crdn, MultipartFile[] newFileList) {
UserInfo userInfo = currentUser();
ogdpBean.initUserInfo(userInfo);
@@ -395,10 +395,11 @@ public class Crdn05Controller extends ApplicationController {
crdn.setCrdnRegSeCd("01");
crdn.setCrdnInptSeCd(((String)userInfo.getInfo().get("instNm")).endsWith("시") ? "03" : "02"); // 03: 시청, 02: 구청
- String doWarning = hReq.getParameter("doWarning");
- if ("on".equals(doWarning)) {
+ if ("on".equals(hreq.getParameter("doWarning"))) // 계고 처리
crdn.setCrdnSttsCd("83");
- }
+ if ("on".equals(hreq.getParameter("doExempt"))) // 면제차량
+ crdn.setCrdnSttsCd("81");
+
Map nonQueryRequest = new HashMap();
crdn.setCvlcptLinkYn("N");
diff --git a/src/main/java/cokr/xit/fims/mngt/service/bean/TaskProcessor.java b/src/main/java/cokr/xit/fims/mngt/service/bean/TaskProcessor.java
index 16fa5c25..a62db818 100644
--- a/src/main/java/cokr/xit/fims/mngt/service/bean/TaskProcessor.java
+++ b/src/main/java/cokr/xit/fims/mngt/service/bean/TaskProcessor.java
@@ -12,6 +12,7 @@ import org.assertj.core.util.Arrays;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.crdn.CrdnQuery;
import cokr.xit.fims.crdn.dao.CrdnStngMapper;
+import cokr.xit.fims.crdn.dao.ExmptnVhclMapper;
import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.foundation.component.AbstractBean;
import cokr.xit.foundation.data.DataObject;
@@ -37,6 +38,8 @@ public class TaskProcessor extends AbstractBean {
@Resource(name = "crdnStngMapper")
protected CrdnStngMapper crdnStngMapper;
+ @Resource(name = "exmptnVhclMapper")
+ private ExmptnVhclMapper exmptnVhclMapper;
/**모든 위반내역 코드그룹을 반환한다.
* @return 모든 위반내역 코드그룹
@@ -95,7 +98,23 @@ public class TaskProcessor extends AbstractBean {
*
*/
public LevyExcl getLevyExcl(Crdn crdn) {
- return !"83".equals(crdn.getCrdnSttsCd()) ? null : newLevyExcl(crdn, "2", "192");
+ String crdnSttsCd = crdn.getCrdnSttsCd();
+ if ("81".equals(crdnSttsCd)) {
+ CrdnQuery req = new CrdnQuery()
+ .setVhrno(crdn.getVhrno())
+ .setCrdnYmd(crdn.getCrdnYmd())
+ .setSggCd(crdn.getSggCd())
+ .setTaskSeCd(crdn.getTaskSeCd());
+ List list = exmptnVhclMapper.selectExemptionVehicleList(req);
+
+ if (!list.isEmpty()) // 비부과, 면제차량
+ return newLevyExcl(crdn, "1", "145");
+ else
+ throw new RuntimeException("비부과 사유를 알 수 없습니다.");
+ }
+ if ("83".equals(crdn.getCrdnSttsCd())) // 계고, 계고
+ return newLevyExcl(crdn, "2", "192");
+ return null;
}
/**주어진 구분과 사유로 부과제외 정보를 생성한다.
diff --git a/src/main/java/cokr/xit/fims/payer/service/bean/PayerBean.java b/src/main/java/cokr/xit/fims/payer/service/bean/PayerBean.java
index 9edb3543..9d485994 100644
--- a/src/main/java/cokr/xit/fims/payer/service/bean/PayerBean.java
+++ b/src/main/java/cokr/xit/fims/payer/service/bean/PayerBean.java
@@ -37,26 +37,20 @@ import cokr.xit.interfaces.lvis.service.reg.BasicInfoResponse;
*/
@Component("payerBean")
public class PayerBean extends AbstractBean {
-
/** 납부자 정보 DAO */
@Resource(name = "payerMapper")
private PayerMapper payerMapper;
-
/** 납부자 주소 정보 DAO */
@Resource(name = "payerAddrMapper")
private PayerAddrMapper payerAddrMapper;
-
/** 자동차 정보 DAO */
@Resource(name = "vehicleInfoBean")
private VehicleInfoBean vehicleInfoBean;
-
@Resource(name = "vehicleInfoMapper")
private VehicleInfoMapper vehicleInfoMapper;
-
/** 단속 상태 이력 정보 Bean */
@Resource(name = "crdnSttsHstryBean")
private CrdnSttsHstryBean crdnSttsHstryBean;
-
/** 단속 납부자 이력 정보 Bean */
@Resource(name = "crdnPayerAddrHstryBean")
private CrdnPayerAddrHstryBean crdnPayerAddrHstryBean;
@@ -87,7 +81,6 @@ public class PayerBean extends AbstractBean {
}
List payers = getPayers(req);
-
return !payers.isEmpty() ? payers.get(0) : null;
}
@@ -109,7 +102,6 @@ public class PayerBean extends AbstractBean {
}
List payers = getAddrs(req);
-
return !payers.isEmpty() ? payers.get(0) : null;
}
@@ -126,9 +118,10 @@ public class PayerBean extends AbstractBean {
// 납부자 정보 조회
req.setOrderBy("P.RTPYR_ID DESC");
List payers = getPayers(req);
+ Payer loaded = payers.get(0);
// 납부자 ID 설정
- payer.setRtpyrId(payers.get(0).getRtpyrId());
+ payer.setRtpyrId(loaded.getRtpyrId());
// 납부자 주소 정보를 조회
req.setRtpyrId(payer.getRtpyrId());
@@ -140,7 +133,7 @@ public class PayerBean extends AbstractBean {
// 주소 등록
createPayerAddr(payer);
} else {
- payer.setAddrSn(payers.get(0).getAddrSn()); // 주소 일련번호
+ payer.setAddrSn(loaded.getAddrSn()); // 주소 일련번호
// 주소 수정
updatePayerAddr(payer);
}
@@ -159,9 +152,8 @@ public class PayerBean extends AbstractBean {
// 납부자 등록
boolean rtnScs = payerMapper.insert(payer);
// 납부자 주소 등록
- if (rtnScs) {
+ if (rtnScs)
createPayerAddr(payer);
- }
return rtnScs;
}
@@ -224,32 +216,29 @@ public class PayerBean extends AbstractBean {
}
public Payer getVehicleOwner(BasicInfoExtRequest req) {
- Payer payper = null;
-
//차적조회
BasicInfoExtResponse bier = vehicleInfoBean.getBasicInfo(req);
-
- if(bier.getRecord() != null && !bier.getRecord().isEmpty()
- && bier.getRecord().get(0) != null) {
- //시군구코드 세팅
- bier.getRecord().get(0).setSggCd(req.getSigungu_code());
- //주소 세팅
- DataObject roadNameInfo = vehicleInfoMapper.selectRoadNmAdres(
- bier.getRecord().get(0).getUse_strnghld_road_nm_code(),
- bier.getRecord().get(0).getUse_strnghld_buld_main_no(),
- bier.getRecord().get(0).getUse_strnghld_buld_sub_no());
- if(!isEmpty(roadNameInfo)) {
- bier.getRecord().get(0).setRoad_nm_adres(roadNameInfo.string("ROAD_NM_ADRES"));
- bier.getRecord().get(0).setZip_code(roadNameInfo.string("ZIP"));
- }
-
- //납부자조회
- payper = getPayer(bier.getRecord().get(0));
+ BasicInfoExtResponse.ExtInfo extInfo = !isEmpty(bier.getRecord()) ? bier.getRecord().get(0) : null;
+ if (extInfo == null) return null;
+
+ //시군구코드 세팅
+ extInfo.setSggCd(req.getSigungu_code());
+ //주소 세팅
+ DataObject roadNameInfo = vehicleInfoMapper.selectRoadNmAdres(
+ extInfo.getUse_strnghld_road_nm_code(),
+ extInfo.getUse_strnghld_buld_main_no(),
+ extInfo.getUse_strnghld_buld_sub_no()
+ );
+ if (!isEmpty(roadNameInfo)) {
+ extInfo.setRoad_nm_adres(roadNameInfo.string("ROAD_NM_ADRES"));
+ extInfo.setZip_code(roadNameInfo.string("ZIP"));
}
- return payper;
+ //납부자조회
+ return getPayer(extInfo);
}
+
/**시군구 코드와 차량 기본정보에서 납부자 정보를 생성하거나, 등록정보에서 조회하여 반환한다.(차량번호 / 납부자 번호 / 시군구 기준)
* @param basicInfo 차량 기본정보
* @return 납부자 정보
@@ -262,125 +251,51 @@ public class PayerBean extends AbstractBean {
payer.setRtpyrInptSeCd("02");
payer.setAddrInptSeCd("02");
payer.setRtpyrSeCd(
- Map.of(
- "11", "01",
- "12", "02",
- "13", "03",
- "14", "04",
- "15", "05"
- ).getOrDefault(basicInfo.getMber_se_code(), "05")
+ switch (basicInfo.getMber_se_code()) {
+ case "11" -> "01";
+ case "12" -> "02";
+ case "13" -> "03";
+ case "14" -> "04";
+ case "15" -> "05";
+ default -> "05";
+ }
);
- String rtpyrNo = basicInfo.getMber_se_no();
- payer.setRtpyrNo(rtpyrNo);
+ String str = basicInfo.getMber_se_no();
+ payer.setRtpyrNo(str);
if ("01,02".contains(payer.getRtpyrSeCd())) {
- payer.setRtpyrBrdt(rtpyrNo.substring(0, 6));
+ payer.setRtpyrBrdt(str.substring(0, 6));
}
payer.setRtpyrNm(basicInfo.getMber_nm());
payer.setRtpyrTelno(basicInfo.getTelno());
payer.setRoadNmCd(basicInfo.getUse_strnghld_road_nm_code());
- String str = basicInfo.getUsgsrhld_undgrnd_buld_se_code();
- if (isEmpty(str))
- payer.setUdgdSeCd("0");
- else
- payer.setUdgdSeCd(basicInfo.getUsgsrhld_undgrnd_buld_se_code());
- str = basicInfo.getUse_strnghld_buld_main_no();
- if (!isEmpty(str))
+ payer.setUdgdSeCd(ifEmpty(basicInfo.getUsgsrhld_undgrnd_buld_se_code(), "0"));
+ if (!isEmpty(str = basicInfo.getUse_strnghld_buld_main_no()))
payer.setBmno(toInt(str));
- str = basicInfo.getUse_strnghld_buld_sub_no();
- if (!isEmpty(str))
+ if (!isEmpty(str = basicInfo.getUse_strnghld_buld_sub_no()))
payer.setBsno(toInt(str));
payer.setStdgCd(basicInfo.getUse_strnghld_legaldong_code());
payer.setDongCd(basicInfo.getUse_strnghld_adstrd_code());
payer.setMtnSeCd(basicInfo.getUse_strnghld_mntn());
- str = basicInfo.getUse_strnghld_lnbr();
- if (!isEmpty(str))
+ if (!isEmpty(str = basicInfo.getUse_strnghld_lnbr()))
payer.setMno(toInt(str));
- str = basicInfo.getUse_strnghld_ho();
- if (!isEmpty(str))
+ if (!isEmpty(str = basicInfo.getUse_strnghld_ho()))
payer.setSno(toInt(str));
- payer.setAddr(basicInfo.getRoad_nm_adres());
+ String road_nm_adres = basicInfo.getRoad_nm_adres();
+ payer.setAddr(road_nm_adres);
payer.setDtlAddr(basicInfo.getUse_strnghld_adres_nm());
// 전체 주소
- str = basicInfo.getUse_strnghld_adres_nm();
- if (!isEmpty(str))
- payer.setWholAddr(basicInfo.getRoad_nm_adres() + ", " + basicInfo.getUse_strnghld_adres_nm());
+ if (!isEmpty(str = basicInfo.getUse_strnghld_adres_nm()))
+ payer.setWholAddr(road_nm_adres + ", " + str);
else
- payer.setWholAddr(basicInfo.getRoad_nm_adres());
+ payer.setWholAddr(road_nm_adres);
Payer result = create(payer) ? payer : getPayerAddrInfo(payer);
-
if (result != null)
result.setVehicleInfo(basicInfo);
return result;
}
- /**시군구 코드와 차량 기본정보에서 납부자 정보를 생성하거나, 등록정보에서 조회하여 반환한다.(차량번호 / 납부자 번호 / 시군구 기준)
- * @param extInfo 차량 기본정보
- * @return 납부자 정보
- */
- private Payer getPayer(BasicInfoExtResponse.ExtInfo extInfo) {
- Payer payer = new Payer();
-
- payer.setSggCd(extInfo.getSggCd());
- payer.setVhrno(extInfo.getVhrno());
- payer.setRtpyrInptSeCd("02");
- payer.setAddrInptSeCd("02");
- payer.setRtpyrSeCd(
- Map.of(
- "11", "01",
- "12", "02",
- "13", "03",
- "14", "04",
- "15", "05"
- ).getOrDefault(extInfo.getMber_se_code(), "05")
- );
-
- String rtpyrNo = extInfo.getMber_se_no();
- payer.setRtpyrNo(rtpyrNo);
- if ("01,02".contains(payer.getRtpyrSeCd())) {
- payer.setRtpyrBrdt(rtpyrNo.substring(0, 6));
- }
- payer.setRtpyrNm(extInfo.getMber_nm());
- payer.setRtpyrTelno(extInfo.getTelno());
- payer.setRoadNmCd(extInfo.getUse_strnghld_road_nm_code());
- String str = extInfo.getUsgsrhld_undgrnd_buld_se_code();
- if (str.equals(""))
- payer.setUdgdSeCd("0");
- else
- payer.setUdgdSeCd(extInfo.getUsgsrhld_undgrnd_buld_se_code());
- str = extInfo.getUse_strnghld_buld_main_no();
- if (!isEmpty(str))
- payer.setBmno(toInt(str));
- str = extInfo.getUse_strnghld_buld_sub_no();
- if (!isEmpty(str))
- payer.setBsno(toInt(str));
- payer.setStdgCd(extInfo.getUse_strnghld_legaldong_code());
- payer.setDongCd(extInfo.getUse_strnghld_adstrd_code());
- payer.setMtnSeCd(extInfo.getUse_strnghld_mntn());
- str = extInfo.getUse_strnghld_lnbr();
- if (!isEmpty(str))
- payer.setMno(toInt(str));
- str = extInfo.getUse_strnghld_ho();
- if (!isEmpty(str))
- payer.setSno(toInt(str));
- payer.setAddr(extInfo.getRoad_nm_adres());
- payer.setDtlAddr(extInfo.getUse_strnghld_adres_nm());
- // 전체 주소
- str = extInfo.getUse_strnghld_adres_nm();
- if (!isEmpty(str))
- payer.setWholAddr(extInfo.getRoad_nm_adres() + ", " + extInfo.getUse_strnghld_adres_nm());
- else
- payer.setWholAddr(extInfo.getRoad_nm_adres());
-
- Payer result = create(payer) ? payer : getPayerAddrInfo(payer);
-
- if (result != null)
- result.setVehicleInfo(extInfo);
-
- return result;
- }
-
/**지정한 조건에 따라 납부자 정보를 반환한다.
* @param req 납부자 조회 조건
* @return 납부자 정보
@@ -405,46 +320,36 @@ public class PayerBean extends AbstractBean {
*
*/
public String createCrdnPayer(Payer payer) {
- // 변수 선언
- boolean rtnScs = false; // DB 처리 결과
- boolean bInstHstry = false; // DB 처리 결과
- String strTemp = "";
-
// 생년월일
if ("01,02".contains(payer.getRtpyrSeCd())) {
payer.setRtpyrBrdt(payer.getRtpyrNo().substring(0, 6));
}
// 지하 구분 코드
- strTemp = payer.getUdgdSeCd();
- if (strTemp == null || strTemp.equals("")) {
+ if (isEmpty(payer.getUdgdSeCd()))
payer.setUdgdSeCd("0");
- }
// 전체 주소
- strTemp = payer.getWholAddr();
- if (strTemp == null || strTemp.equals("")) {
+ if (isEmpty(payer.getWholAddr()))
payer.setWholAddr(payer.getAddr() + ", " + payer.getDtlAddr());
- }
// 납부자 주소 이력
CrdnPayerAddrHstry crdnPayerAddrHstry = new CrdnPayerAddrHstry();
// 단속 ID로 단속, 납부자, 주소 정보 조회
DataObject crdnPayerAddrInfo = payerMapper.selectCrdnInfo(payer.getCrdnId());
+ boolean bInstHstry = false; // DB 처리 결과
// 주민등록번호가 동일하다면..
if (crdnPayerAddrInfo.string("RTPYR_NO").equals(payer.getRtpyrNo())) {
// 납부자 대장(TB_PAYER)에 납부자 정보를 수정한다.
- rtnScs = update(payer);
- if (!rtnScs) {
+ if (!update(payer))
throw new RuntimeException("납부자 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
// 주소가 변경되었는지 확인
if (crdnPayerAddrInfo.string("ADDR_INPT_SE_CD").equals(payer.getAddrInptSeCd())
- && crdnPayerAddrInfo.string("ZIP").equals(payer.getZip())
- && crdnPayerAddrInfo.string("ADDR").equals(payer.getAddr())
- && crdnPayerAddrInfo.string("DTL_ADDR").equals(payer.getDtlAddr())
- && crdnPayerAddrInfo.string("ROAD_NM_CD").equals(payer.getRoadNmCd())
- && crdnPayerAddrInfo.string("STDG_CD").equals(payer.getStdgCd())) {
+ && crdnPayerAddrInfo.string("ZIP").equals(payer.getZip())
+ && crdnPayerAddrInfo.string("ADDR").equals(payer.getAddr())
+ && crdnPayerAddrInfo.string("DTL_ADDR").equals(payer.getDtlAddr())
+ && crdnPayerAddrInfo.string("ROAD_NM_CD").equals(payer.getRoadNmCd())
+ && crdnPayerAddrInfo.string("STDG_CD").equals(payer.getStdgCd())) {
// 주소 일련번호 설정
payer.setAddrSn(crdnPayerAddrInfo.string("ADDR_SN"));
@@ -473,32 +378,26 @@ public class PayerBean extends AbstractBean {
updtPayer.setRtpyrNm(payer.getRtpyrNm());
// 전화번호
- if (result.getRtpyrTelno() != null && !result.getRtpyrTelno().equals("")) {
- updtPayer.setRtpyrTelno(result.getRtpyrTelno());
- updtPayer.setRtpyrId(result.getRtpyrId());
- }
+ String str = result.getRtpyrTelno();
+ if (!isEmpty(str))
+ updtPayer.setRtpyrTelno(str);
// 휴대전화번호
- if (result.getRtpyrMblTelno() != null && !result.getRtpyrMblTelno().equals("")) {
- updtPayer.setRtpyrMblTelno(result.getRtpyrMblTelno());
- updtPayer.setRtpyrId(result.getRtpyrId());
- }
+ if (!isEmpty(str = result.getRtpyrMblTelno()))
+ updtPayer.setRtpyrMblTelno(str);
// 이메일
- if (result.getRtpyrEml() != null && !result.getRtpyrEml().equals("")) {
- updtPayer.setRtpyrEml(result.getRtpyrEml());
- updtPayer.setRtpyrId(result.getRtpyrId());
- }
+ if (!isEmpty(str = result.getRtpyrEml()))
+ updtPayer.setRtpyrEml(str);
// 납부자 상태 코드
- if (result.getRtpyrSttsCd() != null && !result.getRtpyrSttsCd().equals("")) {
- updtPayer.setRtpyrSttsCd(result.getRtpyrSttsCd());
+ if (!isEmpty(str = result.getRtpyrSttsCd()))
+ updtPayer.setRtpyrSttsCd(str);
+
+ if (!isEmpty(str))
updtPayer.setRtpyrId(result.getRtpyrId());
- }
// 납부자 대장(TB_PAYER)에 납부자 정보를 수정한다.
- if (!updtPayer.getRtpyrId().equals("")) {
- rtnScs = update(updtPayer);
- if (!rtnScs) {
- throw new RuntimeException("납부자 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
+ if (!isEmpty(updtPayer.getRtpyrId())) {
+ if (!update(updtPayer))
+ throw new RuntimeException("납부자 정보 수정에 실패하였습니다.");
}
// 납부자 번호가 다르다면 단속 납부자주소 이력을 등록한다.
@@ -507,10 +406,8 @@ public class PayerBean extends AbstractBean {
// 단속 납부자 주소 이력(TB_CRDN_PAYER_ADDR_HSTRY) 대장에 등록한다.
if (bInstHstry) {
- rtnScs = crdnPayerAddrHstryBean.createHstryUpdateCrdnPayerAddr(crdnPayerAddrHstry);
- if (!rtnScs) {
+ if (!crdnPayerAddrHstryBean.createHstryUpdateCrdnPayerAddr(crdnPayerAddrHstry))
throw new RuntimeException("납부자 등록 실행중 단속 대장에 주소 일련번호 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
}
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
@@ -521,10 +418,8 @@ public class PayerBean extends AbstractBean {
crdnSttsHstry.setBfrSttsChgDt(crdnPayerAddrInfo.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd("21");
- rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
- if (!rtnScs) {
+ if (!crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry))
throw new RuntimeException("납부자 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
}
return "[S] 작업이 정상 처리 되었습니다.";
@@ -561,5 +456,4 @@ public class PayerBean extends AbstractBean {
public DataObject getLastPayerAddrInfo(PayerQuery req) {
return payerAddrMapper.selectLastPayerAddrInfo(req);
}
-
-}
+}
\ No newline at end of file