feat: 초기자료 입력 > 민원이력 팝업 반영

main
Jonguk. Lim 2 years ago
parent 8f44db8db0
commit 97659f2ff9

@ -197,4 +197,14 @@ public class FimsCrackdownDTO {
private String updusr;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class CtznCmpltRequest {
private String regltId;
private String payerId;
private String vhcleNo;
}
}

@ -129,6 +129,16 @@ public class FimsCrackDownMgtController {
return mav;
}
@RequestMapping(value = "/cmmCtznComplaintHistPopup")
public ModelAndView cmmCtznComplaintHistPopup(final FimsCrackdownDTO.CtznCmpltRequest dto){
ModelAndView mav = new ModelAndView();
mav.addObject("param", dto);
mav.addObject("pageTitle", "민원 이력 ");
mav.setViewName(FimsConst.FIMS_JSP_BASE_PATH + "cmm/cmmCtznComplaintHistPopup.popup");
return mav;
}
@RequestMapping(value = "/findCrackdownInfos")
public ModelAndView findCrackdownInfos(@RequestParam final Map<String,Object> paraMap) {
return ResultResponse.of(service.findCrackdownInfos(paraMap, MybatisUtils.getPagingInfo(paraMap)));

@ -110,7 +110,6 @@ public class RtDTO {
/**
*
*/
@MaskRequired(type = MaskingType.NAME)
private String vhcleNo;
/**
*

@ -7,89 +7,92 @@
************************************************************************************************************** -->
<sql id="sqlRtReglt">
SELECT trr.reglt_id
, trr.payer_id -- 납부자ID
, trr.instt_code -- 기관코드
, trr.sys_code -- 시스템코드
, trr.reglt_se_code -- 단속구분코드
, trr.input_se_code -- 입력구분코드
, trr.payer_id -- 납부자ID
, trr.instt_code -- 기관코드
, trr.sys_code -- 시스템코드
, trr.reglt_se_code -- 단속구분코드
, trr.input_se_code -- 입력구분코드
, trr.reglt_de
, trr.reglt_begin_time -- 단속시작시간
, trr.reglt_end_time -- 단속종료시간
, trr.violt_lrg_code -- 위반 법규 코드
, trr.violt_dtls_code -- 위반내역코드
, trr.violt_dtls_etc_cn -- 위반내역 기타 내용
, trr.reglt_place -- 위반장소
, trr.violt_co -- 위반횟수
, trr.violt_legaldong_code -- 위반법정코드
, trr.reglt_begin_time -- 단속시작시간
, trr.reglt_end_time -- 단속종료시간
, trr.violt_lrg_code -- 위반 법규 코드
, trr.violt_dtls_code -- 위반내역코드
, trr.violt_dtls_etc_cn -- 위반내역 기타 내용
, trr.reglt_place -- 위반장소
, trr.violt_co -- 위반횟수
, trr.violt_legaldong_code -- 위반법정코드
, trr.gps_x
, trr.gps_y
, trr.towng_at_code -- 견인여부 코드
, trr.stickr_no -- 스티커 번호
, trr.image_se_code -- 이미지구분코드
, trr.image_nmrs -- 이미지매수
, trr.redution_amount -- 감경금액
, trr.redution_aft_amount -- 감경후 금액
, trr.rciv_amount -- 수납금액
, trr.rdcamt -- 감액
, trr.adamt -- 가산금
, trr.vhcle_no -- 차량번호
, trr.vhcle_nm -- 차량명
, trr.vhcty_cl_code -- 차종분류코드
, trr.vhcty_asort_code -- 차종종별코드
, trr.vin -- 차대번호
, trr.spcmnt_matter -- 특기사항
, trr.reglt_specl_zone_se_code -- 단속특별구역코드
, trr.towng_at_code -- 견인여부 코드
, trr.stickr_no -- 스티커 번호
, trr.image_se_code -- 이미지구분코드
, trr.image_nmrs -- 이미지매수
, trr.redution_amount -- 감경금액
, trr.redution_aft_amount -- 감경후 금액
, trr.rciv_amount -- 수납금액
, trr.rdcamt -- 감액
, trr.adamt -- 가산금
, trr.vhcle_no -- 차량번호
, trr.vhcle_nm -- 차량명
, trr.vhcty_cl_code -- 차종분류코드
, trr.vhcty_asort_code -- 차종종별코드
, trr.vin -- 차대번호
, trr.spcmnt_matter -- 특기사항
, trr.reglt_specl_zone_se_code -- 단속특별구역코드
, trr.reglt_process_sttus_code
, trr.last_process_dt -- 최종처리일시
, trr.last_opetr -- 최종 처리자
, trr.regist_se_code -- 등록구분
, trr.last_process_dt -- 최종처리일시
, trr.last_opetr -- 최종 처리자
, trr.regist_se_code -- 등록구분
, CONCAT(trr.reglt_de, trr.reglt_begin_time) AS regltDeTime
, trr.regist_dt
, teerc.extrl_reglt_cntc_id -- CCTV data ID : 접수번호로 보여줄 것
, teerc.extrl_reglt_cntc_id -- CCTV data ID : 접수번호로 보여줄 것
, tecsd.interface_seq_n
, tecsd.ctzn_sttemnt_detail_sn
, tecs.cvpl_rcept_no -- 접수번호
, tecs.cvpl_rcept_dt -- 접수일자
, tecs.cvpl_applcnt_nm -- 신고자
, tecs.cvpl_process_pd -- 처리기한
, teei.duty_id_v -- 담당자
, teei.pcd_tel_v -- 담당자 전화번호
, tecs.cvpl_rcept_no -- 접수번호
, tecs.cvpl_rcept_dt -- 접수일자
, tecs.cvpl_applcnt_nm -- 신고자
, tecs.cvpl_process_pd -- 처리기한
, teei.duty_id_v -- 담당자
, teei.pcd_tel_v -- 담당자 전화번호
, tre.erpp_id
, tre.erpp_se_code -- 서손구분코드
, tre.erpp_resn_detail -- 서손사유상세
, trp.lnm_road_adres_se_code -- 지번 도로 주소 구분 코드
, tre.erpp_se_code -- 서손구분코드
, tre.erpp_resn_detail -- 서손사유상세
, trp.lnm_road_adres_se_code -- 지번 도로 주소 구분 코드
, trp.zip
, trp.adres
, trp.detail_adres
, trp.legaldong_code -- 법정동 코드
, trp.legaldong_code -- 법정동 코드
, IF(trr.reglt_se_code = '09', tecsd.violt_dtls_nm, teerc.violt_dtls_nm) AS violtDtlsNm -- 위반내용
, (SELECT COUNT(reglt_id)
FROM tb_rt_reglt tgt
WHERE tgt.vhcle_no = trr.vhcle_no
AND NOT NULLIF(trr.vhcle_no, '') IS NULL
) AS vhcleNoCnt
FROM tb_rt_reglt tgt
WHERE tgt.vhcle_no = trr.vhcle_no
AND NOT NULLIF(trr.vhcle_no, '') IS NULL) AS vhcleNoCnt
, (SELECT COUNT(cmplt_id)
FROM tb_ec_ctzn_sttemnt_cmplt tgt
WHERE EXISTS(SELECT 1
FROM tb_rt_reglt
WHERE tgt.reglt_id = reglt_id
AND payer_id = trr.payer_id
)
OR tgt.vhcle_no = trr.vhcle_no
) AS minwonCnt
FROM tb_rt_reglt trr
LEFT JOIN tb_ec_extrl_reglt_cntc teerc
ON trr.reglt_id = teerc.reglt_id
LEFT JOIN tb_ec_ctzn_sttemnt_detail tecsd
ON trr.reglt_id = tecsd.reglt_id
LEFT JOIN tb_ec_ctzn_sttemnt tecs
ON tecsd.interface_seq_n = tecs.interface_seq_n
LEFT JOIN tb_ec_esb_interface teei
ON tecs.interface_seq_n = teei.interface_seq_n
LEFT JOIN tb_rt_erpp tre
ON trr.reglt_id = tre.reglt_id
LEFT JOIN tb_rt_payer trp
ON trr.payer_id = trp.payer_id
FROM tb_ec_ctzn_sttemnt_cmplt tgt
WHERE EXISTS(SELECT 1
FROM tb_rt_reglt
WHERE tgt.reglt_id = reglt_id
AND NOT NULLIF(payer_id, '') IS NULL
AND payer_id = trr.payer_id
)
OR (
NOT NULLIF(trr.vhcle_no, '') IS NULL
AND tgt.vhcle_no = trr.vhcle_no
)
) AS minwonCnt
FROM tb_rt_reglt trr
LEFT JOIN tb_ec_extrl_reglt_cntc teerc
ON trr.reglt_id = teerc.reglt_id
LEFT JOIN tb_ec_ctzn_sttemnt_detail tecsd
ON trr.reglt_id = tecsd.reglt_id
LEFT JOIN tb_ec_ctzn_sttemnt tecs
ON tecsd.interface_seq_n = tecs.interface_seq_n
LEFT JOIN tb_ec_esb_interface teei
ON tecs.interface_seq_n = teei.interface_seq_n
LEFT JOIN tb_rt_erpp tre
ON trr.reglt_id = tre.reglt_id
LEFT JOIN tb_rt_payer trp
ON trr.payer_id = trp.payer_id
</sql>

@ -0,0 +1,224 @@
<%--
================================================================================
File : /fims/biz/cmm/cmmCtznComplaintHistPopup.jsp
Name : 단속현황 시민 민원 이력 팝업 - 단속관리>초기자료 편집
Auth : lim.jong.uk
Date : 2023-03-20
Desc : 단속현황 시민 민원 이력 팝업
================================================================================
Date Author Description
================================================================================
================================================================================
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/jsp/framework/taglibs.jsp"%>
<div class="popup" style="min-width: 100px;">
<div class="popup_inner_02" style="max-width: 800px;">
<p class="pop_title">
민원 이력
</p>
<div class="w_fix05">
<div class="w_fix04 gridGroup">
<div style="width: 100%; border:0px solid black">
<p class="title deco_01">개별자료 민원 등록내역</p>
<div id="grid_cplnt"></div>
</div>
</div>
<div class="w_fix04 gridGroup">
<div style="width: 100%; border:0px solid black">
<p class="title deco_01">차량번호 민원 등록내역</p>
<div id="grid_vhcle_no_cplnt"></div>
</div>
</div>
</div>
<div class="w_fix05">
<div class="box mT_02">
<div class="w_fix04 gridGroup">
<p class="title deco_01">민원 내용</p>
<textarea id="content0" name="content0" cols="0" rows="5" style="overflow-y: scroll; width:100%;"></textarea>
</div>
</div><%--box--%>
<div class="box mT_02">
<div class="w_fix04 gridGroup">
<p class="title deco_01">차량번호 민원 내용</p>
<textarea id="content1" name="content1" cols="0" rows="5" style="overflow-y: scroll; width:100%;"></textarea>
</div>
</div><%--box--%>
</div>
<div class="popup_btn">
<div class="flr p_flr">
<span>
<a href="#" id='btnClose' class="btn lightgray">닫기</a>
</span>
</div>
</div>
</div><!--row -->
</div>
<script type="text/javaScript">
/**************************************************************************
* Global Variable
**************************************************************************/
// 민원 등록 이력 / 차량 번호 민원 등록 이력
const ARR_TAP_GRID = [null,null];
const ARR_TAP_TOTCNT = [0, 0];
let CUR_TAB_SEQ = 0;
/* *******************************
* Biz function
******************************* */
const fnPopupBiz = {
onCplntHisClickGrid: (props) => {
const rowData = props.grid.getRow(props.rowKey);
if(props.grid.el.id === 'grid_cplnt'){
$('#content0').val(rowData.content);
}else{
$('#content1').val(rowData.content);
}
}
};
/**************************************************************************
* event
**************************************************************************/
$(() => {
$("#btnClose").on('click', () => {
window.close()
});
});
/* ******************************
* Grid
****************************** */
const initPopupGrid = () => {
const vhcleNoCplntHisColumns = [
{
header: '내용',
name: 'content',
minWidth: 150,
//editor: 'text',
sortable: false,
align: 'center',
renderer: {
type: CustomButtonRenderer,
options: {
formatter: (props)=>{
return {
formatter: props.grid.getRow(props.rowKey).content
,element: "text"
}
}
,eventFunction: fnPopupBiz.onCplntHisClickGrid
,eventType: "click"
}
}
},
{
header: '차량번호',
name: 'vhcleNo',
minWidth: 90,
//editor: 'text',
sortable: false,
align: 'center'
},
{
header: '등록일시',
name: 'registDt',
minWidth: 120,
//editor: 'text',
sortable: true,
align: 'center',
formatter({value}) {
return setDateTimeFmt(value);
}
},
{
header: '등록자',
name: 'register',
minWidth: 120,
//editor: 'text',
sortable: false,
align: 'center'
}
];
const cplntHisColumns = vhcleNoCplntHisColumns.filter((_, index) => index !== 1 );
// 민원 등록 이력 datasource
const cplntHisDatasource = {
initialRequest: true, // 화면 load시 조회 안함 - default
api: {
readData: {
url: fimsApiUrl.FIND_CTZN_STTEMNT_CMPLT
, serializer: (params) => getPageParam({gubun: 0, payerId: '${param.payerId}', regltId: '${param.regltId}'})
}
}
};
// 차량번호 민원 등록 이력 datasource
const vhcleNoCplntHisHisDatasource = {
initialRequest: true, // 화면 load시 조회 안함 - default
api: {
readData: {
url: fimsApiUrl.FIND_CTZN_STTEMNT_CMPLT
, serializer: (params) => getPageParam({gubun: 1, vhcleNo: '${param.vhcleNo}'})
}
}
};
const gridOptions = {
minBodyHeight: 200,
bodyHeight: 200, //[선택]Grid 높이 (number(단위: px)|'auto'|'fitToParent')
rowHeaders: ['rowNum'],
pageOptions: {
perPage: 100,
type: 'scroll'
}
};
// 민원 등록 내역
ARR_TAP_GRID[0] = TuiGrid.of({...gridOptions, el: 'grid_cplnt', columns: cplntHisColumns}, cplntHisDatasource, (res) => {
});
// 차량 번호 민원 등록 내역
ARR_TAP_GRID[1] = TuiGrid.of({...gridOptions, el: 'grid_vhcle_no_cplnt', columns: vhcleNoCplntHisColumns}, vhcleNoCplntHisHisDatasource, (res) => {
});
const gridResposeSet = (res, idx) => {
ARR_TAP_TOTCNT[idx] = res.data.pagination.totalCount;
$('#totCnt span').text(ARR_TAP_TOTCNT[idx]);
const gridInfo = ARR_TAP_NAV[idx]?.gridInfo;
if(gridInfo && gridInfo?.pageMove) {
let datas = res.data?.contents.map(d => {
return {content: d.content}
})
ARR_TAP_NAV[idx].resetGrid(res, datas, (pagiNavigation)=>{
ARR_TAP_NAV[idx] = pagiNavigation;
fnBiz.pagePopup(popupDiv, ARR_TAP_NAV[idx].gridInfo.curRowData);
})
}
}
};
/**************************************************************************
* initialize
**************************************************************************/
$(document).ready(function(){
initPopupGrid();
const param = {
regltId: '${param.regltId}'
,payerId: '${param.payerId}'
,vhcleNo: '${param.vhcleNo}'
}
});
</script>

@ -326,18 +326,13 @@ Date Author Description
);
fnPopupBiz.showCrackdownVhcleNoCnt(res.infoDTO.vhcleNoCnt);
fnPopupBiz.showMinwonCnt(res.infoDTO.minwonCnt);
/*
if(res.infoDTO.vhcleNoCnt > 0) {
console.log(res.infoDTO.vhcleNoCnt);
$('#vhcleNoCnt').text(
res.infoDTO.vhcleNoCnt
);
$('#crackdownCnt').show();
}else{
$('#crackdownCnt').hide();
schParam = {
regltId: res.infoDTO?.regltId,
regltSeCode: res.infoDTO?.regltSeCode,
payerId: res.infoDTO.payerId,
vhcleNo: res.infoDTO.vhcleNo
}
*/
cmmImgDownload('#imgList', res.attchFiles, fnPopupBiz.pagePopup, true, '60px',
() => document.getElementById(curId).className += ' curImgData'
);
@ -346,10 +341,7 @@ Date Author Description
fnPopupBiz.resetDisplay(res.ctznDTO?.cvplRceptNo);
setFormData(document.querySelector('#frm'), {...res.ctznDTO, ...res.payerDTO, ...res.infoDTO});
schParam = {
regltId: res.infoDTO?.regltId,
regltSeCode: res.infoDTO?.regltSeCode
}
orgData = $('form').serialize();
}
})
@ -636,14 +628,11 @@ Date Author Description
// TODO :: 개별총정보>민원내역탭 내용의 팝업 필요
,goMinwonPopup: () => {
alert('개별총정보>민원내역탭 내용의 팝업 필요');
/*
const url = "/fims/biz/cmm/cmmFimsCrackdownTotMgtPopup.do";
const popOption = {width: 1200, height:900};
const popTitle = "개별총정보";
const params = {regltSeCode: schParam.regltSeCode, regltId: schParam.regltId}
const url = fimsApiUrl.POPUP_CTZN_CMPLNT_HIST;
const popOption = {width: 800, height:600};
const popTitle = "민원 내역 조회";
const params = {regltId: schParam.regltId, payerId: schParam.payerId, vhcleNo:schParam.vhcleNo}
const p = CmmPopup.open(url, params, popOption, popTitle);
*/
}
};

@ -10,6 +10,7 @@ const fimsApiUrl = {
,POPUP_ENLIGHT_DISALLOW: '/fims/biz/cmm/cmmEnlightDisallowPopup.do' //서손 / 계도 처리 popup
,POPUP_IMPOSE: '/fims/biz/cmm/cmmImposePopup.do' //과태료시스템등록 popup
,POPUP_CTZN_ANS_PREVIEW: '/fims/biz/cmm/cmmCtznAnswerPreviewPopup.do' //시민신고 답변 미리보기 팝업 //과태료시스템등록 popup
,POPUP_CTZN_CMPLNT_HIST: '/fims/biz/cmm/cmmCtznComplaintHistPopup.do' //민원이력 팝업 //과태료시스템등록 popup
,FIND_CRACKDOWNS: '/fims/biz/cmm/findCrackdownInfos.do' //단속현황-외부연계자료목록
,FIND_CRACKDOWN_INFO: '/fims/biz/cmm/findCrackdownInfoAndAttchFiles.do' //단속현황-개별총정보 위반정보탭 조회
,FIND_CTZN_ANS_INFO: '/fims/biz/cmm/findCtznStmtAnswer.do' //시민신고 답변 정보 조회

Loading…
Cancel
Save