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 저장 여부
+ *
- 저장됐으면 true
+ * - 그렇지 않으면 false
+ *
+ */
+ 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());