부과제외 수정.

main
jjh 11 months ago
parent 01fc3a96d4
commit 96b9c2ed7e

@ -57,6 +57,18 @@ public interface LevyExclMapper extends AbstractMapper {
return !levyExcls.isEmpty() ? levyExcls.get(0) : null;
}
/** .
* @param crdnId ID
* @return
*/
List<DataObject> selectCrdn(LevyExclQuery req);
default DataObject selectCrdnInfo(LevyExclQuery req) {
List<DataObject> crdn = selectCrdn(req);
return !crdn.isEmpty() ? crdn.get(0) : null;
}
/** .
* @param params
* <ul><li>"excl01" - </li>

@ -63,4 +63,31 @@ public interface LevyExclService {
*/
String removeLevyExcl(LevyExcl levyExcl);
/** .
* @param levyExcl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean create(LevyExcl levyExcl);
/** .
* @param levyExcl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean update(LevyExcl levyExcl);
/** .
* @param levyExcl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean remove(LevyExcl levyExcl);
}

@ -83,10 +83,12 @@ public class LevyExclBean extends AbstractComponent {
* @return
*/
public DataObject getLevyExclInfo(LevyExclQuery req) {
DataObject levyExclInfo = levyExclMapper.selectLevyExclInfo(req);
DataObject levyExclInfo = new DataObject();
if (req.getCallPurpose().equals("create")) {
levyExclInfo.set("LEVY_EXCL_SE_CD", req.getLevyExclSeCd()); // 부과 제외 구분 코드
levyExclInfo = levyExclMapper.selectCrdnInfo(req);
} else {
levyExclInfo = levyExclMapper.selectLevyExclInfo(req);
}
return levyExclInfo;
@ -106,30 +108,30 @@ public class LevyExclBean extends AbstractComponent {
String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD)
// 단속 ID로 단속, 부과제외 정보 조회
DataObject infoCrdnLevyExcl = levyExclMapper.selectLevyExclInfo(new LevyExclQuery().setCrdnId(levyExcl.getCrdnId()));
DataObject crdnInfo = levyExclMapper.selectCrdnInfo(new LevyExclQuery().setCrdnId(levyExcl.getCrdnId()));
// 부과제외 ID가 있다면 이미 부과제외 자료가 존재하므로 종료..
if (!infoCrdnLevyExcl.string("LEVY_EXCL_ID").equals("")) {
rtnMsg = "[F] 작업 중 이미 등록된 자료가 존재합니다.";
if (!crdnInfo.string("LEVY_EXCL_ID").equals("")) {
rtnMsg = "[F] 작업 중 이미 등록된 부과제외 자료가 존재합니다.";
return rtnMsg;
}
// 단속 상태 코드(CRDN_STTS_CD) 확인..
if (levyExcl.getLevyExclSeCd().equals("1") || levyExcl.getLevyExclSeCd().equals("2")) { // 비부과(서손), 계고
// 단속 상태 코드가 부과(51) 보다 크다면, 비부과 또는 계고 등록을 할 수 없다. 종료..
if (infoCrdnLevyExcl.number("CRDN_STTS_CD").intValue() >= 51) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 상태 입니다.";
if (crdnInfo.number("CRDN_STTS_CD").intValue() >= 51) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + crdnInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
return rtnMsg;
}
} else if (levyExcl.getLevyExclSeCd().equals("5")) {
// 단속 상태 코드가 부과(51) 보다 작다면, 전액감액 등록 할 수 없다. 종료.. 전액감액 등록은 부과이후...
if (infoCrdnLevyExcl.number("CRDN_STTS_CD").intValue() < 51) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 상태 입니다.";
if (crdnInfo.number("CRDN_STTS_CD").intValue() < 51) {
rtnMsg = "[F] 작업 중 오류가 발생하였습니다.<br>현재 자료의 단속 상태가 " + crdnInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
return rtnMsg;
}
}
// 단속 민원(TB_CRDN_CVLCPT) 민원 처리 확인
if (!infoCrdnLevyExcl.string("CVLCPT_LINK_ID").equals("")) {
if (infoCrdnLevyExcl.string("CVLCPT_PRCS_CD").equals("00")) {
if (!crdnInfo.string("CVLCPT_LINK_ID").equals("")) {
if (crdnInfo.string("CVLCPT_PRCS_CD").equals("00")) {
rtnMsg = "[F] 작업 중 단속 민원 자료가 처리 되지 않았습니다.<br>단속 민원 업무를 먼저 처리 하시기 바랍니다.<br>";
return rtnMsg;
}
@ -153,9 +155,9 @@ public class LevyExclBean extends AbstractComponent {
// 단속상태이력(TB_CRDN_STTS_HSTRY)
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(infoCrdnLevyExcl.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(infoCrdnLevyExcl.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(infoCrdnLevyExcl.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnId(crdnInfo.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(crdnInfo.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(crdnInfo.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd);
crdnSttsHstry.setTaskDtlId(levyExcl.getLevyExclId());
@ -211,8 +213,10 @@ public class LevyExclBean extends AbstractComponent {
String rtnMsg = "[F] "; // 처리 결과 메시지
// 부과제외(TB_LEVY_EXCL) 정보 조회
DataObject levyExclInfo = levyExclMapper.selectLevyExclInfo(new LevyExclQuery().setLevyExclId(levyExcl.getLevyExclId())
.setDelYN("N"));
DataObject levyExclInfo = levyExclMapper.selectLevyExclInfo(new LevyExclQuery()
.setLevyExclId(levyExcl.getLevyExclId())
.setDelYN("N")
);
// 부과제외 ID가 조회되지 않았다면 종료..
if (levyExclInfo.string("LEVY_EXCL_ID").equals("")) {
@ -272,6 +276,39 @@ public class LevyExclBean extends AbstractComponent {
return rtnMsg;
}
/** .
* @param levyExcl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean create(LevyExcl levyExcl) {
return levyExclMapper.insert(levyExcl);
}
/** .
* @param levyExcl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean update(LevyExcl levyExcl) {
return levyExclMapper.update(levyExcl);
}
/** .
* @param levyExcl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean remove(LevyExcl levyExcl) {
return levyExclMapper.delete(levyExcl);
}
}

@ -92,4 +92,19 @@ public class LevyExclServiceBean extends AbstractServiceBean implements LevyExcl
return rtnMsg;
}
@Override
public boolean create(LevyExcl levyExcl) {
return levyExclBean.create(levyExcl);
}
@Override
public boolean update(LevyExcl levyExcl) {
return levyExclBean.update(levyExcl);
}
@Override
public boolean remove(LevyExcl levyExcl) {
return levyExclBean.remove(levyExcl);
}
}

@ -269,44 +269,47 @@ public class Excl01Controller extends ApplicationController {
.addObject("rtnMsg", rtnMsg);
}
}
/** .
* @param levyExcl
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
// @PostMapping(name = "부과제외 대장 등록", value = "/create.do")
public ModelAndView create(LevyExcl levyExcl) {
boolean saved = levyExclService.create(levyExcl);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
/** .
* @param levyExcl
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
// @PostMapping(name = "부과제외 대장 수정", value = "/update.do")
public ModelAndView update(LevyExcl levyExcl) {
boolean saved = levyExclService.update(levyExcl);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
/** .
* @param levyExclIDs
* @return jsonView
* <pre><code> {
* "affected":
* "saved": true, false
* }</code></pre>
*/
// @PostMapping(name = "부과제외 대장 제거", value = "/remove.do")
public ModelAndView remove(LevyExcl levyExcl) {
boolean saved = levyExclService.remove(levyExcl);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
/*
if (!"xls".equals(req.getDownload())) {
List<?> result = levyExclService.getLevyExclList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "levyExcl");
} else {
XLSWriter xlsx = new XLSWriter()
.setFilename("부과제외 목록.xlsx")
.worksheet(0);
XLSWriter.Styler header = new XLSWriter.Styler()
.width(20)
.foregroundColor(HSSFColor.HSSFColorPredefined.LIGHT_BLUE.getIndex())
.configure(styler -> {
Font font = xlsx.workbook().createFont();
font.setColor(HSSFColor.HSSFColorPredefined.WHITE.getIndex());
styler.font(font);
});
CellStyle numeric = xlsx.n_nn0();
xlsx.cell(0, 0)
.value("부과제외 목록", XLSWriter.Styler.CENTER)
.merge(0, 15)
.cell(3, 0)
.rowValues(List.of(
"업무구분", header, "부과제외일자", header, "부과제외구분", header, "부과제외사유", header, "기타내용", header,
"민원신청번호", header, "민원접수번호", header, "민원접수일자", header, "단속일시", header, "차량번호", header,
"법정동", header, "단속장소", header, "과태료금액", header, "처리상태", header, "납부자명", header, "납부자생일", header
))
.cell(4, 0)
.values(
levyExclService.getLevyExclList(req.setFetchSize(0)),
"TASK_SE_NM", xlsx.format(r -> xlsx.str2date(r.get("LEVY_EXCL_YMD"))), "LEVY_EXCL_SE_NM", "LEVY_EXCL_RSN_NM", "ETC_CN",
"CVLCPT_APLY_NO", "CVLCPT_RCPT_NO", xlsx.format(r -> xlsx.str2date(r.get("CVLCPT_RCPT_YMD"))), xlsx.format(r -> xlsx.str2date(r.get("CRDN_YMD")) + " " + xlsx.str2time(r.get("CRDN_TM"))),
"VHRNO", "CRDN_STDG_NM", "CRDN_PLC", xlsx.style("FFNLG_AMT", numeric), "CRDN_STTS_NM", "RTPYR_NM", xlsx.format(r -> xlsx.str2date(r.get("RTPYR_BRDT")))
);
return new ModelAndView("xlsView")
.addObject("xls", xlsx);
}
*/

@ -194,22 +194,10 @@
</select>
<sql id="select">
SELECT C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD /* 업무 구분 코드 */
, C.VHRNO /* 차량번호 */
, C.CRDN_STDG_NM /* 단속 법정동 명 */
, C.CRDN_ROAD_NM /* 단속 도로 명 */
, C.CRDN_PLC /* 단속 장소 */
, C.CRDN_STTS_CD /* 단속 상태 코드 */
, C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM /* 단속 일시 */
, (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM /* 업무 구분 명 */
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, CC.CVLCPT_LINK_ID /* 민원 연계 ID */
, CC.CVLCPT_PRCS_CD /* 민원 처리 코드 */
, CC.CVLCPT_TRSM_CD /* 민원 전송 코드 */
, LE.LEVY_EXCL_ID /* 부과제외 ID */
SELECT LE.LEVY_EXCL_ID /* 부과제외 ID */
, LE.SGG_CD /* 시군구 코드 */
, LE.TASK_SE_CD /* 업무 구분 코드 */
, LE.CRDN_ID /* 단속 ID */
, LE.LEVY_EXCL_YMD /* 부과제외 일자 */
, LE.LEVY_EXCL_SE_CD /* 부과제외 구분 코드 */
, LE.LEVY_EXCL_RSN_CD /* 부과제외 사유 코드 */
@ -227,30 +215,61 @@
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM /* 등록자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM /* 수정자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.DLTR) AS DLTR_NM /* 삭제자 명 */
FROM TB_CRDN C
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_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N')
, C.VHRNO /* 차량번호 */
, C.CRDN_STTS_CD /* 단속 상태 코드 */
, C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM /* 단속 일시 */
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
FROM TB_LEVY_EXCL LE
LEFT OUTER JOIN TB_CRDN C ON (LE.CRDN_ID = C.CRDN_ID)
</sql>
<select id="selectLevyExcls" parameterType="map" resultType="dataobject">/* 부과제외 대장 객체 가져오기(levyExclMapper.selectLevyExcls) */
<include refid="select" />
<where>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} /* 단속 ID */
AND C.DEL_YN = 'N' /* 삭제 여부 */
</if>
<if test="levyExclIDs != null">
AND LE.LEVY_EXCL_ID IN ( /* 부과 제외 IDs */
AND LE.LEVY_EXCL_ID IN ( /* 부과 제외 IDs */
<foreach collection="levyExclIDs" item="levyExclId" separator=","> #{levyExclId} </foreach>
)
</if>
<if test="levyExclId != null">
AND LE.LEVY_EXCL_ID = #{levyExclId} /* 부과 제외 ID */
AND LE.LEVY_EXCL_ID = #{levyExclId} /* 부과 제외 ID */
</if>
<if test="crdnId != null">
AND LE.CRDN_ID = #{crdnId} /* 단속 ID */
</if>
<if test="delYN != null">
AND LE.DEL_YN = #{delYN} /* 삭제 여부 */
</if>
</where>
<include refid="utility.orderBy" />
</select>
<select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(levyExclMapper.selectCrdn) */
SELECT C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD /* 업무 구분 코드 */
, C.VHRNO /* 차량번호 */
, C.CRDN_STDG_NM /* 단속 법정동 명 */
, C.CRDN_ROAD_NM /* 단속 도로 명 */
, C.CRDN_PLC /* 단속 장소 */
, C.CRDN_STTS_CD /* 단속 상태 코드 */
, C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM /* 단속 일시 */
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, CC.CVLCPT_LINK_ID /* 민원 연계 ID */
, CC.CVLCPT_PRCS_CD /* 민원 처리 코드 */
, CC.CVLCPT_TRSM_CD /* 민원 전송 코드 */
, LE.LEVY_EXCL_ID /* 부과제외 ID */
, <include refid="utility.today" /> AS LEVY_EXCL_YMD /* 부과 제외 일자 */
, #{levyExclSeCd} AS LEVY_EXCL_SE_CD /* 부과 제외 구분 코드 */
FROM TB_CRDN C
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_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N')
WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */
AND C.DEL_YN = 'N' /* 삭제 여부 */
</select>
<insert id="insertLevyExcl" parameterType="map">/* 부과제외 대장 등록(levyExclMapper.insertLevyExcl) */
<selectKey resultType="string" keyProperty="levyExcl.levyExclId" keyColumn="NEW_ID" order="BEFORE">
SELECT CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(LEVY_EXCL_ID, 5)) + 1, 1) AS INT), 16, '0')) AS NEW_ID
@ -305,7 +324,7 @@
UPDATE TB_LEVY_EXCL
SET DEL_YN = 'Y' /* 삭제 여부 */
, DEL_DT = <include refid="utility.now" /> /* 삭제 일시 */
, DLTR = #{levyExcl.removedBy} /* 삭제자 */
, DLTR = #{levyExcl.modifiedBy} /* 삭제자 */
, DEL_RSN = #{levyExcl.delRsn} /* 삭제 사유 */
WHERE LEVY_EXCL_ID = #{levyExcl.levyExclId} /* 부과 제외 ID */
AND DEL_YN = 'N'

@ -551,7 +551,7 @@
// 검색조건
${pageName}Control.query = ${pageName}Fields.get();
${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize; // 한번에 조회되는 자료 건수 FETCH_XS = 30
${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize; // 한번에 조회되는 자료 건수
${pageName}Control.query.delYN = "N"; // 삭제 여부
${pageName}Control.load(1);
@ -568,10 +568,16 @@
return;
}
// DataTables(그리드) 타이틀
let headerInfo = $("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)").getHeaderInfo();
${pageName}Control.query.excelTitle = headerInfo.excelTitle;
${pageName}Control.query.excelTitleWidth = headerInfo.excelTitleWidth;
// DataTables(그리드) 데이터
let colDefs = getColDefs($("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td").not(":eq(0)"));
${pageName}Control.query.colDefs = colDefs;
${pageName}Control.download();
}

@ -18,6 +18,11 @@
<input type="hidden" id="levyExclId--${pageName}" name="levyExclId" data-map="LEVY_EXCL_ID" />
<div class="row g-1">
<!-- 단속일시 -->
<div class="col-md-12">
<label for="crdnYmdTm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">단속일시</label>
<input type="text" class="form-control w-35" id="crdnYmdTm--${pageName}" name="crdnYmdTm" data-map="CRDN_YMD_TM" data-fmt-type="dt" />
</div>
<!-- 차량번호 -->
<div class="col-md-12">
<label for="vhrno--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">차량번호</label>
@ -215,8 +220,9 @@
// 기본 데이터 설정
setFormData${pageName} = () => {
$("#vhrno--${pageName}").prop("readonly", true); // 차량번호
$("#levyExclSeNm--${pageName}").prop("readonly", true); // 부과 제외 구분
$("#crdnYmdTm--${pageName}").prop("readonly", true); // 단속 일시
$("#vhrno--${pageName}").prop("readonly", true); // 차량번호
$("#levyExclSeNm--${pageName}").prop("readonly", true); // 부과 제외 구분
if (${pageName}CallPurpose == "view") {
// input 요소들을 disabled

@ -80,8 +80,8 @@
<button type="button" class="btn btn-primary w-px-120" id="btnCreateWrng--${pageName}" title="계고 등록" onclick="fnCreateWrng${pageName}();">
계고 등록
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnCreateLevyExcl--${pageName}" title="부과제외 등록" onclick="fnCreateLevyExcl${pageName}();">
부과제외 등록
<button type="button" class="btn btn-primary w-px-120" id="btnCreateLevyExcl--${pageName}" title="부과 등록" onclick="fnCreateLevyExcl${pageName}();">
부과 등록
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnUpdateLevyExcl--${pageName}" title="부과제외 수정" onclick="fnUpdateLevyExcl${pageName}();">
부과제외 수정

@ -105,7 +105,6 @@ class FimsFormFields extends FormFields {
break;
default:
break;
}
}
if(input.name){

Loading…
Cancel
Save