부과제외(계고, 면제차량) 수정

main
mjkhan21 9 months ago
parent 1abe32720a
commit 974fe7cd23

@ -379,7 +379,7 @@ public class Crdn05Controller extends ApplicationController {
}
/** .
* @param hReq , crdn , newFileList
* @param hreq , crdn , newFileList
* @return jsonView
* <pre><code> {
* "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<String, Object> nonQueryRequest = new HashMap<String, Object>();
crdn.setCvlcptLinkYn("N");

@ -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 {
* </ul>
*/
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<DataObject> 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;
}
/** .

@ -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<Payer> payers = getPayers(req);
return !payers.isEmpty() ? payers.get(0) : null;
}
@ -109,7 +102,6 @@ public class PayerBean extends AbstractBean {
}
List<Payer> 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<Payer> 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 {
* </ul>
*/
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);
}
}
}
Loading…
Cancel
Save