From 87a61585a8221b9e40f9de1f9cde255a43ec1469 Mon Sep 17 00:00:00 2001 From: jjh Date: Fri, 21 Jul 2023 14:36:05 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B6=80=EA=B3=BC=EC=A0=9C=EC=99=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cokr/xit/fims/excl/dao/Excl01Mapper.java | 1 - .../xit/fims/excl/service/Excl01Service.java | 10 +- .../fims/excl/service/bean/Excl01Bean.java | 4 +- .../excl/service/bean/Excl01ServiceBean.java | 260 ++++++++++-------- .../xit/fims/excl/web/Excl01Controller.java | 18 +- .../WEB-INF/jsp/fims/excl/excl01010-main.jsp | 102 ++++--- .../WEB-INF/jsp/fims/excl/excl01020-info.jsp | 15 +- 7 files changed, 240 insertions(+), 170 deletions(-) diff --git a/src/main/java/cokr/xit/fims/excl/dao/Excl01Mapper.java b/src/main/java/cokr/xit/fims/excl/dao/Excl01Mapper.java index 3a23e241..cf72ae6e 100644 --- a/src/main/java/cokr/xit/fims/excl/dao/Excl01Mapper.java +++ b/src/main/java/cokr/xit/fims/excl/dao/Excl01Mapper.java @@ -5,7 +5,6 @@ import java.util.Map; import org.egovframe.rte.psl.dataaccess.mapper.Mapper; -import cokr.xit.fims.cmmn.CrdnSttsHstryQuery; import cokr.xit.fims.excl.Excl01; import cokr.xit.fims.excl.Excl01Query; import cokr.xit.foundation.component.AbstractMapper; diff --git a/src/main/java/cokr/xit/fims/excl/service/Excl01Service.java b/src/main/java/cokr/xit/fims/excl/service/Excl01Service.java index 3483d95a..79c09c70 100644 --- a/src/main/java/cokr/xit/fims/excl/service/Excl01Service.java +++ b/src/main/java/cokr/xit/fims/excl/service/Excl01Service.java @@ -58,5 +58,13 @@ public interface Excl01Service { */ boolean removeLevyExclusion(Excl01 excl01); -} + /**부과제외 대장 정보를 삭제한다. + * @param excl 부과제외 대장 + * @return 저장 여부 + * + */ + boolean removeLevyExclusionList(Excl01 excl01); +} diff --git a/src/main/java/cokr/xit/fims/excl/service/bean/Excl01Bean.java b/src/main/java/cokr/xit/fims/excl/service/bean/Excl01Bean.java index 50e8964c..635e32e9 100644 --- a/src/main/java/cokr/xit/fims/excl/service/bean/Excl01Bean.java +++ b/src/main/java/cokr/xit/fims/excl/service/bean/Excl01Bean.java @@ -48,8 +48,8 @@ public class Excl01Bean extends AbstractComponent { DataObject dataCrdn = excl01Mapper.selectCrdnLevyExcl(req); // 등록(단속 조회) // 초기 데이터 설정 - dataCrdn.set("LEVY_EXCL_YMD", dataCrdn.get("TODAY")); // 부과 제외 일자 - dataCrdn.set("LEVY_EXCL_SE_CD", req.getLevyExclSeCd()); // 부과 제외 구분 코드 + dataCrdn.set("LEVY_EXCL_YMD", dataCrdn.get("TODAY")); // 부과 제외 일자 + dataCrdn.set("LEVY_EXCL_SE_CD", req.getLevyExclSeCd()); // 부과 제외 구분 코드 return dataCrdn; } diff --git a/src/main/java/cokr/xit/fims/excl/service/bean/Excl01ServiceBean.java b/src/main/java/cokr/xit/fims/excl/service/bean/Excl01ServiceBean.java index 90eb24f6..304ac336 100644 --- a/src/main/java/cokr/xit/fims/excl/service/bean/Excl01ServiceBean.java +++ b/src/main/java/cokr/xit/fims/excl/service/bean/Excl01ServiceBean.java @@ -1,5 +1,7 @@ package cokr.xit.fims.excl.service.bean; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; + import java.util.HashMap; import java.util.List; import java.util.Map; @@ -154,139 +156,167 @@ public class Excl01ServiceBean extends AbstractServiceBean implements Excl01Serv return retMap; } + @Override + public boolean removeLevyExclusionList(Excl01 excl01) { + // 변수 선언 + boolean retSuccess = false; // DB 처리 결과 + Excl01 infoLevyExcl = new Excl01(); // 부과제외(TB_LEVY_EXCL) 조회 + + // 부과제외ID 건수를 확인하여 1건이하면.. 종료 + if (excl01.getLevyExclIDs().length < 1 ) { + return retSuccess; + } + + // 부과제외ID 만큼 반복.. + for (int iLoop = 0; iLoop < excl01.getLevyExclIDs().length; iLoop++) { + infoLevyExcl.setLevyExclId(excl01.getLevyExclIDs()[iLoop]); // 부과제외 ID + infoLevyExcl.setDelRsn(excl01.getDelRsn()); // 삭제 사유 + + retSuccess = removeLevyExclusion(infoLevyExcl); + if (!retSuccess) { + return retSuccess; + } + } + + // 처리 성공 + retSuccess = true; + + return retSuccess; + } + @Override public boolean removeLevyExclusion(Excl01 excl01) { // 변수 선언 boolean retSuccess = false; // DB 처리 결과 - String levyExclID = ""; - DataObject infoCrdnSttsCd = new DataObject(); // 단속(TB_CRDN) 조회 - Excl01 updtCrdnSttsCd = new Excl01(); // 단속(TB_CRDN) 수정 DataObject infoCrdnSttsHstry = new DataObject(); // 단속상태이력(TB_CRDN_STTS_HSTRY) 조회 + + Excl01 updtCrdnSttsCd = new Excl01(); // 단속(TB_CRDN) 수정 CrdnSttsHstry deltCrdnSttsHstry = new CrdnSttsHstry(); // 단속상태이력(TB_CRDN_STTS_HSTRY) 삭제 - // 부과제외 삭제 + // 부과제외(TB_LEVY_EXCL) + 단속(TB_CRDN) 자료 조회 + infoCrdnSttsCd = excl01Bean.getLevyExclusionInfo(new Excl01Query().setLevyExclId(excl01.getLevyExclId())); + + // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에서 부과제외 자료 조회 + infoCrdnSttsHstry = crdnSttsHstryBean.getCrdnSttsHstryInfo(infoCrdnSttsCd.string("CRDN_ID")); + + // 단속 상태 비교.. + if (!infoCrdnSttsHstry.string("CRDN_STTS_CD").equals(infoCrdnSttsCd.string("CRDN_STTS_CD"))) { + return retSuccess; + } + + // 부과제외(TB_LEVY_EXCL) 삭제 retSuccess = excl01Bean.removeLevyExclusion(excl01); if (!retSuccess) { return retSuccess; } - for (int iLoop = 0; iLoop < excl01.getLevyExclIDs().length; iLoop++) { - levyExclID = excl01.getLevyExclIDs()[iLoop]; - - // 부과제외(TB_LEVY_EXCL) + 단속(TB_CRDN) 자료 조회 - infoCrdnSttsCd = excl01Bean.getLevyExclusionInfo(new Excl01Query().setLevyExclId(levyExclID)); - - // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에서 부과제외 자료 조회 - infoCrdnSttsHstry = crdnSttsHstryBean.getCrdnSttsHstryInfo(infoCrdnSttsCd.string("CRDN_ID")); + // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 삭제 + deltCrdnSttsHstry.setSttsHstryId(infoCrdnSttsHstry.string("STTS_HSTRY_ID")); - // 단속 상태 비교.. - if (!infoCrdnSttsHstry.string("CRDN_STTS_CD").equals(infoCrdnSttsCd.string("CRDN_STTS_CD"))) { - return retSuccess; - } - - // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 삭제 - deltCrdnSttsHstry.setSttsHstryId(infoCrdnSttsHstry.string("STTS_HSTRY_ID")); - - retSuccess = crdnSttsHstryBean.remove(deltCrdnSttsHstry); - if (!retSuccess) { - return retSuccess; - } + retSuccess = crdnSttsHstryBean.remove(deltCrdnSttsHstry); + if (!retSuccess) { +// if (retSuccess) { +// throw new RuntimeException("오류"); // 예외 발생하여 롤백.. + return retSuccess; + } - // 단속(TB_CRDN) 대장 상태 코드 수정 - updtCrdnSttsCd.setCrdnId(infoCrdnSttsHstry.string("CRDN_ID")); - updtCrdnSttsCd.setCrdnSttsCd(infoCrdnSttsHstry.string("BFR_STTS_CD")); - updtCrdnSttsCd.setCrdnSttsChgDt(infoCrdnSttsHstry.string("BFR_STTS_CHG_DT")); + // 단속(TB_CRDN) 대장 상태 코드 수정 + updtCrdnSttsCd.setCrdnId(infoCrdnSttsHstry.string("CRDN_ID")); + updtCrdnSttsCd.setCrdnSttsCd(infoCrdnSttsHstry.string("BFR_STTS_CD")); + updtCrdnSttsCd.setCrdnSttsChgDt(infoCrdnSttsHstry.string("BFR_STTS_CHG_DT")); - retSuccess = excl01Bean.updateCrackdownStatus(updtCrdnSttsCd); - if (!retSuccess) { - return retSuccess; - } + retSuccess = excl01Bean.updateCrackdownStatus(updtCrdnSttsCd); + if (!retSuccess) { + return retSuccess; + } -/* - * // 추가필요 20230718 조재현 ////////////////////////////////////////////////////////// - if GB <> 3 then - begin - //서손 취소하는데, cp_answer의 처리상태가 답변대상 또는 서손의 답변 미대상 자료이면 원래 초기상태로 되돌린다 - with qryAnswer_Get do begin - Close; - ParamByName('AS_MMCODE').AsString :=MainInfo.mm_code; - Open; - if (not IsEmpty) then - begin - { - old_state := FieldByName('AS_STATE').AsString; - if (FieldByName('AS_STATE').AsString = ANSWER_STATE_ANSWER_FOR_CANCEL) or - (FieldByName('AS_STATE').AsString = ANSWER_STATE_CANCEL_IGNORE) then - begin - qryAnswer_SetState.ParamByName('AS_STATE').AsString := ANSWER_STATE_FIRST; - qryAnswer_SetState.ParamByName('AS_STATE_DT').AsString := sDateTime; - qryAnswer_SetState.ParamByName('AS_MMCODE').AsString := MainInfo.mm_code; - qryAnswer_SetState.ExecSQL; - end; - } - - //2017.01.17 서손취소를 하면 무조건 초기상태로 되게 - { - qryAnswer_SetState.ParamByName('AS_STATE').AsString := ANSWER_STATE_FIRST; - qryAnswer_SetState.ParamByName('AS_STATE_DT').AsString := sDateTime; - qryAnswer_SetState.ParamByName('AS_MMCODE').AsString := MainInfo.mm_code; - qryAnswer_SetState.ExecSQL; - } - - //20201203 UIJIN 재등록 자료가 서손>취소>차적조회 시에 사전통보 대상에 올라오지 않아서 추가.. - if (MainInfo.MM_DLGB = '3') or - (MainInfo.MM_DLGB = '4') then - as_state := ANSWER_STATE_CANCEL_COPY - else - as_state := ANSWER_STATE_FIRST; - - qryAnswer_Set.ParamByName('AS_POST_DT').AsString := ''; - qryAnswer_Set.ParamByName('AS_STATE').AsString := as_state; - qryAnswer_Set.ParamByName('AS_TEXT').AsString := ''; - qryAnswer_Set.ParamByName('AS_REUSER').AsInteger := 0; - qryAnswer_Set.ParamByName('AS_MMCODE').AsString := MainInfo.mm_code; - qryAnswer_Set.ExecSQL; - - end; - end; - - - // 답변내용을 초기화, - // 답변대상이었다가 답변내용보기를 했다가 서손처리하면 답변내용이 이미 세팅되어 있으므로 초기화해야 한다. - // 서손사유 수정시도 답변내용보기를 했을 수 있으므로 초기화해야 한다. - // 서손취소시도 답변내용이 부과 기본 내용으로 바꾸이야 하므로 초기화해야 한다. - with qryAnswer_SetTextNull do begin - ParamByName('AS_MMCODE').AsString := MainInfo.mm_code; - ExecSQL; - end; - - - - //표지정보 확인여부가 조회미대상이면 -> 미확인 으로 - //혹시 차적조회가 안되었으면? 놔두자 차적조회되면 그 때 표지정보 BJ_Send가 처리할테니 - if MainInfo.mm_carcheck = CARCHECK_STATE_IGNORE then - begin - with qryMain_SetCarCheck do begin - ParamByName('MM_CARCHECK').AsString := CARCHECK_STATE_BEFORE; - ParamByName('MM_CODE').AsString := MainInfo.mm_code; - ExecSQL; - end; - if MainCD <> nil then - begin - if MainCD.FindField('MM_CARCHECK') <> nil then - begin - MainCD.Edit; - MainCD.FieldByName('MM_CARCHECK').AsString := CARCHECK_STATE_BEFORE; - MainCD.Post; - end; - end; - - end; - - end; -*/ + // 추가필요 20230718 조재현 ////////////////////////////////////////////////////////// + // 부과제외구분이 비부과(서손), 계고일 경우 + if (excl01.getLevyExclSeCd().equals("1") || excl01.getLevyExclSeCd().equals("2")) { + /* + if GB <> 3 then + begin + //서손 취소하는데, cp_answer의 처리상태가 답변대상 또는 서손의 답변 미대상 자료이면 원래 초기상태로 되돌린다 + with qryAnswer_Get do begin + Close; + ParamByName('AS_MMCODE').AsString :=MainInfo.mm_code; + Open; + if (not IsEmpty) then + begin + { + old_state := FieldByName('AS_STATE').AsString; + if (FieldByName('AS_STATE').AsString = ANSWER_STATE_ANSWER_FOR_CANCEL) or + (FieldByName('AS_STATE').AsString = ANSWER_STATE_CANCEL_IGNORE) then + begin + qryAnswer_SetState.ParamByName('AS_STATE').AsString := ANSWER_STATE_FIRST; + qryAnswer_SetState.ParamByName('AS_STATE_DT').AsString := sDateTime; + qryAnswer_SetState.ParamByName('AS_MMCODE').AsString := MainInfo.mm_code; + qryAnswer_SetState.ExecSQL; + end; + } + + //2017.01.17 서손취소를 하면 무조건 초기상태로 되게 + { + qryAnswer_SetState.ParamByName('AS_STATE').AsString := ANSWER_STATE_FIRST; + qryAnswer_SetState.ParamByName('AS_STATE_DT').AsString := sDateTime; + qryAnswer_SetState.ParamByName('AS_MMCODE').AsString := MainInfo.mm_code; + qryAnswer_SetState.ExecSQL; + } + + //20201203 UIJIN 재등록 자료가 서손>취소>차적조회 시에 사전통보 대상에 올라오지 않아서 추가.. + if (MainInfo.MM_DLGB = '3') or + (MainInfo.MM_DLGB = '4') then + as_state := ANSWER_STATE_CANCEL_COPY + else + as_state := ANSWER_STATE_FIRST; + + qryAnswer_Set.ParamByName('AS_POST_DT').AsString := ''; + qryAnswer_Set.ParamByName('AS_STATE').AsString := as_state; + qryAnswer_Set.ParamByName('AS_TEXT').AsString := ''; + qryAnswer_Set.ParamByName('AS_REUSER').AsInteger := 0; + qryAnswer_Set.ParamByName('AS_MMCODE').AsString := MainInfo.mm_code; + qryAnswer_Set.ExecSQL; + + end; + end; + + + // 답변내용을 초기화, + // 답변대상이었다가 답변내용보기를 했다가 서손처리하면 답변내용이 이미 세팅되어 있으므로 초기화해야 한다. + // 서손사유 수정시도 답변내용보기를 했을 수 있으므로 초기화해야 한다. + // 서손취소시도 답변내용이 부과 기본 내용으로 바꾸이야 하므로 초기화해야 한다. + with qryAnswer_SetTextNull do begin + ParamByName('AS_MMCODE').AsString := MainInfo.mm_code; + ExecSQL; + end; + + + + //표지정보 확인여부가 조회미대상이면 -> 미확인 으로 + //혹시 차적조회가 안되었으면? 놔두자 차적조회되면 그 때 표지정보 BJ_Send가 처리할테니 + if MainInfo.mm_carcheck = CARCHECK_STATE_IGNORE then + begin + with qryMain_SetCarCheck do begin + ParamByName('MM_CARCHECK').AsString := CARCHECK_STATE_BEFORE; + ParamByName('MM_CODE').AsString := MainInfo.mm_code; + ExecSQL; + end; + if MainCD <> nil then + begin + if MainCD.FindField('MM_CARCHECK') <> nil then + begin + MainCD.Edit; + MainCD.FieldByName('MM_CARCHECK').AsString := CARCHECK_STATE_BEFORE; + MainCD.Post; + end; + end; + + end; + + end; + */ } diff --git a/src/main/java/cokr/xit/fims/excl/web/Excl01Controller.java b/src/main/java/cokr/xit/fims/excl/web/Excl01Controller.java index f223b295..3a94d7f5 100644 --- a/src/main/java/cokr/xit/fims/excl/web/Excl01Controller.java +++ b/src/main/java/cokr/xit/fims/excl/web/Excl01Controller.java @@ -131,7 +131,7 @@ public class Excl01Controller extends ApplicationController { .addObject("retMessage", retMap.get("retMessage")); } - /**지정한 부과제외 대장를 제거한다. + /**지정한 부과제외 ID에 해당하는 부과제외 대장를 제거한다. * @param levyExclIDs 부과제외 대장 아이디 * @return jsonView *
 {
@@ -147,4 +147,20 @@ public class Excl01Controller extends ApplicationController {
 			.addObject("saved", saved);
 	}
 
+	/**여러 건의 부과제외 ID에 해당하는 부과제외 대장를 제거한다.
+	 * @param levyExclIDs 부과제외 IDs
+	 * @return jsonView
+	 * 
 {
+	 *     "affected": 저장된 정보수
+	 *     "saved": 저장되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + @PostMapping(name = "부과제외 대장 제거", value = "/010/removes.do") + public ModelAndView removeLevyExclusionList(Excl01 excl01) { + boolean saved = excl01Service.removeLevyExclusionList(excl01); + + return new ModelAndView("jsonView") + .addObject("saved", saved); + } + } diff --git a/src/main/webapp/WEB-INF/jsp/fims/excl/excl01010-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/excl/excl01010-main.jsp index 18bd2e5d..e7827f72 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/excl/excl01010-main.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/excl/excl01010-main.jsp @@ -185,56 +185,58 @@ - - - + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -279,9 +281,10 @@ , urls : { load : wctx.url(prefixUrl + "/010/list.do") // 검색 , getInfo : wctx.url(prefixUrl + "/020/info.do") // 등록 및 수정 팝업 - , create : wctx.url(prefixUrl + "/020/create.do") // 등록 - , update : wctx.url(prefixUrl + "/020/update.do") // 수정 - , remove : wctx.url(prefixUrl + "/010/remove.do") // 삭제 + , create : wctx.url(prefixUrl + "/020/create.do") // 신규 등록 + , update : wctx.url(prefixUrl + "/020/update.do") // 자료 수정 +// , remove : wctx.url(prefixUrl + "/010/remove.do") // 자료 삭제 + , remove : wctx.url(prefixUrl + "/010/removes.do") // 선택(체크) 자료 삭제 , getTotalInfo : wctx.url("/sprt/sprt01/020/info.do") // 개별총정보 } , formats : { @@ -344,8 +347,8 @@ ${infoPrefix}List.inStrings( document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%> (str, dataItem) => str - .replace(/{onclick}/gi, 'onclick="${pageName}Control.setCurrent(\'' + dataItem.getValue("LEVY_EXCL_ID") + '\');"') - .replace(/{ondblclick}/gi, 'ondblclick="${pageName}Control.getTotalInfo(\'' + 'crdnId=' + dataItem.getValue("CRDN_ID") + '\')"') + .replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("LEVY_EXCL_ID") + "');") + .replace(/{ondblclick}/gi, "${pageName}Control.getTotalInfo('" + dataItem.getValue("CRDN_ID") + "');") ); $("#tbody--${pageName}").html(trs.join()); @@ -451,6 +454,19 @@ }); } + // 일자 포맷 + $("frmSearch--${pageName}").find(".form-date").each(function() { + $(this).on("input",function() { + let value = this.value.replaceAll("-", ""); + + if (value.length > 7) { + this.value = value.substring(0, 4) + "-" + value.substring(4, 6) + "-" + value.substring(6); + } else if(value.length > 5){ + this.value = value.substring(0, 4) + "-" + value.substring(4); + } + }); + }); + /************************************************************************** * function **************************************************************************/ @@ -530,7 +546,7 @@ // 이벤트 설정 setEvent${pageName}(); - // Dataset 셋팅 - List 일경우 addData + // Dataset 셋팅 - List 일경우 addData 하여 자료를 추가 ${pageName}Control.addData(${levyExcl}); }); diff --git a/src/main/webapp/WEB-INF/jsp/fims/excl/excl01020-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/excl/excl01020-info.jsp index b42b3a0b..b9d50594 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/excl/excl01020-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/excl/excl01020-info.jsp @@ -91,6 +91,7 @@ LEVY_EXCL_YMD : dateFormat } }); + ${pageName}Control.onCurrentChange = item => { ${pageName}Fields.set(item); setFim021(item.data.LEVY_EXCL_SE_CD, item.data.LEVY_EXCL_RSN_CD); @@ -154,17 +155,17 @@ // 일자 포맷 $("#frmEdit--${pageName}").find(".form-date").each(function() { - $(this).on("input",function(){ - var value = this.value.replaceAll("-",""); + $(this).on("input",function() { + let value = this.value.replaceAll("-", ""); - if(value.length > 7){ - this.value = value.substring(0,4)+"-"+value.substring(4,6)+"-"+value.substring(6); + if (value.length > 7) { + this.value = value.substring(0, 4) + "-" + value.substring(4, 6) + "-" + value.substring(6); } else if(value.length > 5){ - this.value = value.substring(0,4)+"-"+value.substring(4); + this.value = value.substring(0, 4) + "-" + value.substring(4); } - }); }); + /************************************************************************** * function **************************************************************************/ @@ -173,7 +174,7 @@ let formFields = new FimsFormFields("#frmEdit--${pageName}"); let data = formFields.get(); - dialog.alert({ + dialog.alert({ content : "현재 prefixName 정보를 저장하시겠습니까?" , onOK : () => { ${pageName}Control.save(formFields.get());