개별총정보 추가.

main
jjh 1 year ago
parent 64197905d2
commit 53110d153a

@ -45,7 +45,6 @@ public class Excl01Controller extends ApplicationController {
addCodes(commonCodes, mav, "FIM021", "FIM022");
return mav.addObject("pageName", "excl01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("urlPrefix", "/excl/excl01") // URL로 사용할 prefix
.addObject("infoPrefix", "levyExcl") // prefix
.addObject("FIM021List", commonCodes.get("FIM021")) //
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)

@ -37,7 +37,6 @@ public class Excl02Controller extends ApplicationController {
@Resource(name = "excl02Service")
protected Excl02Service excl02Service;
/** 파일 정보 서비스 서비스 */
@Resource(name="fileService")
private FileService fileService;

@ -0,0 +1,42 @@
package cokr.xit.fims.sprt.dao;
import java.util.List;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import cokr.xit.fims.sprt.service.SprtQuery;
import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject;
/** - DAO
*
* <p> :
*
* <pre>
* ============ ============
* 2023-08-18 JoJH
* ================================
* </pre>
*/
@Mapper("sprt02Mapper")
public interface Sprt02Mapper extends AbstractMapper {
/** ID .
* @param crdnId ID
* @return
*/
DataObject selectCrdnInfo(String crdnId);
/** ID , , .
* @param crdnId
* @return , ,
*/
List<DataObject> selectCrdnPayerInfo(SprtQuery req);
default DataObject selectCrdnPayerInfo(String crdnId) {
List<DataObject> crdnPayer = selectCrdnPayerInfo(new SprtQuery().setCrdnId(crdnId));
return !crdnPayer.isEmpty() ? crdnPayer.get(0) : null;
}
}

@ -0,0 +1,30 @@
package cokr.xit.fims.sprt.service;
import cokr.xit.foundation.data.DataObject;
/** .
* <ul><li>{@link #getTotalDataInfo(SprtQuery) }</li>
* </ul>
* @author leebj
*/
public interface Sprt02Service {
/** ID .
* @param crdnId ID
* @return
*/
DataObject getCrdnInfo(String crdnId);
/** ID , , .
* @param crdnId ID
* @return , ,
*/
DataObject getCrdnPayerInfo(String crdnId);
/** ID .
* @param crdnId ID
* @return
*/
DataObject getOpnnSbmsnInfo(String crdnId);
}

@ -7,6 +7,7 @@ public class SprtQuery extends QueryRequest {
private static final long serialVersionUID = 1L;
private String crdnId;
private String delYn;
public String getCrdnId() {
return ifEmpty(crdnId, () -> null);
@ -14,6 +15,18 @@ public class SprtQuery extends QueryRequest {
public <T extends SprtQuery> T setCrdnId(String crdnId) {
this.crdnId = crdnId;
return self();
}
public String getDelYn() {
return ifEmpty(delYn, () -> null);
}
public <T extends SprtQuery> T setDelYn(String delYn) {
this.delYn = delYn;
return self();
}
}

@ -0,0 +1,36 @@
package cokr.xit.fims.sprt.service.bean;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import cokr.xit.fims.sprt.dao.Sprt02Mapper;
import cokr.xit.foundation.AbstractComponent;
import cokr.xit.foundation.data.DataObject;
/** Bean
* @author leebj
*/
@Component("sprt02Bean")
public class Sprt02Bean extends AbstractComponent {
@Resource(name = "sprt02Mapper")
private Sprt02Mapper sprt02Mapper;
/** ID .
* @param crdnId
* @return
*/
public DataObject getCrdnInfo(String crdnId) {
return sprt02Mapper.selectCrdnInfo(crdnId);
}
/** ID , , .
* @param crdnId ID
* @return , ,
*/
public DataObject getCrdnPayerInfo(String crdnId) {
return sprt02Mapper.selectCrdnPayerInfo(crdnId);
}
}

@ -0,0 +1,47 @@
package cokr.xit.fims.sprt.service.bean;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import cokr.xit.fims.excl.Excl02Query;
import cokr.xit.fims.excl.service.bean.Excl02Bean;
import cokr.xit.fims.sprt.service.Sprt02Service;
import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.DataObject;
/**
* @author leebj
*/
@Service("sprt02Service")
public class Sprt02ServiceBean extends AbstractServiceBean implements Sprt02Service {
/** 업무지원 Bean */
@Resource(name="sprt02Bean")
protected Sprt02Bean sprt02Bean;
/* 의견제출 대장 정보 Bean */
@Resource(name = "excl02Bean")
protected Excl02Bean excl02Bean;
@Override
public DataObject getCrdnInfo(String crdnId) {
return sprt02Bean.getCrdnInfo(crdnId);
}
@Override
public DataObject getCrdnPayerInfo(String crdnId) {
return sprt02Bean.getCrdnPayerInfo(crdnId);
}
@Override
public DataObject getOpnnSbmsnInfo(String crdnId) {
List<DataObject> opnnSbmsn = excl02Bean.getOpnnSbmsns(new Excl02Query().setCrdnId(crdnId));
return !opnnSbmsn.isEmpty() ? opnnSbmsn.get(0) : null;
}
}

@ -0,0 +1,97 @@
package cokr.xit.fims.sprt.web;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import cokr.xit.fims.sprt.service.Sprt02Service;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.base.code.CommonCode;
import cokr.xit.base.web.ApplicationController;
/**
*
* <p> :
*
* <pre>
* ============ ============
* 2023-08-18 JoJH
* ================================
* </pre>
*/
public class Sprt02Controller extends ApplicationController {
@Resource(name="sprt02Service")
private Sprt02Service sprt02Service;
/** (sprt/sprt02/010-main) .
* {@link #getOpnnSbmsnList(ExclQuery01) } .
* @return /sprt/sprt02/010-main
*/
public ModelAndView indivTotalInfoMain(String crdnId) {
DataObject totalInfo = sprt02Service.getCrdnInfo(crdnId);
boolean json = jsonResponse();
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sprt/sprt02010-main");
return mav
.addObject("pageName", "sprt02010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("totalInfo", json ? totalInfo : toJson(totalInfo)) // 개별총정보
;
}
/** ID , .
* @param crdnId
* @return fims/sprt/sprt02020-main jsonView
* <pre><code> {
* "crdnPayerInfo": {...}
* }</code></pre>
*/
@RequestMapping(name="단속, 납부자 정보 조회", value="/020/info.do")
public ModelAndView getCrdnPayerInfo(String crdnId) {
DataObject crdnPayerInfo = sprt02Service.getCrdnPayerInfo(crdnId);
boolean json = jsonResponse();
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sprt/sprt02020-info");
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054");
return mav
.addObject("pageName", "sprt02020")
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
.addObject("crdnPayerInfo", json ? crdnPayerInfo : toJson(crdnPayerInfo)) // 단속, 납부자, 부과 정보
;
}
/** ID .
* @param crdnId
* @return fims/sprt/sprt02030-main jsonView
* <pre><code> {
* "crdnPayerInfo": {...}
* }</code></pre>
*/
@RequestMapping(name="의견제출 정보 조회", value="/030/info.do")
public ModelAndView getOpnnSbmsnInfo(String crdnId) {
DataObject opnnSbmsnInfo = sprt02Service.getOpnnSbmsnInfo(crdnId);
boolean json = jsonResponse();
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sprt/sprt02030-info");
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054");
return mav
.addObject("pageName", "sprt02020")
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
.addObject("opnnSbmsnInfo", json ? opnnSbmsnInfo : toJson(opnnSbmsnInfo)) // 의견제출 정보
;
}
}

@ -145,6 +145,21 @@ public class CmnController {
}
}
@Controller
@RequestMapping(name="업무지원", value="/sprt/sprt02")
class Sprt02Controller extends cokr.xit.fims.sprt.web.Sprt02Controller {
/** .
* @return fims/sprt/sprt02010-main
*/
@Override
@RequestMapping(name="개별총정보 메인", value="/010/main.do")
public ModelAndView indivTotalInfoMain(String crdnId) {
return super.indivTotalInfoMain(crdnId);
}
}
@Controller
@RequestMapping(name="동영상 재생", value="/sprt/sprt03")
class Sprt03Controller extends cokr.xit.fims.sprt.web.Sprt03Controller {
@ -170,6 +185,7 @@ public class CmnController {
@Controller
@RequestMapping(name="부과제외 관리", value="/excl/excl01")
class Excl01Controller extends cokr.xit.fims.excl.web.Excl01Controller {
/** .
* @return fims/excl/excl01010-main
*/
@ -178,11 +194,13 @@ public class CmnController {
public ModelAndView levyExclusionMain() {
return super.levyExclusionMain();
}
}
@Controller
@RequestMapping(name="의견제출 관리", value="/excl/excl02")
class Excl02Controller extends cokr.xit.fims.excl.web.Excl02Controller {
/** .
* @return fims/excl/excl02010-main
*/
@ -191,11 +209,13 @@ public class CmnController {
public ModelAndView opinionSubmissionMain() {
return super.opinionSubmissionMain();
}
}
@Controller
@RequestMapping(name="단속 재등록 관리", value="/excl/excl03")
class Excl03Controller extends cokr.xit.fims.excl.web.Excl03Controller {
/** .
* @return fims/excl/excl03010-main
*/
@ -204,6 +224,7 @@ public class CmnController {
public ModelAndView crackdownReRegistrationMain() {
return super.crackdownReRegistrationMain();
}
}
}

@ -82,4 +82,8 @@ public class DpvController {
@RequestMapping(name="장애인과태료업무 업무지원", value="/DPV/sprt/sprt01/")
class Sprt01Controller extends cokr.xit.fims.sprt.web.Sprt01Controller {}
@Controller
@RequestMapping(name="장애인과태료업무 업무지원 - 개별총정보", value="/DPV/sprt/sprt02")
class Sprt02Controller extends cokr.xit.fims.sprt.web.Sprt02Controller {}
}

@ -59,8 +59,8 @@
, H.CRDN_STDG_NM /* 단속 법정동 명 */
, H.CRDN_ROAD_NM /* 단속 도로 명 */
, H.CRDN_PLC /* 단속 장소 */
, H.FFNLG_CRDN_AMT /* 과태료 단속 금액 */
, H.FFNLG_AMT /* 과태료 금액 */
, H.LEVY_AMT /* 부과 금액 */
, H.CRDN_STTS_CD /* 단속 상태 코드 */
, (SELECT FN_GET_CODE_NM('FIM010', H.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, J.RTPYR_ID /* 납부자 ID */

@ -102,8 +102,8 @@
, H.CRDN_STDG_NM /* 단속 법정동 명 */
, H.CRDN_ROAD_NM /* 단속 도로 명 */
, H.CRDN_PLC /* 단속 장소 */
, H.FFNLG_CRDN_AMT /* 과태료 단속 금액 */
, H.FFNLG_AMT /* 과태료 금액 */
, H.LEVY_AMT /* 부과 금액 */
, H.CRDN_STTS_CD /* 단속 상태 코드 */
, (SELECT FN_GET_CODE_NM('FIM010', H.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, J.RTPYR_ID /* 납부자 ID */
@ -268,6 +268,7 @@
, H.VHRNO /* 차량번호 */
, H.CRDN_STTS_CD /* 단속 상태 코드 */
, (SELECT FN_GET_CODE_NM('FIM010', H.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, J.RTPYR_ID /* 납부자 ID */
, J.RTPYR_NM /* 납부자 명 */
FROM TB_OPNN_SBMSN A
INNER JOIN TB_CRDN H ON (A.CRDN_ID = H.CRDN_ID)

@ -49,9 +49,9 @@
, H.CRDN_ROAD_NM /* 단속 도로 명 */
, H.CRDN_PLC /* 단속 장소 */
, H.ATCH_FILE_CNT /* 첨부 파일 수 */
, H.FFNLG_CRDN_AMT /* 과태료 단속 금액 */
, H.FFNLG_AMT /* 과태료 금액 */
, H.LEVY_AMT /* 부과 금액 */
, H.ADVNTCE_LEVY_AMT /* 사전통지 부과 금액 */
, H.ADVNTCE_AMT /* 사전통지 금액 */
, H.CRDN_STTS_CD /* 단속 상태 코드 */
, (SELECT FN_GET_CODE_NM('FIM010', H.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
FROM TB_CRDN_RE_REG A
@ -93,7 +93,7 @@
<when test="by == 'vhrno'"> H.VHRNO </when>
<when test="by == 'crdnStdgNm'"> H.CRDN_STDG_NM </when>
<when test="by == 'crdnPlc'"> H.CRDN_PLC </when>
<when test="by == 'ffnlgAmt'"> H.FFNLG_AMT </when>
<when test="by == 'ffnlgCrdnAmt'"> H.FFNLG_CRDN_AMT </when>
<when test="by == 'crdnSttsNm'"> H.CRDN_STTS_CD </when>
</choose>
<include refid="dynamicSearch.center" />#{term}<include refid="dynamicSearch.end" />
@ -200,12 +200,12 @@
, A.VIN
, A.VHCL_NM
, A.VHCL_COLOR
, A.FFNLG_AMT
, A.FFNLG_CRDN_AMT
, A.FFNLG_RDUCT_RT
, A.LEVY_AMT
, A.FFNLG_AMT
, A.ADVNTCE_BGNG_YMD
, A.ADVNTCE_DUDT_YMD
, A.ADVNTCE_LEVY_AMT
, A.ADVNTCE_AMT
, A.OPNN_SBMSN_YN
, A.ETC_CN
, A.LEVY_ID

@ -0,0 +1,166 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cokr.xit.fims.sprt.dao.Sprt02Mapper">
<!-- 개별총정보 매퍼
========== 변경 이력 ==========
2023-08-18 JoJH 최초 작성
============================ -->
<sql id="selectCrdn">
SELECT A.CRDN_ID /* 단속 ID */
, A.SGG_CD /* 시군구 코드 */
, A.TASK_SE_CD /* 업무 구분 코드 */
, (CONCAT(A.CRDN_YMD, A.CRDN_TM)) AS CRDN_YMD_TM /* 단속 일시 */
, A.VHRNO /* 차량번호 */
, (SELECT FN_GET_CODE_NM('FIM010', A.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, A.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */
, (CONCAT(E.ACNTG_YR, '-', E.LEVY_NO)) AS GOJI_NO /* 고지번호 */
FROM TB_CRDN A /* 단속 대장 */
LEFT OUTER JOIN TB_LEVY E ON (A.LEVY_ID = E.LEVY_ID) /* 부과 대장 */
</sql>
<select id="selectCrdnInfo" parameterType="String" resultType="dataobject">/* 개별총정보 조회(sprt01Mapper.selectCrdnPayerInfo) */
<include refid="selectCrdn" />
WHERE A.CRDN_ID = #{crdnId} /* 단속 ID */
</select>
<sql id="selectCrdnPayer">
SELECT A.CRDN_ID /* 단속 ID */
, A.SGG_CD /* 시군구 코드 */
, A.TASK_SE_CD /* 업무 구분 코드 */
, (SELECT FN_GET_CODE_NM('FIM054', A.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM /* 업무 구분 코드 명 */
, A.CRDN_REG_SE_CD /* 단속 등록 구분 코드 */
, (SELECT FN_GET_CODE_NM('FIM026', A.CRDN_REG_SE_CD) FROM DUAL) AS CRDN_REG_SE_NM /* 단속 등록 구분 명 */
, A.CRDN_INPT_SE_CD /* 단속 입력 구분 코드 */
, (SELECT FN_GET_CODE_NM('FIM003', A.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM /* 단속 입력 구분 명 */
, A.CVLCPT_LINK_YN /* 민원 연계 여부 */
, A.LINK_TBL_NM /* 연계 테이블 명 */
, A.LINK_ID /* 연계 ID */
, A.CRDN_YMD /* 단속 일자 */
, A.CRDN_TM /* 단속 시각 */
, (CONCAT(A.CRDN_YMD, A.CRDN_TM)) AS CRDN_YMD_TM /* 단속 일시 */
, A.VHRNO /* 차량번호 */
, A.CRDN_STDG_NM /* 단속 법정동 명 */
, A.CRDN_ROAD_NM /* 단속 도로 명 */
, A.CRDN_PLC /* 단속 장소 */
, A.VLTN_ID /* 위반 ID */
, A.GPS_X /* GPS X */
, A.GPS_Y /* GPS Y */
, A.ATCH_FILE_CNT /* 첨부 파일 수 */
, A.VIN /* 차대번호 */
, A.VHCL_NM /* 차량 명 */
, A.VHCL_COLOR /* 차량 색상 */
, A.FFNLG_CRDN_AMT /* 과태료 단속 금액 */
, A.FFNLG_RDUCT_RT /* 과태료 감경 율 */
, A.FFNLG_AMT /* 과태료 금액 */
, A.ADVNTCE_BGNG_YMD /* 사전통지 시작 일자 */
, A.ADVNTCE_DUDT_YMD /* 사전통지 납기 일자 */
, A.ADVNTCE_AMT /* 사전통지 금액 */
, A.OPNN_SBMSN_YN /* 의견 제출 여부 */
, A.ETC_CN /* 기타 내용 */
, A.CRDN_STTS_CD /* 단속 상태 코드 */
, (SELECT FN_GET_CODE_NM('FIM010', A.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, A.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */
, A.ADTN_AMT /* 가산 금액 */
, A.MINUS_AMT /* 감경 금액 */
, A.RCVMT_AMT /* 수납 금액 */
, A.BFR_CRDN_ID /* 이전 단속 ID */
, A.DEL_YN /* 삭제 여부 */
, A.REG_DT /* 등록 일시 */
, A.RGTR /* 등록자 */
, A.MDFCN_DT /* 수정 일시 */
, A.MDFR /* 수정자 */
, A.DEL_DT /* 삭제 일시 */
, A.DLTR /* 삭제자 */
, A.DEL_RSN /* 삭제 사유 */
, B.CRDN_SE_CD /* 단속 구분 코드 */
, B.TEAM_ID /* 조 ID */
, B.DTL_CRDN_PLC /* 상세 단속 장소 */
, B.CRDN_SPAREA_CD /* 단속 특별구역 코드 */
, B.CRDN_BGNG_TM /* 단속 시작 시각 */
, B.CRDN_END_TM /* 단속 종료 시각 */
, B.CRDN_SN /* 단속 일련번호 */
, B.MOSC_X /* 모자이크 X */
, B.MOSC_Y /* 모자이크 Y */
, B.TOWNG_YN /* 견인 여부 */
, B.USE_FUEL_CD /* 사용 연료 코드 */
, B.FFNLG_CARMDL_CD /* 과태료 차종 코드 */
, B.PARKNG_PSBLTY_RSLT_CD /* 주차 가능 결과 코드 */
, B.VLTN_NMTM /* 위반 횟수 */
, B.OVTIME_YN /* 시간외 여부 */
, B.OVTIME_PRTTN_YN /* 시간외 분할 여부 */
, C.RTPYR_ID /* 납부자 ID */
, C.RTPYR_INPT_SE_CD /* 납부자 입력 구분 코드 */
, C.RTPYR_SE_CD /* 납부자 구분 코드 */
, C.RTPYR_NO /* 납부자 번호 */
, C.RTPYR_NM /* 납부자 명 */
, C.RTPYR_TELNO /* 납부자 전화번호 */
, C.RTPYR_MBL_TELNO /* 납부자 휴대 전화번호 */
, C.RTPYR_EML /* 납부자 이메일 */
, C.RTPYR_BRDT /* 납부자 생년월일 */
, C.RTPYR_STTS_CD /* 납부자 상태 코드 */
, C.ADDR_SE_CD /* 주소 구분 코드 */
, C.ZIP /* 우편번호 */
, C.ROAD_NM_CD /* 도로 명 코드 */
, C.UDGD_SE_CD /* 지하 구분 코드 */
, C.BMNO /* 건물본번 */
, C.BSNO /* 건물부번 */
, C.BLDG_MNG_NO /* 건물 관리 번호 */
, C.STDG_CD /* 법정동 코드 */
, C.DONG_CD /* 행정동 코드 */
, C.MTN_SE_CD /* 산 구분 코드 */
, C.MNO /* 본번 */
, C.SNO /* 부번 */
, C.SPCL_DONG /* 특수 동 */
, C.SPCL_HO /* 특수 호 */
, C.SPCL_ADDR /* 특수 주소 */
, C.ADDR /* 주소 */
, C.DTL_ADDR /* 상세 주소 */
, C.WHOL_ADDR /* 전체 주소 */
, D.CVLCPT_APLY_SE_CD /* 민원 신청 구분 코드 */
, D.DSTRBNC_YN /* 1면 방해 여부 */
, D.CVLCPT_RCPT_YMD /* 민원 접수 일자 */
, D.CVLCPT_APLY_NO /* 민원 신청 번호 */
, D.CVLCPT_RCPT_NO /* 민원 접수 번호 */
, D.CVLCPT_LIST_NO /* 민원 목록 번호 */
, D.CVLCPT_APLCNT_NM /* 민원 신청인 명 */
, D.CVLCPT_APLY_DT /* 민원 신청 일시 */
, D.CVLCPT_APLY_TTL_NM /* 민원 신청 제목 명 */
, D.CVLCPT_APLY_CN /* 민원 신청 내용 */
, D.CVLCPT_GIST /* 민원 요지 */
, D.CVLCPT_PRCS_PIC_NM /* 민원 처리 담당자 명 */
, D.CVLCPT_PRCS_PRNMNT_DT /* 민원 처리 예정 일시 */
, D.CVLCPT_PRCS_CD /* 민원 처리 코드 */
, D.CVLCPT_PRCS_SUMRY /* 민원 처리 요약 */
, D.CVLCPT_PRCS_RSLT_CN /* 민원 처리 결과 내용 */
, D.CVLCPT_PRCS_CMPTN_DT /* 민원 처리 완료 일시 */
, D.CVLCPT_PRCS_PIC /* 민원 처리 담당자 */
, E.LEVY_ID /* 부과 ID */
, E.INST_CD /* 기관 코드 */
, E.DEPT_CD /* 부서 코드 */
, E.ACNTG_YR /* 회계 연도 */
, E.ACNTG_SE /* 회계 구분 */
, E.TXITM_CD /* 세목 코드 */
, E.TXITM_NM /* 세목 명 */
, E.LEVY_NO /* 부과 번호 */
, E.INSPY_SN /* 분납 순번 */
, (CONCAT(E.ACNTG_YR, '-', E.LEVY_NO)) AS GOJI_NO /* 고지번호 */
, E.LEVY_SE_CD /* 부과 구분 코드 */
, E.RCVMT_SE_CD /* 수납 구분 코드 */
FROM TB_CRDN A /* 단속 대장 */
INNER JOIN TB_CRDN_ADI B ON (A.CRDN_ID = B.CRDN_ID) /* 단속 부가 정보 */
LEFT OUTER JOIN TB_PAYER C ON (A.RTPYR_ID = C.RTPYR_ID) /* 납부자 대장 */
LEFT OUTER JOIN TB_CRDN_CVLCPT D ON (A.LINK_ID = D.CVLCPT_LINK_ID AND A.CVLCPT_LINK_YN = 'Y' AND D.DEL_YN = 'N') /* 단속 민원 대장 대장 */
LEFT OUTER JOIN TB_LEVY E ON (A.LEVY_ID = E.LEVY_ID) /* 부과 대장 */
</sql>
<select id="selectCrdnPayerInfo" parameterType="map" resultType="dataobject">/* 개별총정보 조회(sprt01Mapper.selectCrdnPayerInfo) */
<include refid="selectCrdnPayer" />
WHERE A.CRDN_ID = #{crdnId} /* 단속 ID */
<if test="delYn != null">
AND A.DEL_YN = #{delYn} /* 삭제 여부 */
</if>
</select>
</mapper>

@ -171,10 +171,10 @@
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button class="btn btn-primary" id="btnUpdate--${pageName}" title="수정" onclick="fnBtnUpdate${pageName}();">
<button type="button" class="btn btn-primary" id="btnUpdate--${pageName}" title="수정" onclick="fnBtnUpdate${pageName}();">
수정
</button>
<button class="btn btn-primary" id="btnRemove--${pageName}" title="삭제" onclick="fnBtnRemove${pageName}();">
<button type="button" class="btn btn-primary" id="btnRemove--${pageName}" title="삭제" onclick="fnBtnRemove${pageName}();">
삭제
</button>
</span>
@ -249,15 +249,11 @@
</table>
</div>
</div>
</div>
<!-- / DataTables(그리드) -->
</div> <!-- / DataTables(그리드) -->
</div>
</div>
<!-- / Wrapper-list -->
</div>
<!-- / Card -->
</div>
<!-- / Content -->
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> -->
</div> <!-- <div class="container-xxl flex-grow-1 px-0"> -->
<jsp:include page="/WEB-INF/jsp/include/bottom.jsp" />
@ -366,7 +362,6 @@
, title : "개별총정보"
, content : resp
, size : "xxl"
// , init : () => ${pageName}Control.setInfo(info) // 개별총정보 다이얼로그에서 실행할 함수
});
}
});
@ -457,7 +452,6 @@
if (el.scrollTop() == 0) return;
// if ((el[0].scrollHeight - el.scrollTop() + 17) == el.outerHeight()) {
if ((el[0].scrollHeight - el.scrollTop() + VERTICAL_SCROLL_HEIGHT) <= el.outerHeight()) {
fnBtnSearchList${pageName}(${pageName}Control.query.pageNum + 1);
}

@ -5,12 +5,6 @@
<div class="card">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<!-- hidden -->
<input type="hidden" id="crdnId--${pageName}" name="crdnId" data-map="CRDN_ID" />
<input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" />
<input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" data-map="TASK_SE_CD" />
<input type="hidden" id="levyExclId--${pageName}" name="levyExclId" data-map="LEVY_EXCL_ID" />
<div class="row g-1">
<!-- 차량번호 -->
<div class="col-md-12">
@ -56,7 +50,7 @@
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button class="btn btn-primary" id="btnSave--${pageName}" title="저장" onclick="fnBtnSave${pageName}()">저장</button>
<button type="button" class="btn btn-primary" id="btnSave--${pageName}" title="저장" onclick="fnBtnSave${pageName}()">저장</button>
</span>
</span>
</div>

@ -172,16 +172,16 @@
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button class="btn btn-primary" id="btnCreate--${pageName}" title="등록" onclick="fnBtnCreate${pageName}();">
<button type="button" class="btn btn-primary" id="btnCreate--${pageName}" title="등록" onclick="fnBtnCreate${pageName}();">
등록
</button>
<button class="btn btn-primary" id="btnUpdate--${pageName}" title="수정" onclick="fnBtnUpdate${pageName}();">
<button type="button" class="btn btn-primary" id="btnUpdate--${pageName}" title="수정" onclick="fnBtnUpdate${pageName}();">
수정
</button>
<button class="btn btn-primary" id="btnRemove--${pageName}" title="삭제" onclick="fnBtnRemove${pageName}();">
<button type="button" class="btn btn-primary" id="btnRemove--${pageName}" title="삭제" onclick="fnBtnRemove${pageName}();">
삭제
</button>
<button class="btn btn-primary" id="btnUpdateStatus--${pageName}" title="심의" onclick="fnBtnUpdateStatus${pageName}();">
<button type="button" class="btn btn-primary" id="btnOpnnSbmsnDlbrt--${pageName}" title="심의" onclick="fnBtnOpnnSbmsnDlbrt${pageName}();">
심의
</button>
</span>
@ -357,7 +357,7 @@
};
// 심의 dialog
${pageName}Control.getStatusInfo = (opnnId) => {
${pageName}Control.getOpnnSbmsnDlbrtInfo = (opnnId) => {
ajax.get({
url : wctx.url(prefixUrl + "/030/info.do")
, data : { opnnId : opnnId }
@ -381,7 +381,7 @@
}
ajax.get({
url : wctx.url("/sprt/sprt01/020/info.do")
url : wctx.url("/sprt/sprt02/010/main.do")
, data : { crdnId : crdnId }
, success : resp => {
resp = resp.replace(/infoPrefix/g, this.prefix)
@ -531,7 +531,7 @@
}
// 심의
function fnBtnUpdateStatus${pageName}() {
function fnBtnOpnnSbmsnDlbrt${pageName}() {
let opnnId = ${pageName}Control.dataset.getValue("OPNN_ID");
// 의견제출 ID 가 없다면.. return
@ -539,7 +539,7 @@
return;
}
${pageName}Control.getStatusInfo(opnnId);
${pageName}Control.getOpnnSbmsnDlbrtInfo(opnnId);
}
/**************************************************************************

@ -5,21 +5,15 @@
<div class="card">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<!-- hidden -->
<input type="hidden" id="crdnId--${pageName}" name="crdnId" data-map="CRDN_ID" />
<input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" />
<input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" data-map="TASK_SE_CD" />
<input type="hidden" id="opnnId--${pageName}" name="opnnId" data-map="OPNN_ID" />
<div class="row g-1">
<!-- 차량번호 -->
<div class="col-md-4">
<label for="vhrno--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">차량번호</label>
<input type="text" class="form-control w-30" id="vhrno--${pageName}" name="vhrno" data-map="VHRNO" readonly />
</div>
<!-- 위반일시 -->
<!-- 단속일시 -->
<div class="col-md-4">
<label for="crdnYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">위반일시</label>
<label for="crdnYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">단속일시</label>
<input type="text" class="form-control w-30" id="crdnYmd--${pageName}" name="crdnYmd" data-map="CRDN_YMD" readonly />
</div>
<!-- 납부자 명 -->
@ -99,7 +93,7 @@
<!-- 의견 제출 내용 -->
<div class="col-md-12">
<label for="opnnSbmsnCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">의견제출 내용</label>
<textarea class="form-control w-87" id="opnnSbmsnCn--${pageName}" name="opnnSbmsnCn" data-map="OPNN_SBMSN_CN" rows="5" data-maxlengthb="4000">
<textarea type="text" class="form-control w-87" id="opnnSbmsnCn--${pageName}" name="opnnSbmsnCn" data-map="OPNN_SBMSN_CN" rows="5" data-maxlengthb="4000">
</textarea>
</div>
<!-- 의견 제출 구분 코드 -->
@ -164,7 +158,7 @@
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button class="btn btn-primary" id="btnSave--${pageName}" title="저장" onclick="fnBtnSave${pageName}()">저장</button>
<button type="button" class="btn btn-primary" id="btnSave--${pageName}" title="저장" onclick="fnBtnSave${pageName}()">저장</button>
</span>
</span>
</div>

@ -5,12 +5,6 @@
<div class="card">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<!-- hidden -->
<input type="hidden" id="crdnId--${pageName}" name="crdnId" data-map="CRDN_ID" />
<input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" />
<input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" data-map="TASK_SE_CD" />
<input type="hidden" id="opnnId--${pageName}" name="opnnId" data-map="OPNN_ID" />
<div class="row g-1">
<!-- 접수 번호 -->
<div class="col-md-6">
@ -94,7 +88,7 @@
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button class="btn btn-primary" id="btnSave--${pageName}" title="저장" onclick="fnBtnSave${pageName}()">저장</button>
<button type="button" class="btn btn-primary" id="btnSave--${pageName}" title="저장" onclick="fnBtnSave${pageName}()">저장</button>
</span>
</span>
</div>

@ -5,7 +5,6 @@
<div class="content-wrapper">
<!-- Content -->
<div class="container-xxl flex-grow-1 px-0">
<%--h4 id="pageTitle" class="fw-bold py-3 mb-4">페이지 제목</h4--%>
<c:set var="prefixName" scope="request">단속재등록</c:set>
<!-- Page Body -->
@ -140,10 +139,10 @@
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button class="btn btn-primary" id="btnCreate--${pageName}" title="등록" onclick="fnBtnCreate${pageName}();">
<button type="button" class="btn btn-primary" id="btnCreate--${pageName}" title="등록" onclick="fnBtnCreate${pageName}();">
등록
</button>
<button class="btn btn-primary" id="btnBfrCrdnTotalInfo--${pageName}" title="이전 단속정보 보기" onclick="fnBtnBfrCrdnTotalInfo${pageName}();">
<button type="button" class="btn btn-primary" id="btnBfrCrdnTotalInfo--${pageName}" title="이전 단속정보 보기" onclick="fnBtnBfrCrdnTotalInfo${pageName}();">
이전 단속정보 보기
</button>
</span>
@ -171,7 +170,7 @@
<th onclick="searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">차량번호</th>
<th onclick="searchFromGridTitle('CRDN_STDG_NM', this.innerText, 'match', 'part');">법정동</th>
<th onclick="searchFromGridTitle('CRDN_PLC', this.innerText, 'match', 'part');">단속장소</th>
<th onclick="searchFromGridTitle('FFNLG_AMT', this.innerText, 'match', 'part');">과태료금액</th>
<th onclick="searchFromGridTitle('FFNLG_AMT', this.innerText, 'match', 'part');">과태료단속금액</th>
<th onclick="searchFromGridTitle('CRDN_STTS_NM', this.innerText, 'codeValue', 'FIM010');">처리상태명</th>
<th>등록일시</th>
<th>등록사용자</th>
@ -192,7 +191,7 @@
<td class="text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
<td class="text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td>
<td class="text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td>
<td class="text-center" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td>
<td class="text-center" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_CRDN_AMT}</td>
<td class="text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STTS_NM}</td>
<td class="text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
<td class="text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR}</td>
@ -300,7 +299,7 @@
}
ajax.get({
url : wctx.url("/sprt/sprt01/020/info.do")
url : wctx.url("/sprt/sprt02/010/main.do")
, data : { crdnId : crdnId }
, success : resp => {
resp = resp.replace(/infoPrefix/g, this.prefix)

@ -0,0 +1,210 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<!-- Page Body -->
<div class="card">
<div class="wrapper-list">
<div>
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<div class="row g-1">
<!-- 차량번호 -->
<div class="col-md-3">
<label for="vhrno--${pageName}" class="w-px-100 bg-lighter pe-2 col-form-label text-sm-end">차량번호</label>
<input type="text" class="form-control w-35" id="vhrno--${pageName}" name="vhrno" data-map="VHRNO" readonly />
</div>
<!-- 위반일시 -->
<div class="col-md-3">
<label for="crdnYmdTm--${pageName}" class="w-px-100 bg-lighter pe-2 col-form-label text-sm-end">위반일시</label>
<input type="text" class="form-control w-45" id="crdnYmdTm--${pageName}" name="crdnYmdTm" data-map="CRDN_YMD_TM" readonly />
</div>
<!-- 단속상태 -->
<div class="col-md-4">
<label for="crdnSttsNm--${pageName}" class="w-px-100 bg-lighter pe-2 col-form-label text-sm-end">단속상태</label>
<input type="text" class="form-control w-30" id="crdnSttsChgDt--${pageName}" name="crdnSttsChgDt" data-map="CRDN_STTS_CHG_DT" readonly />
<input type="text" class="form-control w-30" id="crdnSttsNm--${pageName}" name="crdnSttsNm" data-map="CRDN_STTS_NM" readonly />
</div>
<!-- 자료 이동 버튼 -->
<div class="col-md-2 text-end">
<input type="text" id="countStauts--${pageName}" class="form-control w-px-120 text-center fw-bold" readonly />
<button type="button" class="w-px-50" id="btnPrev--${pageName}">◀</button>
<button type="button" class="w-px-50" id="btnNext--${pageName}">▶</button>
</div>
</div> <!-- <div class="row g-1"> -->
</form> <!-- /입력 영역 -->
</div>
</p>
<div class="nav-align-top">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<button type="button" class="nav-link active" role="tab"
data-bs-toggle="tab" data-bs-target="#crdnPayerInfo" aria-controls="crdnPayerInfo" aria-selected="true"
onClick="fnBtnCrdnPayerInfo${pageName}();">
단속 정보
</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link" role="tab"
data-bs-toggle="tab" data-bs-target="#opnnSbmsnInfo" aria-controls="opnnSbmsnInfo" aria-selected="false"
onClick="fnBtnOpnnSbmsnInfo${pageName}();">
의견제출 정보
</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link" role="tab" data-bs-toggle="tab" data-bs-target="#sndngInfo" aria-controls="sndngInfo" aria-selected="false">발송반송 정보</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link" role="tab" data-bs-toggle="tab" data-bs-target="#prcsDtlInfo" aria-controls="prcsDtlInfo" aria-selected="false">처리 상세정보</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link" role="tab" data-bs-toggle="tab" data-bs-target="#levyNpmntInfo" aria-controls="levyNpmntInfo" aria-selected="false">부과체납 정보</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link" role="tab" data-bs-toggle="tab" data-bs-target="#rcvmtInfo" aria-controls="rcvmtInfo" aria-selected="false">수납 정보</button>
</li>
<li class="nav-item">
<button type="button" class="nav-link" role="tab" data-bs-toggle="tab" data-bs-target="#cvlcptDscsnInfo" aria-controls="cvlcptDscsnInfo" aria-selected="false">민원상담 정보</button>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane fade show active" id="crdnPayerInfo" role="tabpanel">
단속 정보
</div>
<div class="tab-pane fade" id="opnnSbmsnInfo" role="tabpanel">
의견제출 정보
</div>
<div class="tab-pane fade" id="sndngInfo" role="tabpanel">
발송반송 정보
</div>
<div class="tab-pane fade" id="prcsDtlInfo" role="tabpanel">
처리 상세정보
</div>
<div class="tab-pane fade" id="levyAfterInfo" role="tabpanel">
부과이후 정보
</div>
<div class="tab-pane fade" id="cvlcptDscsnInfo" role="tabpanel">
민원상담 정보
</div>
</div>
</div>
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> -->
<script>
/**************************************************************************
* Global Variable
**************************************************************************/
// URL
var prefixUrl = "/sprt/sprt02";
// FormFields
var ${pageName}Fields = new FormFields("#frmEdit--${pageName}");
/**************************************************************************
* DatasetControl
**************************************************************************/
var ${pageName}Control = new DatasetControl({
prefix : "indivTotalInfo"
, prefixName : "개별총정보"
, keymapper : info => info ? info.CRDN_ID : ""
, dataGetter : obj => obj.totalInfo
, formats : {
CRDN_YMD_TM : datetimeFormat
, CRDN_STTS_CHG_DT : datetimeFormat
}
});
${pageName}Control.onCurrentChange = item => {
// Dataset 셋팅
${pageName}Fields.set(item);
}
/**************************************************************************
*
**************************************************************************/
// 저장 callback
${pageName}Control.onSave = (resp) => {
if (resp.saved) {
}
}
// 저장
${pageName}Control.save = (info) => {
if (!info) return;
}
/**************************************************************************
* 초기 셋팅
**************************************************************************/
// 검색조건 초기값 셋팅
function initForm${pageName}() {
}
// 이벤트 설정
function setEvent${pageName}() {
}
/**************************************************************************
* function
**************************************************************************/
// 단속 정보
function fnBtnCrdnPayerInfo${pageName}() {
let crdnId = ${pageName}Control.dataset.getValue("CRDN_ID");
// 단속 ID 가 없다면.. return
if (crdnId == undefined || crdnId == "") {
return;
}
ajax.get({
url : wctx.url("/sprt/sprt02/020/info.do")
, data : { crdnId : crdnId }
, success : resp => {
$("#crdnPayerInfo").html(resp);
}
});
}
// 의견제출 정보
function fnBtnOpnnSbmsnInfo${pageName}() {
let crdnId = ${pageName}Control.dataset.getValue("CRDN_ID");
// 단속 ID 가 없다면.. return
if (crdnId == undefined || crdnId == "") {
return;
}
ajax.get({
url : wctx.url("/sprt/sprt02/030/info.do")
, data : { crdnId : crdnId }
, success : resp => {
$("#opnnSbmsnInfo").html(resp);
}
});
}
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// 이벤트 설정
setEvent${pageName}();
// 화면 초기 설정
initForm${pageName}();
// Dataset 셋팅
${pageName}Control.setData([${totalInfo}]);
//
fnBtnCrdnPayerInfo${pageName}();
});
// #sourceURL=sprt02010-main.jsp
</script>

@ -0,0 +1,415 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<!-- Page Body -->
<div class="d-flex flex-row justify-content-evenly">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<!-- <div class="card"> -->
<div class="card" style="max-width:1100px;" title="단속 정보">
<!-- 업무 버튼 -->
<div class="container-page-btn">
<!-- 버튼 우측 정렬 -->
<span class="container-window-btn-right">
<button type="button" class="btn btn-primary" id="btnOpenCvlcptOrgnl--${pageName}" title="민원 원본 보기" onclick="fnBtnOpenCvlcptOrgnl${pageName}();">
민원 원본 보기
</button>
<button type="button" class="btn btn-primary" id="btnOpenAnswerPreview--${pageName}" title="민원 답변 보기" onclick="fnBtnOpenAnswerPreview${pageName}();">
민원 답변 보기
</button>
<button type="button" class="btn btn-primary" id="btnCrdnUpdate--${pageName}" title="단속정보 수정" onclick="fnBtnCrdnUpdate${pageName}();">
단속 정보 수정
</button>
<button type="button" class="btn btn-primary" id="btnCrdnReReg--${pageName}" title="부과취소 재등록" onclick="btnCrdnReReg${pageName}();">
부과취소 재등록
</button>
<button type="button" class="btn btn-primary" id="btnCrdnRemove--${pageName}" title="자료 삭제" onclick="fnBtnCrdnRemove${pageName}();">
자료 삭제
</button>
<button type="button" class="btn btn-primary" id="btnNoticeOtpt--${pageName}" title="고지서 출력" onclick="fnBtnNoticeOtpt${pageName}();">
고지서 출력
</button>
<button type="button" class="btn btn-primary" id="btnCrdnSttsUpdate--${pageName}" title="단속 상태 변경" onclick="fnBtnCrdnSttsUpdate${pageName}();">
단속 상태 변경
</button>
</span> <!-- <span class="container-window-btn-right"> -->
</div> <!-- <div class="container-page-btn"> -->
<div class="row g-1">
<!-- 등록구분 -->
<div class="col-md-4">
<label for="crdnRegSeNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">등록구분</label>
<input type="text" class="form-control w-40" id="crdnRegSeNm--${pageName}" name="crdnRegSeNm" data-map="CRDN_REG_SE_NM" readonly />
</div>
<!-- 입력구분 -->
<div class="col-md-4">
<label for="crdnInptSeNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">입력구분</label>
<input type="text" class="form-control w-40" id="crdnInptSeNm--${pageName}" name="crdnInptSeNm" data-map="CRDN_INPT_SE_NM" readonly />
</div>
<!-- -->
<div class="col-md-4">
</div>
<!-- 단속일시 -->
<div class="col-md-4">
<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-50" id="crdnYmdTm--${pageName}" name="crdnYmdTm" data-map="CRDN_YMD_TM" readonly />
</div>
<!-- 차량번호 -->
<div class="col-md-4">
<label for="vhrno--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">차량번호</label>
<input type="text" class="form-control w-40" id="vhrno--${pageName}" name="vhrno" data-map="VHRNO" readonly />
</div>
<!-- 위반내용 -->
<div class="col-md-4">
<label for="vltnNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">위반내용</label>
<input type="text" class="form-control w-40" id="vltnNm--${pageName}" name="vltnNm" data-map="VLTN_NM" readonly />
<label for="dstrbncYn--${pageName}">
<input type="checkbox" id="dstrbncYn--${pageName}" name="dstrbncYn" data-map="DSTRBNC_YN" disabled /> 1면 방해
</label>
</div>
<!-- 법정동 -->
<div class="col-md-4">
<label for="crdnStdgNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">법정동</label>
<input type="text" class="form-control w-40" id="crdnStdgNm--${pageName}" name="crdnStdgNm" data-map="CRDN_STDG_NM" readonly />
</div>
<!-- 단속 장소 -->
<div class="col-md-4">
<label for="crdnPlc--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">단속 장소</label>
<input type="text" class="form-control w-60" id="crdnPlc--${pageName}" name="crdnPlc" data-map="CRDN_PLC" readonly />
</div>
<!-- 상세 단속 장소 -->
<div class="col-md-4">
<label for="dtlCrdnPlc--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">상세 단속 장소</label>
<input type="text" class="form-control w-60" id="dtlCrdnPlc--${pageName}" name="dtlCrdnPlc" data-map="DTL_CRDN_PLC" readonly />
</div>
<!-- 민원 신청인 명 -->
<div class="col-md-4">
<label for="cvlcptAplcntNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">민원 신청인</label>
<input type="text" class="form-control w-40" id="cvlcptAplcntNm--${pageName}" name="cvlcptAplcntNm" data-map="CVLCPT_APLCNT_NM" readonly />
</div>
<!-- -->
<div class="col-md-4">
</div>
<!-- 담당자 -->
<div class="col-md-4">
<label for="cvlcptPrcsPicNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">담당자</label>
<input type="text" class="form-control w-40" id="cvlcptPrcsPicNm--${pageName}" name="cvlcptPrcsPicNm" data-map="CVLCPT_PRCS_PIC_NM" readonly />
</div>
<!-- 민원 신청 내용 -->
<!-- <div class="col-md-12"> -->
<%-- <label for="cvlcptAplyCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end align-top">민원 신청 내용</label> --%>
<%-- <textarea type="text" class="form-control w-87" id="cvlcptAplyCn--${pageName}" name="cvlcptAplyCn" data-map="CVLCPT_APLY_CN" cols="100%" rows="3" readonly> --%>
<!-- </textarea> -->
<!-- </div> -->
<!-- 접수번호 -->
<div class="col-md-4">
<label for="cvlcptRcptNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">민원 접수번호</label>
<input type="text" class="form-control w-45" id="cvlcptRcptNo--${pageName}" name="cvlcptRcptNo" data-map="CVLCPT_RCPT_NO" readonly />
</div>
<!-- 접수일 -->
<div class="col-md-4">
<label for="cvlcptRcptYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">민원 접수일</label>
<input type="text" class="form-control w-45" id="cvlcptRcptYmd--${pageName}" name="cvlcptRcptYmd" data-map="CVLCPT_RCPT_YMD" readonly />
</div>
<!-- 목록번호 -->
<div class="col-md-4">
<label for="cvlcptListNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">민원 목록번호</label>
<input type="text" class="form-control w-40" id="cvlcptListNo--${pageName}" name="cvlcptListNo" data-map="CVLCPT_LIST_NO" readonly />
</div>
<!-- 차대번호 -->
<div class="col-md-4">
<label for="vin--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">차대번호</label>
<input type="text" class="form-control w-45" id="vin--${pageName}" name="vin" data-map="VIN" readonly />
</div>
<!-- 차량 명 -->
<div class="col-md-4">
<label for="vhclNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">차량 명</label>
<input type="text" class="form-control w-60" id="vhclNm--${pageName}" name="vhclNm" data-map="VHCL_NM" readonly />
</div>
<!-- 차량 색상 -->
<div class="col-md-4">
<label for="vhclColor--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">차량 색상</label>
<input type="text" class="form-control w-40" id="vhclColor--${pageName}" name="vhclColor" data-map="VHCL_COLOR" readonly />
</div>
<!-- 기타 내용 -->
<div class="col-md-12">
<label for="etcCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end align-top">기타 내용</label>
<textarea type="text" class="form-control w-87" id="etcCn--${pageName}" name="etcCn" data-map="ETC_CN" cols="100%" rows="3" readonly>
</textarea>
</div>
<!-- 과태료 금액 -->
<div class="col-md-3">
<label for="ffnlgCrdnAmt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">과태료 단속금액</label>
<input type="text" class="form-control w-40 text-sm-end" id="ffnlgCrdnAmt--${pageName}" name="ffnlgCrdnAmt" data-map="FFNLG_CRDN_AMT" readonly />
</div>
<!-- 과태료 감경 율 -->
<div class="col-md-3">
<label for="ffnlgRductRt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">과태료 감경율</label>
<input type="text" class="form-control w-25 text-sm-end" id="ffnlgRductRt--${pageName}" name="ffnlgRductRt" data-map="FFNLG_RDUCT_RT" readonly /> %
</div>
<!-- 부과 금액 -->
<div class="col-md-3">
<label for="ffnlgAmt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">과태료 금액</label>
<input type="text" class="form-control w-40 text-sm-end" id="ffnlgAmt--${pageName}" name="ffnlgAmt" data-map="FFNLG_AMT" readonly />
</div>
<!-- 사전통지 금액 -->
<div class="col-md-3">
<label for="advntceAmt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">사전통지 금액</label>
<input type="text" class="form-control w-40 text-sm-end" id="advntceAmt--${pageName}" name="advntceAmt" data-map="ADVNTCE_AMT" readonly />
</div>
<!-- 부과 금액 -->
<div class="col-md-3">
<label for="levyAmt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">부과 금액</label>
<input type="text" class="form-control w-40 text-sm-end" id="levyAmt--${pageName}" name="levyAmt" data-map="LEVY_AMT" readonly />
</div>
<!-- 감액 금액 -->
<div class="col-md-3">
<label for="reducAmt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">감액 금액</label>
<input type="text" class="form-control w-40 text-sm-end" id="reducAmt--${pageName}" name="reducAmt" data-map="REDUC_AMT" readonly />
</div>
<!-- 수납 금액 -->
<div class="col-md-3">
<label for="rcvmtAmt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">수납 금액</label>
<input type="text" class="form-control w-40 text-sm-end" id="rcvmtAmt--${pageName}" name="rcvmtAmt" data-map="RCVMT_AMT" readonly />
</div>
<!-- 미납 금액 -->
<div class="col-md-3">
<label for="sumAmt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">미납 금액</label>
<input type="text" class="form-control w-40 text-sm-end" id="sumAmt--${pageName}" name="sumAmt" data-map="SUM_AMT" readonly />
</div>
</div>
</div> <!-- <div class="card"> -->
</p>
<!-- <div class="card"> -->
<div class="card" style="max-width:1100px;" title="납부자 정보">
<!-- 업무 버튼 -->
<div class="container-page-btn">
<button type="button" class="btn btn-primary" id="btnPayerReset--${pageName}" title="납부자 초기화" onclick="btnPayerReset${pageName}();">
납부자 초기화
</button>
<!-- 버튼 우측 정렬 -->
<span class="container-window-btn-right">
<button type="button" class="btn btn-primary" id="btnPayerUpdate--${pageName}" title="납부자 수정" onclick="fnBtnPayerUpdate${pageName}();">
납부자 수정
</button>
</span> <!-- <span class="container-window-btn-right"> -->
</div> <!-- <div class="container-page-btn"> -->
<div class="row g-1">
<!-- 납부자 명 -->
<div class="col-md-4">
<label for="rtpyrNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">납부자 명</label>
<input type="text" class="form-control w-40" id="rtpyrNm--${pageName}" name="rtpyrNm" data-map="RTPYR_NM" readonly />
</div>
<!-- 납부자 구분 코드 -->
<div class="col-md-4">
<label for="rtpyrSeNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">납부자 구분</label>
<input type="text" class="form-control w-40" id="rtpyrSeNm--${pageName}" name="rtpyrSeNm" data-map="RTPYR_SE_NM" readonly />
</div>
<!-- 납부자 번호 -->
<div class="col-md-4">
<label for="rtpyrNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">납부자 번호</label>
<input type="text" class="form-control w-40" id="rtpyrNo--${pageName}" name="rtpyrNo" data-map="RTPYR_NO" readonly />
</div>
<!-- 진술자 주소 --><!-- 진술자 우편번호 -->
<div class="col-md-12">
<label for="sttrAddr--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">주소</label>
<input type="text" class="form-control w-75" id="sttrAddr--${pageName}" name="sttrAddr" data-map="STTR_ADDR" />
<input type="text" class="form-control w-px-75" id="sttrZip--${pageName}" name="sttrZip" data-map="STTR_ZIP" />
<button type="button" class="btn btn-sm btn-outline-dark" id="btnZip--${pageName}" title="우편번호 검색" onclick="fnZip${pageName}();">
검색
</button>
</div>
<!-- 진술자 상세주소 -->
<div class="col-md-12">
<label for="sttrDaddr--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">상세 주소</label>
<input type="text" class="form-control w-87" id="sttrDaddr--${pageName}" name="sttrDaddr" data-map="STTR_DADDR" />
</div>
<!-- 납부자 입력 구분 코드 -->
<div class="col-md-4">
<label for="rtpyrInptSeNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">입력 구분</label>
<input type="text" class="form-control w-40" id="rtpyrInptSeNm--${pageName}" name="rtpyrInptSeNm" data-map="RTPYR_INPT_SE_NM" readonly />
</div>
<!-- 수정 일시 -->
<div class="col-md-4">
<label for="payerMdfcnDt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">수정 일시</label>
<input type="text" class="form-control w-50" id="payerMdfcnDt--${pageName}" name="payerMdfcnDt" data-map="PAYER_MDFCN_DT" readonly />
</div>
<!-- 수정자 -->
<div class="col-md-4">
<label for="payerMdfr--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">수정자</label>
<input type="text" class="form-control w-40" id="payerMdfr--${pageName}" name="payerMdfr" data-map="PAYER_MDFR" readonly />
</div>
</div>
</div> <!-- <div class="card"> -->
</form> <!-- /입력 영역 -->
<div class="card" style="width:400px;">
<form id="frmFile--${pageName}" method="post" enctype="multipart/form-data">
<input type="file" id="newFileList--${pageName}" name="newFileList" multiple accept="image/*" hidden />
</form>
<form id="frmUploadSet--${pageName}" method="post" enctype="multipart/form-data">
<input type="file" id="inputUploadSet--${pageName}" name="inputUploadSet" multiple accept="image/*" hidden />
</form>
<div class="col-md-12">
<!-- 단속사진 버튼 -->
<div class="container-page-btn">
<!-- 버튼 우측 정렬 -->
<span class="container-window-btn-right">
<button type="button" id="btnAddFile--${pageName}" class="btn btn-primary">이미지 추가</button>
<button type="button" id="btnOpenVideoCapture--${pageName}" class="btn btn-primary">동영상 캡쳐</button>
<button type="button" id="btnCancelAddFile--${pageName}" class="btn btn-primary">선택 사진 삭제</button>
</span>
</div>
</div>
<div id="display--${pageName}" style="overflow-y: scroll;height: 600px;border-style: solid;">
</div>
</div> <!-- <div class="card"> -->
</div>
<script>
/**************************************************************************
* Global Variable
**************************************************************************/
// URL
var prefixUrl = "/sprt/sprt02";
// FormFields
var ${pageName}Fields = new FormFields("#frmEdit--${pageName}");
/**************************************************************************
* DatasetControl
**************************************************************************/
var ${pageName}Control = new DatasetControl({
prefix : "crdnPayerInfo"
, prefixName : "단속 정보"
, keymapper : info => info ? info.CRDN_ID : ""
, dataGetter : obj => obj.crdnPayerInfo
, formats : {
CRDN_YMD_TM : datetimeFormat
, CVLCPT_RCPT_YMD : datetimeFormat
, FFNLG_CRDN_AMT : numberFormat // 과태료 단속 금액
, FFNLG_AMT : numberFormat // 과태료 금액
, ADVNTCE_AMT : numberFormat // 사전통지 금액
, LEVY_AMT : numberFormat // 부과 금액
, REDUC_AMT : numberFormat // 감액 금액
, RCVMT_AMT : numberFormat // 수납 금액
}
});
${pageName}Control.onCurrentChange = item => {
${pageName}Fields.set(item); // Dataset 셋팅
}
/**************************************************************************
*
**************************************************************************/
/**************************************************************************
* 초기 셋팅
**************************************************************************/
// 검색조건 초기값 셋팅
function initForm${pageName}() {
//
}
// 이벤트 설정
function setEvent${pageName}() {
//
}
/**************************************************************************
* function
**************************************************************************/
// 민원 원본 보기
function fnBtnOpenCvlcptOrgnl${pageName}() {
let crdnId = ${pageName}Control.dataset.getValue("CRDN_ID");
let taskSeCd = ${pageName}Control.dataset.getValue("TASK_SE_CD");
let dialogId = "cvlcptOrgnlDialog--${pageName}";
ajax.get({
url : wctx.url("/" + taskSeCd + "/cvlc/cvlc01/050/info.do")
, data : { crdnId : crdnId }
, success : resp => {
dialog.open({
id : dialogId,
title : "민원내역 원본",
content : resp,
size : "xl",
init : () => {
// var parentRes = new Object();
// var childReq = pageObject.childReq.pop();
// for(var reqKey in childReq) {
// if($P.provide[reqKey]){
// parentRes[reqKey] = $P.provide[reqKey];
// } else {
// parentRes[reqKey] = function(){};
// }
// }
// pageObject.parentRes.push(parentRes);
}
});
}
})
}
// 민원 답변 보기
function fnBtnOpenAnswerPreview${pageName}() {
console.log("민원 답변 보기");
}
// 단속정보 수정
function fnBtnCrdnUpdate${pageName}() {
console.log("단속정보 수정");
}
// 부과취소 재등록
function btnCrdnReReg${pageName}() {
console.log("부과취소 재등록");
}
// 자료 삭제
function fnBtnCrdnRemove${pageName}() {
console.log("자료 삭제");
}
// 수기 수납 등록
function fnBtnRcvmtCreate${pageName}() {
console.log("수기 수납 등록");
}
// 수기 수납 삭제
function fnBtnRcvmtRemove${pageName}() {
console.log("수기 수납 삭제");
}
// 고지서 출력
function fnBtnNoticeOtpt${pageName}() {
console.log("고지서 출력");
}
// 단속 상태 변경
function fnBtnCrdnSttsUpdate${pageName}() {
console.log("단속 상태 변경");
}
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// 이벤트 설정
setEvent${pageName}();
// 화면 초기 설정
initForm${pageName}();
// Dataset 셋팅
${pageName}Control.setData([${crdnPayerInfo}]);
});
// #sourceURL=sprt02020-info.jsp
</script>

@ -0,0 +1,154 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<!-- Page Body -->
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<div class="card" title="의견제출 정보">
<!-- 업무 버튼 -->
<div class="container-page-btn">
<!-- 버튼 우측 정렬 -->
<span class="container-window-btn-right">
<button type="button" class="btn btn-primary" id="btnOpnnSbmsnCreate--${pageName}" title="의견제출 등록" onclick="fnBtnOpnnSbmsnCreate${pageName}();">
의견제출 등록
</button>
<button type="button" class="btn btn-primary" id="btnOpnnSbmsnUpdate--${pageName}" title="의견제출 수정" onclick="fnBtnOpnnSbmsnUpdate${pageName}();">
의견제출 수정
</button>
<button type="button" class="btn btn-primary" id="btnOpnnSbmsnRemove--${pageName}" title="의견제출 삭제" onclick="fnBtnOpnnSbmsnRemove${pageName}();">
의견제출 삭제
</button>
<button type="button" class="btn btn-primary" id="btnOpnnSbmsnDlbrt--${pageName}" title="의견제출 심의" onclick="fnBtnOpnnSbmsnDlbrt${pageName}();">
의견제출 심의
</button>
<button type="button" class="btn btn-primary" id="btnDlbrtLtfrOtpt --${pageName}" title="심의의결서 출력" onclick="fnBtnDlbrtLtfrOtpt${pageName}();">
심의의결서 출력
</button>
</span> <!-- <span class="container-window-btn-right"> -->
</div> <!-- <div class="container-page-btn"> -->
<div class="row g-1">
<!-- 차량번호 -->
<div class="col-md-3">
<label for="vhrno--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">차량번호</label>
<input type="text" class="form-control w-30" id="vhrno--${pageName}" name="vhrno" data-map="VHRNO" readonly />
</div>
<!-- 위반일시 -->
<div class="col-md-3">
<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-40" id="crdnYmdTm--${pageName}" name="crdnYmdTm" data-map="CRDN_YMD_TM" readonly />
</div>
<!-- 고지번호 -->
<div class="col-md-3">
<label for="gojiNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">고지번호</label>
<input type="text" class="form-control w-40" id="gojiNo--${pageName}" name="gojiNo" data-map="GOJI_NO" readonly />
</div>
<!-- 단속상태 -->
<div class="col-md-3">
<label for="crdnSttsNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">단속상태</label>
<input type="text" class="form-control w-30" id="crdnSttsNm--${pageName}" name="crdnSttsNm" data-map="CRDN_STTS_NM" readonly />
</div>
</div> <!-- <div class="row g-1"> -->
</div> <!-- </div class="card" title="의견제출 정보"> -->
</form> <!-- <form id="frmEdit--${pageName}" name="frmEdit"> -->
<script>
/**************************************************************************
* Global Variable
**************************************************************************/
// URL
var prefixUrl = "/sprt/sprt01";
// FormFields
var ${pageName}Fields = new FormFields("#frmEdit--${pageName}");
/**************************************************************************
* DatasetControl
**************************************************************************/
var ${pageName}Control = new DatasetControl({
prefix : "opnnSbmsnInfo"
, prefixName : "의견제출 정보"
, keymapper : info => info ? info.CRDN_ID : ""
, dataGetter : obj => obj.opnnSbmsnInfo
, formats : {
CRDN_YMD_TM : datetimeFormat
}
});
${pageName}Control.onCurrentChange = item => {
// Dataset 셋팅
${pageName}Fields.set(item);
}
/**************************************************************************
*
**************************************************************************/
// 저장 callback
${pageName}Control.onSave = (resp) => {
if (resp.saved) {
}
}
// 저장
${pageName}Control.save = (info) => {
if (!info) return;
}
/**************************************************************************
* 초기 셋팅
**************************************************************************/
// 검색조건 초기값 셋팅
function initForm${pageName}() {
}
// 이벤트 설정
function setEvent${pageName}() {
}
/**************************************************************************
* function
**************************************************************************/
// 의견제출 등록
function fnBtnOpnnSbmsnCreate${pageName}() {
}
// 의견제출 수정
function fnBtnOpnnSbmsnUpdate${pageName}() {
}
// 의견제출 삭제
function fnBtnOpnnSbmsnRemove${pageName}() {
}
// 의견제출 심의
function fnBtnOpnnSbmsnDlbrt${pageName}() {
}
// 심의의결서 출력
function fnBtnDlbrtLtfrOtpt${pageName}() {
}
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// 이벤트 설정
setEvent${pageName}();
// 화면 초기 설정
initForm${pageName}();
// Dataset 셋팅
${pageName}Control.setData([${opnnSbmsnInfo}]);
});
// #sourceURL=sprt02030-info.jsp
</script>
Loading…
Cancel
Save