민원 저장 수정

main
이범준 1 year ago
parent 1426b1f4cd
commit e1207df0f9

@ -27,7 +27,7 @@ public class Crdn06Bean extends AbstractComponent {
* </ul>
*/
public boolean update(Map<String,Object> nonQueryRequest, Crdn crdn) {
String updateInfomation = (String)nonQueryRequest.get("updateInfomation");
String updateInfomation = (String)ifEmpty(nonQueryRequest.get("updateInfomation"), "") ;
switch (ifEmpty(updateInfomation, () -> "")) {
case "tagInformationUndefinedData":

@ -84,7 +84,11 @@ public class CrdnCvlcptBean extends AbstractComponent {
for(String key : nonQueryRequest.keySet()){
params.set(key, nonQueryRequest.get(key));
}
return crdnCvlcptMapper.updateCrdn(params) == 1 ? true : false;
if(crdnCvlcptMapper.updateCrdn(params) != 1) {
return false;
}
return crdnCvlcptMapper.updateCrdnAddition(params) == 1 ? true : false;
}
/** .

@ -2,9 +2,8 @@ package cokr.xit.fims.cvlc.service.bean;
import java.io.File;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -12,7 +11,6 @@ import java.util.stream.Collectors;
import javax.annotation.Resource;
import org.assertj.core.util.Arrays;
import org.springframework.stereotype.Service;
import org.springframework.util.ResourceUtils;
@ -30,7 +28,6 @@ import cokr.xit.fims.crdn.dao.CrdnInfoMapper;
import cokr.xit.fims.cvlc.CrdnCvlcpt;
import cokr.xit.fims.cvlc.dao.CrdnCvlcptMapper;
import cokr.xit.fims.cvlc.service.CrdnCvlcptService;
import cokr.xit.fims.excl.Excl01;
import cokr.xit.fims.excl.service.bean.Excl01Bean;
import cokr.xit.fims.sprt.Sprt;
import cokr.xit.foundation.UserInfo;
@ -251,26 +248,22 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
@Override
public boolean updateCvlcptPrcsSe(Map<String, Object> nonQueryRequest, CrdnCvlcpt crdnCvlcpt, Crdn crdn, List<FileInfo> newFileInfoList) {
boolean saved = false;
crdn.setSggCd(crdn05Mapper.selectSggCdForCurrentUser());
DataObject crdnInfo = crdnInfoMapper.getCrdnInfo(crdn.getCrdnId());
crdnCvlcpt.setCvlcptLinkId(crdnInfo.string("CVLCPT_LINK_ID"));
String acceptType = (String)nonQueryRequest.get("acceptType");
String acceptType = (String)ifEmpty(nonQueryRequest.get("acceptType"), "");
if (crdnInfo.string("CRDN_REG_SE_CD").equals("02")) {
if(acceptType.equals("someAccept") || acceptType.equals("nonAccept")) { //일부수용,불수용
// 단속민원(TB_CRDN_CVLCPT) 대장
Excl01 updtCrdnCvlcpt = new Excl01();
boolean retSuccess = false;
String newCvlcptPrcsCd = "";
String newCvlcptTrsmCd = "";
// 전송 처리 전 자료에 대해서 업데이트한다.
if (!Arrays.asList(new String[]{"04","05","06"}).contains(crdnInfo.string("CVLCPT_TRSM_CD"))) {
updtCrdnCvlcpt.setCvlcptLinkId(crdnInfo.string("CVLCPT_LINK_ID")); // 민원 연계 ID
crdnCvlcpt.setCvlcptLinkId(crdnInfo.string("CVLCPT_LINK_ID")); // 민원 연계 ID
boolean retSuccess = false;
// 답변내용 초기화
retSuccess = crdnCvlcptBean.initCvlcptPrcsRsltCn(crdnCvlcpt.getCvlcptLinkId());
if (!retSuccess) {
@ -278,14 +271,22 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
throw new RuntimeException("부과제외 등록 중 단속민원 대장의 민원처리결과내용 초기화에 실패하였습니다.");
}
// 답변완료 후 서손처리에 대해서는 답변 상태를 업데이트 하지 않는다
// 전송대상, 전송 미대상 자료에 대해서 업데이트한다.
if (crdnInfo.string("CVLCPT_TRSM_CD").equals("01")
|| crdnInfo.string("CVLCPT_TRSM_CD").equals("02")
|| crdnInfo.string("CVLCPT_TRSM_CD").equals("03")) {
// 민원 답변 문구(TB_CVLCPT_ANS_WORDS) 대장 조회
DataObject infoCvlcptAnsWords = crdnCvlcptBean.selectCvlcptAnsWordsInfo(crdn.getTaskSeCd(), crdn.getLevyExclRsnCd());
String newCvlcptPrcsCd = "";
String newCvlcptTrsmCd = "";
// 민원 답변 문구(TB_CVLCPT_ANS_WORDS) 대장 조회
String ansRsnCd = "";
if(acceptType.equals("someAccept") || acceptType.equals("nonAccept")) { //일부수용,불수용
ansRsnCd = crdn.getLevyExclRsnCd();
} else {
ansRsnCd = "3"+crdn.getVltnCd();
}
DataObject infoCvlcptAnsWords = crdnCvlcptBean.selectCvlcptAnsWordsInfo(crdn.getTaskSeCd(), ansRsnCd);
if(acceptType.equals("someAccept") || acceptType.equals("nonAccept")) { //일부수용,불수용
// 비부과(서손)사유가 민원 답변대상인가? 민원 답변 문구(TB_CVLCPT_ANS_WORDS) 대장에 답변 사유 코드가 존재한다면..
if (!infoCvlcptAnsWords.string("ANS_WORDS_ID").equals("")) {
newCvlcptPrcsCd = "04"; // 민원 처리 코드 - 불수용(과태료 부과제외)
@ -294,46 +295,26 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
newCvlcptPrcsCd = "07"; // 민원 처리 코드 - 비부과(서손)사유가 답변 미대상
newCvlcptTrsmCd = "03"; // 민원 전송 코드 - 비부과(서손)사유가 전송 미대상
}
// 현재 날짜 구하기
LocalDate now = LocalDate.now();
// 포맷 정의
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); // yyyy년 MM월 dd일 HH시 mm분 ss초
// 포맷 적용
String formatedNow = now.format(formatter);
// 단속민원(TB_CRDN_CVLCPT) 대장을 수정 한다.
updtCrdnCvlcpt.setCvlcptPrcsCd(newCvlcptPrcsCd); // 민원 처리 코드
updtCrdnCvlcpt.setCvlcptPrcsSumry(infoCvlcptAnsWords.string("PRCS_SUMRY")); // 민원 처리 요약
updtCrdnCvlcpt.setCvlcptPrcsRsltCn(infoCvlcptAnsWords.string("PRCS_RSLT_CN")); // 민원 처리 결과 내용
updtCrdnCvlcpt.setCvlcptPrcsCmptnDt(formatedNow); // 민원 처리 완료 일시
updtCrdnCvlcpt.setCvlcptPrcsPic(UserInfo.current().getId()); // 민원 처리 담당자
updtCrdnCvlcpt.setCvlcptTrsmCd(newCvlcptTrsmCd); // 민원 전송 코드
// 단속민원 민원처리코드 수정
retSuccess = excl01Bean.updateCrdnCvlcpt(updtCrdnCvlcpt);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 단속민원답변 수정에 실패하였습니다.");
}
} else { //수용일 때
newCvlcptPrcsCd = "02"; // 민원 처리 코드 - 수용
newCvlcptTrsmCd = "01"; // 민원 전송 코드 - 전송 대상
}
} else { //수용일 때
//TODO : 전송코드,처리코드 결정
crdnCvlcpt.setCvlcptPrcsCd("");
crdnCvlcpt.setCvlcptTrsmCd("02");
//TODO : 전송문구 조회
crdnCvlcpt.setCvlcptPrcsSumry("요약요약요약");
crdnCvlcpt.setCvlcptPrcsRsltCn("결과결과결과");
crdnCvlcpt.setCvlcptPrcsCd(newCvlcptPrcsCd); // 민원 처리 코드
crdnCvlcpt.setCvlcptPrcsSumry(infoCvlcptAnsWords.string("PRCS_SUMRY")); // 민원 처리 요약
crdnCvlcpt.setCvlcptPrcsRsltCn(infoCvlcptAnsWords.string("PRCS_RSLT_CN")); // 민원 처리 결과 내용
crdnCvlcpt.setCvlcptPrcsPic(UserInfo.current().getId()); // 민원 처리 담당자
crdnCvlcpt.setCvlcptTrsmCd(newCvlcptTrsmCd); // 민원 전송 코드
//민원정보변경
saved = crdnCvlcptBean.updateCvlcptPrcsSe(crdnCvlcpt);
retSuccess = crdnCvlcptBean.updateCvlcptPrcsSe(crdnCvlcpt);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과제외 등록 중 단속민원답변 수정에 실패하였습니다.");
}
}
}
@ -344,13 +325,40 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
fileInsertEffected = fileBean.create(newFileInfoList);
}
if((String[])nonQueryRequest.get("deleteFileKeyList") != null) {
String[] deleteFileKeyList = (String[])ifEmpty(nonQueryRequest.get("deleteFileKeyList"), new String[] {});
if(deleteFileKeyList.length > 0) {
fileDeleteEffected = fileBean.remove((String[])nonQueryRequest.get("deleteFileKeyList"));
}
int changeFileCnt = (fileInsertEffected - fileDeleteEffected);
//단속정보변경
nonQueryRequest.put("changeFileCnt", changeFileCnt);
//TODO : 금액 변경
nonQueryRequest.put("changeAmountYn","N");
//if(){
//nonQueryRequest.put("changeAmountYn","Y");
//}
//단속상태 변경
nonQueryRequest.put("changeAmountYn","Y");
if(acceptType.equals("accept")) {
if(!crdnInfo.string("CRDN_REG_SE_CD").equals("02")
|| Arrays.asList(new String[]{"04","05","06"}).contains(crdnInfo.string("CVLCPT_TRSM_CD"))) {
crdn.setCrdnSttsCd("22");
} else {
crdn.setCrdnSttsCd("21");
}
} else if(acceptType.equals("someAccept")){
crdn.setCrdnSttsCd("83");
} else if(acceptType.equals("nonAccept")) {
crdn.setCrdnSttsCd("81");
} else {
throw new RuntimeException("단속민원답변 수정에 실패하였습니다.");
}
//단속정보변경
saved = crdnCvlcptBean.updateCrdn(nonQueryRequest, crdn);
return saved;

@ -24,7 +24,11 @@
, CRDN_STDG_NM = #{crdnStdgNm} <!-- 단속 법정동 명 -->
, CRDN_ROAD_NM = #{crdnRoadNm} <!-- 단속 도로 명 -->
, CRDN_PLC = #{crdnPlc} <!-- 단속 장소 -->
, VLTN_ID = #{vltnId} <!-- 위반 ID -->
, VLTN_ID = (SELECT A.VLTN_ID
FROM TB_VLTN_INFO A
WHERE A.SGG_CD = #{sggCd}
AND A.TASK_SE_CD = #{taskSeCd}
AND A.VLTN_CD = #{vltnCd}) <!-- 위반 ID -->
, GPS_X = #{gpsX} <!-- GPS X -->
, GPS_Y = #{gpsY} <!-- GPS Y -->
, VIN = #{vin} <!-- 차대번호 -->

@ -422,7 +422,11 @@ SELECT A.ANS_WORDS_ID
, VHRNO = #{crdn.vhrno} /* 차량번호 */
, CRDN_STDG_NM = #{crdn.crdnStdgNm} /* 단속 법정동 명 */
, CRDN_PLC = #{crdn.crdnPlc} /* 단속 장소 */
, VLTN_ID = #{crdn.vltnId} /* 위반 ID */
, VLTN_ID = (SELECT A.VLTN_ID
FROM TB_VLTN_INFO A
WHERE A.SGG_CD = #{crdn.sggCd}
AND A.TASK_SE_CD = #{crdn.taskSeCd}
AND A.VLTN_CD = #{crdn.vltnCd}) /* 위반 ID */
, VIN = #{crdn.vin} /* 차대번호 */
, VHCL_NM = #{crdn.vhclNm} /* 차량 명 */
, VHCL_COLOR = #{crdn.vhclColor} /* 차량 색상 */
@ -445,6 +449,35 @@ SELECT A.ANS_WORDS_ID
UPDATE TB_CRDN_ADDITION
SET MDFCN_DT = <include refid="utility.now" /> /* 수정일시 */
, MDFR = #{currentUser.modifiedBy} /* 수정자 */
<if test="taskSeCd == 'pvs'">
, OVTIME_YN = #{crdn.ovtimeYn} <!-- 시간외 여부 -->
, CRDN_SPAREA_CD = #{crdn.crdnSpareaCd} <!-- 단속 특별구역 코드 -->
</if>
<if test="taskSeCd == 'bpv'">
, DTL_CRDN_PLC = #{crdn.dtlCrdnPlc} <!-- 상세 단속 장소 -->
, MOSC_X = #{crdn.moscX} <!-- 모자이크 X -->
, MOSC_Y = #{crdn.moscY} <!-- 모자이크 Y -->
</if>
<if test="taskSeCd == 'eca'">
, USE_FUEL_CD = #{crdn.useFuelCd} <!-- 사용 연료 코드 -->
</if>
<if test="taskSeCd == 'dpv'">
, PARKNG_PSBLTY_RSLT_CD = #{crdn.parkngBsbltyRsltCd}<!-- 주차 가능 결과 코드 -->
</if>
<if test="taskSeCd == 'tpv'">
, VLTN_NMTM = #{crdn.vltnNmtm} <!-- 위반 횟수 -->
</if>
<if test="taskSeCd == 'pvs' or taskSeCd == 'bpv'">
, CRDN_SE_CD = #{crdn.crdnSeCd} <!-- 단속 구분 코드 -->
, TEAM_ID = #{crdn.teamId} <!-- 조 ID -->
, CRDN_BGNG_TM = #{crdn.crdnBgngTm} <!-- 단속 시작 시각 -->
, CRDN_END_TM = #{crdn.crdnEndTm} <!-- 단속 종료 시간 -->
, FFNLG_CARMDL_CD = #{crdn.ffnlglCarmdlCd} <!-- 과태료 차종 코드 -->
</if>
<if test="taskSeCd == 'dpv' or taskSeCd == 'eca' or taskSeCd == 'pvs'">
, CRDN_SN = #{crdn.crdnSn} <!-- 단속 일련번호 -->
, TOWNG_YN = #{crdn.towngYn} <!-- 견인 여부 -->
</if>
WHERE CRDN_ID = #{crdn.crdnId} /* 단속 ID */
</update>

@ -63,12 +63,12 @@
<input type="text" id="crdnRoadNm--${pageName}" name="crdnRoadNm" data-map="CRDN_ROAD_NM"
class="form-control" />
</div>
<div class="col-md-4">
<div class="col-md-6">
<label for="crdnPlc--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">위반장소</label>
<input type="text" id="crdnPlc--${pageName}" name="crdnPlc" data-map="CRDN_PLC" class="form-control"
data-maxlengthb="200" />
<input type="text" id="crdnPlc--${pageName}" name="crdnPlc" data-map="CRDN_PLC"
class="form-control w-px-300" data-maxlengthb="200" />
</div>
<div class="col-md-8" slot="edit">
<div class="col-md-6" slot="edit">
<template class="bpv">
<slot>
<label for="dtlCrdnPlc--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">상세위반장소</label>
@ -227,7 +227,7 @@
</div>
<div class="col-md-6">
<label for="doGuidance--${pageName}">
<input type="checkbox" id="doGuidance--${pageName}" name="doGuidance" class="form-check-input" />계처리
<input type="checkbox" id="doGuidance--${pageName}" name="doGuidance" class="form-check-input" />계처리
</label>
</div>
</div>
@ -380,7 +380,7 @@ $(document).ready(function(){
var rtpyrNm = document.getElementById("rtpyrNm--${pageName}");
if(rtpyrNm.value == ""){
dialog.alert({
content:"계 처리를 하기 위해선 소유주정보가 입력되어야 합니다.",
content:"계 처리를 하기 위해선 소유주정보가 입력되어야 합니다.",
onClose:function(){rtpyrNm.focus();}
});
return;

@ -68,12 +68,12 @@
<input type="text" id="crdnStdgNm--${pageName}" name="crdnStdgNm" data-map="CRDN_STDG_NM" class="form-control" readonly/>
<button type="button" class="btn btn-sm btn-outline-dark" onclick="">검색</button>
</div>
<div class="col-md-4">
<div class="col-md-6">
<label for="crdnPlc--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">위반장소</label>
<input type="text" id="crdnPlc--${pageName}" name="crdnPlc" data-map="CRDN_PLC" class="form-control"
data-maxlengthb="200" />
<input type="text" id="crdnPlc--${pageName}" name="crdnPlc" data-map="CRDN_PLC"
class="form-control w-px-300" data-maxlengthb="200" />
</div>
<div class="col-md-8" slot="edit">
<div class="col-md-6" slot="edit">
<template class="bpv">
<slot>
<label for="dtlCrdnPlc--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">상세위반장소</label>
@ -517,6 +517,25 @@ $(document).ready(function(){
if(!customValidate($("#frmEdit--${pageName} input"))) return;
var vhrno = document.getElementById("#vhrno--${pageName}");
var rtpyrNm = document.getElementById("rtpyrNm--${pageName}");
if(vhrno.value == ""){
dialog.alert({
content:"수용 처리를 하기 위해선 차량번호가 입력되어야 합니다.",
onClose:function(){vhrno.focus();}
});
return;
}
if(rtpyrNm.value == ""){
dialog.alert({
content:"수용 처리를 하기 위해선 소유주정보가 입력되어야 합니다.",
onClose:function(){rtpyrNm.focus();}
});
return;
}
dialog.alert({
content:"현재 단속 정보를 저장하시겠습니까?",
onOK:() => {
@ -565,13 +584,27 @@ $(document).ready(function(){
}
$P.openLevyExclPop = (levyExclSeCd) => {
if(levyExclSeCd == "2"){
var rtpyrNm = document.getElementById("rtpyrNm--${pageName}");
if(rtpyrNm.value == ""){
dialog.alert({
content:"계고 처리를 하기 위해선 소유주정보가 입력되어야 합니다.",
onClose:function(){rtpyrNm.focus();}
});
return;
}
return;
}
var crdnId = $("#crdnId--${pageName}").val();
var params = {
"crdnId" : crdnId,
"levyExclSeCd" : levyExclSeCd
};
ajax.get({
url : wctx.url("/excl/excl01/020/info.do"),
data : params,

@ -112,7 +112,7 @@
<th onclick="searchFromGridTitle('VHRNO',this.innerText,'match','part');"
style="min-width: 80px;">차량번호</th>
<th onclick="searchFromGridTitle('LEVY_EXCL_RSN_CD',this.innerText,'codeValue','FIM022');"
style="min-width: 80px;">서손/계사유</th>
style="min-width: 80px;">서손/계사유</th>
<th onclick="searchFromGridTitle('ETC_CN',this.innerText,'match','part');"
style="min-width: 80px;">특기사항</th>
</tr>

@ -53,7 +53,7 @@
<div class="col px-1 card-separator">
<p class="mb-1">2/10</p>
<i class="svg-sendstat-guide"></i>
<p class="mb-1">계장<br/>발송현황</p>
<p class="mb-1">계장<br/>발송현황</p>
</div>
<div class="col px-1 card-separator">
<p class="mb-1">2/3</p>
@ -283,7 +283,7 @@
const doughnutChartVar = new Chart(doughnutChart1, {
type: 'doughnut',
data: {
labels: ['단속', '계', '서손'],
labels: ['단속', '계', '서손'],
datasets: [
{
data: [10, 10, 80],
@ -330,7 +330,7 @@
const doughnutChartVar = new Chart(doughnutChart2, {
type: 'doughnut',
data: {
labels: ['계장', '사전통보', '고지서'],
labels: ['계장', '사전통보', '고지서'],
datasets: [
{
data: [10, 10, 80],

Loading…
Cancel
Save