개별총정보 사진 추가 수정.

main
jjh 1 year ago
parent e02dd838c2
commit 79b7309ffa

@ -37,7 +37,7 @@ public interface Excl03Service {
* <li> false</li>
* </ul>
*/
boolean createCrdnReReg(CrdnReReg crdnReReg);
String createCrdnReReg(CrdnReReg crdnReReg);
/** .
* @param excl03

@ -1,11 +1,19 @@
package cokr.xit.fims.excl.service.bean;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import cokr.xit.base.file.FileInfo;
import cokr.xit.base.file.service.FileQuery;
import cokr.xit.base.file.service.bean.FileBean;
import cokr.xit.base.file.web.FileInfoFactory;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.crdn.service.bean.CrdnBean;
import cokr.xit.fims.excl.CrdnReReg;
import cokr.xit.fims.excl.ExclQuery;
import cokr.xit.fims.excl.dao.CrdnReRegMapper;
@ -29,6 +37,14 @@ public class Excl03Bean extends AbstractComponent {
@Resource(name = "crdnReRegMapper")
private CrdnReRegMapper crdnReRegMapper;
/** 파일 정보 Bean */
@Resource(name = "fileBean")
private FileBean fileBean;
/** 단속 정보 Bean */
@Resource(name="crdnBean")
private CrdnBean crdnBean;
/** .
* @param req
* @return
@ -60,8 +76,117 @@ public class Excl03Bean extends AbstractComponent {
* <li> false</li>
* </ul>
*/
public boolean createCrdnReReg(CrdnReReg crdnReReg) {
return crdnReRegMapper.insert(crdnReReg);
public String createCrdnReReg(CrdnReReg crdnReReg) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
String retMessage = ""; // 처리 결과 메시지
// 단속 ID로 단속(TB_CRDN) 정보 조회
ExclQuery req = new ExclQuery();
req.setCrdnId(crdnReReg.getBfrCrdnId());
DataObject infoCrdn = crdnReRegMapper.selectCrdn(req);
// 단속 ID로 파일(TB_FILE) 정보 조회
List<DataObject> infoCrdnFileList = fileBean.getFileList(new FileQuery().setInfoType(CrdnReReg.INF_TYPE)
.setInfoKeys(crdnReReg.getBfrCrdnId()));
// 재등록 단속 파일 정보(TB_FILE)
List<FileInfo> fileInfoList = new ArrayList<FileInfo>();
if (!infoCrdnFileList.isEmpty() && infoCrdnFileList.size() > 0) {
List<File> files = new ArrayList<>();
for (int iLoop = 0; iLoop < infoCrdnFileList.size(); iLoop++) {
files.add(new File(infoCrdnFileList.get(iLoop).string("FILE_PATH")));
}
fileInfoList = new FileInfoFactory().createFileInfos(null, files);
// 원본 파일명
for (int iLoop = 0; iLoop < fileInfoList.size(); iLoop++) {
fileInfoList.get(iLoop).setName(infoCrdnFileList.get(iLoop).string("FILE_NM"));
}
}
// 재등록 단속 정보(TB_CRDN)
Crdn newCrdn = new Crdn();
newCrdn.setSggCd(infoCrdn.string("SGG_CD")); // 시군구 코드
newCrdn.setTaskSeCd(infoCrdn.string("TASK_SE_CD")); // 업무 구분 코드
newCrdn.setCrdnRegSeCd("03"); // 단속 등록 구분 코드(FIM026) - 재 등록
newCrdn.setCrdnInptSeCd(infoCrdn.string("CRDN_INPT_SE_CD")); // 단속 입력 구분 코드
newCrdn.setCvlcptLinkYn(infoCrdn.string("CVLCPT_LINK_YN")); // 민원 연계 여부
newCrdn.setLinkTblNm(infoCrdn.string("LINK_TBL_NM")); // 연계 테이블 명
newCrdn.setLinkId(infoCrdn.string("LINK_ID")); // 연계 ID
newCrdn.setRtpyrId(infoCrdn.string("RTPYR_ID")); // 납부자 ID
newCrdn.setCrdnYmd(infoCrdn.string("CRDN_YMD")); // 단속 일자
newCrdn.setCrdnTm(infoCrdn.string("CRDN_TM")); // 단속 시각
newCrdn.setVhrno(infoCrdn.string("VHRNO")); // 차량번호
newCrdn.setCrdnStdgNm(infoCrdn.string("CRDN_STDG_NM")); // 단속 법정동 명
newCrdn.setCrdnRoadNm(infoCrdn.string("CRDN_ROAD_NM")); // 단속 도로 명
newCrdn.setCrdnPlc(infoCrdn.string("CRDN_PLC")); // 단속 장소
newCrdn.setVltnId(infoCrdn.string("VLTN_ID")); // 위반 ID
newCrdn.setVltnCd(infoCrdn.string("VLTN_CD")); // 위반 코드
newCrdn.setGpsX(infoCrdn.string("GPS_X")); // GPS X
newCrdn.setGpsY(infoCrdn.string("GPS_Y")); // GPS Y
newCrdn.setAtchFileCnt(Integer.parseInt(infoCrdn.string("ATCH_FILE_CNT"))); // 첨부 파일 수
newCrdn.setVin(infoCrdn.string("VIN")); // 차대번호
newCrdn.setVhclNm(infoCrdn.string("VHCL_NM")); // 차량 명
newCrdn.setVhclColor(infoCrdn.string("VHCL_COLOR")); // 차량 색상
newCrdn.setFfnlgCrdnAmt(0); // 과태료 단속 금액 - 초기 값
newCrdn.setFfnlgRductRt(infoCrdn.string("FFNLG_RDUCT_RT")); // 과태료 감경 율
newCrdn.setFfnlgAmt(0); // 과태료 금액 - 초기 값
// newCrdn.setAdvntceBgngYmd(""); // 사전통지 시작 일자
// newCrdn.setAdvntceDudtYmd(""); // 사전통지 납기 일자
newCrdn.setAdvntceAmt(0); // 사전통지 금액 - 초기 값
newCrdn.setOpnnSbmsnYn("N"); // 의견 제출 여부
newCrdn.setEtcCn(infoCrdn.string("ETC_CN")); // 기타 내용
newCrdn.setCrdnSttsCd("01"); // 단속 상태 코드
newCrdn.setCrdnSttsChgDt(""); // 단속 상태 변경 일시
newCrdn.setAdtnAmt(0); // 가산 금액
newCrdn.setMinusAmt(0); // 감경 금액
newCrdn.setRcvmtAmt(0); // 수납 금액
newCrdn.setBfrCrdnId(infoCrdn.string("CRDN_ID")); // 이전 단속 ID
newCrdn.setDelYn("N"); // 삭제 여부
// TB_CRDN_ADI(단속 부가 정보)
newCrdn.setCrdnSeCd(infoCrdn.string("CRDN_SE_CD")); // 단속 구분 코드
newCrdn.setTeamId(infoCrdn.string("TEAM_ID")); // 조 ID
newCrdn.setDtlCrdnPlc(infoCrdn.string("DTL_CRDN_PLC")); // 상세 단속 장소
newCrdn.setCrdnSpareaCd(infoCrdn.string("CRDN_SPAREA_CD")); // 단속 특별구역 코드
newCrdn.setCrdnBgngTm(infoCrdn.string("CRDN_BGNG_TM")); // 단속 시작 시각
newCrdn.setCrdnEndTm(infoCrdn.string("CRDN_END_TM")); // 단속 종료 시각
newCrdn.setCrdnSn(infoCrdn.string("CRDN_SN")); // 단속 일련번호
newCrdn.setMoscX(infoCrdn.string("MOSC_X")); // 모자이크 X
newCrdn.setMoscY(infoCrdn.string("MOSC_Y")); // 모자이크 Y
newCrdn.setTowngYn(infoCrdn.string("TOWNG_YN")); // 견인 여부
newCrdn.setUseFuelCd(infoCrdn.string("USE_FUEL_CD")); // 사용 연료 코드
newCrdn.setFfnlgCarmdlCd(infoCrdn.string("FFNLG_CARMDL_CD")); // 과태료 차종 코드
newCrdn.setParkngPsbltyRsltCd(infoCrdn.string("PARKNG_PSBLTY_RSLT_CD")); // 주차 가능 결과 코드
newCrdn.setVltnNmtm(infoCrdn.string("VLTN_NMTM")); // 위반 횟수
newCrdn.setOvtimeYn(infoCrdn.string("OVTIME_YN")); // 시간외 여부
// 단속 대장 입력
retSuccess = crdnBean.create(null, newCrdn, fileInfoList);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("재부과 등록 중 단속대장 등록에 실패하였습니다.");
}
// 재부과 대장 등록
crdnReReg.setCrdnId(newCrdn.getCrdnId());
crdnReReg.setCrdnRegSeCd("03");
retSuccess = crdnReRegMapper.insert(crdnReReg);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("재부과 대장 등록에 실패하였습니다.");
}
retMessage = "[S] 작업이 정상 처리 되었습니다.";
return retMessage;
}
/** .

@ -1,19 +1,11 @@
package cokr.xit.fims.excl.service.bean;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import cokr.xit.base.file.FileInfo;
import cokr.xit.base.file.service.FileQuery;
import cokr.xit.base.file.service.bean.FileBean;
import cokr.xit.base.file.web.FileInfoFactory;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.crdn.service.bean.CrdnBean;
import cokr.xit.fims.excl.CrdnReReg;
import cokr.xit.fims.excl.ExclQuery;
import cokr.xit.fims.excl.service.Excl03Service;
@ -37,14 +29,6 @@ public class Excl03ServiceBean extends AbstractServiceBean implements Excl03Serv
@Resource(name = "excl03Bean")
private Excl03Bean excl03Bean;
/** 파일 정보 Bean */
@Resource(name = "fileBean")
private FileBean fileBean;
/** 단속 정보 Bean */
@Resource(name="crdnBean")
private CrdnBean crdnBean;
@Override
public List<DataObject> getCrdnReRegList(ExclQuery req) {
return excl03Bean.getCrdnReRegList(req);
@ -56,113 +40,8 @@ public class Excl03ServiceBean extends AbstractServiceBean implements Excl03Serv
}
@Override
public boolean createCrdnReReg(CrdnReReg crdnReReg) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
// 단속 ID로 단속(TB_CRDN) 정보 조회
ExclQuery req = new ExclQuery();
req.setCrdnId(crdnReReg.getBfrCrdnId());
DataObject infoCrdn = excl03Bean.getCrdnInfo(req);
// 단속 ID로 파일(TB_FILE) 정보 조회
List<DataObject> infoCrdnFileList = fileBean.getFileList(new FileQuery().setInfoType(CrdnReReg.INF_TYPE)
.setInfoKeys(crdnReReg.getBfrCrdnId()));
// 재등록 단속 정보(TB_CRDN)
Crdn newCrdn = new Crdn();
newCrdn.setSggCd(infoCrdn.string("SGG_CD")); // 시군구 코드
newCrdn.setTaskSeCd(infoCrdn.string("TASK_SE_CD")); // 업무 구분 코드
newCrdn.setCrdnRegSeCd("03"); // 단속 등록 구분 코드(FIM026) - 재 등록
newCrdn.setCrdnInptSeCd(infoCrdn.string("CRDN_INPT_SE_CD")); // 단속 입력 구분 코드
newCrdn.setCvlcptLinkYn(infoCrdn.string("CVLCPT_LINK_YN")); // 민원 연계 여부
newCrdn.setLinkTblNm(infoCrdn.string("LINK_TBL_NM")); // 연계 테이블 명
newCrdn.setLinkId(infoCrdn.string("LINK_ID")); // 연계 ID
newCrdn.setRtpyrId(infoCrdn.string("RTPYR_ID")); // 납부자 ID
newCrdn.setCrdnYmd(infoCrdn.string("CRDN_YMD")); // 단속 일자
newCrdn.setCrdnTm(infoCrdn.string("CRDN_TM")); // 단속 시각
newCrdn.setVhrno(infoCrdn.string("VHRNO")); // 차량번호
newCrdn.setCrdnStdgNm(infoCrdn.string("CRDN_STDG_NM")); // 단속 법정동 명
newCrdn.setCrdnRoadNm(infoCrdn.string("CRDN_ROAD_NM")); // 단속 도로 명
newCrdn.setCrdnPlc(infoCrdn.string("CRDN_PLC")); // 단속 장소
newCrdn.setVltnId(infoCrdn.string("VLTN_ID")); // 위반 ID
newCrdn.setVltnCd(infoCrdn.string("VLTN_CD")); // 위반 코드
newCrdn.setGpsX(infoCrdn.string("GPS_X")); // GPS X
newCrdn.setGpsY(infoCrdn.string("GPS_Y")); // GPS Y
newCrdn.setAtchFileCnt(Integer.parseInt(infoCrdn.string("ATCH_FILE_CNT"))); // 첨부 파일 수
newCrdn.setVin(infoCrdn.string("VIN")); // 차대번호
newCrdn.setVhclNm(infoCrdn.string("VHCL_NM")); // 차량 명
newCrdn.setVhclColor(infoCrdn.string("VHCL_COLOR")); // 차량 색상
newCrdn.setFfnlgCrdnAmt(0); // 과태료 단속 금액 - 초기 값
newCrdn.setFfnlgRductRt(infoCrdn.string("FFNLG_RDUCT_RT")); // 과태료 감경 율
newCrdn.setFfnlgAmt(0); // 과태료 금액 - 초기 값
// newCrdn.setAdvntceBgngYmd(""); // 사전통지 시작 일자
// newCrdn.setAdvntceDudtYmd(""); // 사전통지 납기 일자
newCrdn.setAdvntceAmt(0); // 사전통지 금액 - 초기 값
newCrdn.setOpnnSbmsnYn("N"); // 의견 제출 여부
newCrdn.setEtcCn(infoCrdn.string("ETC_CN")); // 기타 내용
newCrdn.setCrdnSttsCd("01"); // 단속 상태 코드
newCrdn.setCrdnSttsChgDt(""); // 단속 상태 변경 일시
newCrdn.setAdtnAmt(0); // 가산 금액
newCrdn.setMinusAmt(0); // 감경 금액
newCrdn.setRcvmtAmt(0); // 수납 금액
newCrdn.setBfrCrdnId(infoCrdn.string("CRDN_ID")); // 이전 단속 ID
newCrdn.setDelYn("N"); // 삭제 여부
// TB_CRDN_ADI(단속 부가 정보)
newCrdn.setCrdnSeCd(infoCrdn.string("CRDN_SE_CD")); // 단속 구분 코드
newCrdn.setTeamId(infoCrdn.string("TEAM_ID")); // 조 ID
newCrdn.setDtlCrdnPlc(infoCrdn.string("DTL_CRDN_PLC")); // 상세 단속 장소
newCrdn.setCrdnSpareaCd(infoCrdn.string("CRDN_SPAREA_CD")); // 단속 특별구역 코드
newCrdn.setCrdnBgngTm(infoCrdn.string("CRDN_BGNG_TM")); // 단속 시작 시각
newCrdn.setCrdnEndTm(infoCrdn.string("CRDN_END_TM")); // 단속 종료 시각
newCrdn.setCrdnSn(infoCrdn.string("CRDN_SN")); // 단속 일련번호
newCrdn.setMoscX(infoCrdn.string("MOSC_X")); // 모자이크 X
newCrdn.setMoscY(infoCrdn.string("MOSC_Y")); // 모자이크 Y
newCrdn.setTowngYn(infoCrdn.string("TOWNG_YN")); // 견인 여부
newCrdn.setUseFuelCd(infoCrdn.string("USE_FUEL_CD")); // 사용 연료 코드
newCrdn.setFfnlgCarmdlCd(infoCrdn.string("FFNLG_CARMDL_CD")); // 과태료 차종 코드
newCrdn.setParkngPsbltyRsltCd(infoCrdn.string("PARKNG_PSBLTY_RSLT_CD")); // 주차 가능 결과 코드
newCrdn.setVltnNmtm(infoCrdn.string("VLTN_NMTM")); // 위반 횟수
newCrdn.setOvtimeYn(infoCrdn.string("OVTIME_YN")); // 시간외 여부
// 재등록 단속 파일 정보(TB_FILE)
List<FileInfo> fileInfoList = new ArrayList<FileInfo>();
if (!infoCrdnFileList.isEmpty() && infoCrdnFileList.size() > 0) {
List<File> files = new ArrayList<>();
for (int iLoop = 0; iLoop < infoCrdnFileList.size(); iLoop++) {
files.add(new File(infoCrdnFileList.get(iLoop).string("FILE_PATH")));
}
fileInfoList = new FileInfoFactory().createFileInfos(null, files);
// 원본 파일명
for (int iLoop = 0; iLoop < fileInfoList.size(); iLoop++) {
fileInfoList.get(iLoop).setName(infoCrdnFileList.get(iLoop).string("FILE_NM"));
}
}
// 단속 대장 입력
retSuccess = crdnBean.create(null, newCrdn, fileInfoList);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("재부과 등록 중 단속대장 등록에 실패하였습니다.");
}
// 재부과 대장 등록
crdnReReg.setCrdnId(newCrdn.getCrdnId());
crdnReReg.setCrdnRegSeCd("03");
retSuccess = excl03Bean.createCrdnReReg(crdnReReg);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("재부과 대장 등록에 실패하였습니다.");
}
return true;
public String createCrdnReReg(CrdnReReg crdnReReg) {
return excl03Bean.createCrdnReReg(crdnReReg);
}
@Override

@ -95,7 +95,7 @@ public class Excl02Controller extends ApplicationController {
ModelAndView mav = new ModelAndView("jsonView");
return mav
.addObject("errorMessage", "이미 등록된 의견제출 정보가 있습니다.")
.addObject("retMessage", "이미 등록된 의견제출 정보가 있습니다.")
;
} else {
boolean json = jsonResponse();

@ -75,10 +75,18 @@ public class Excl03Controller extends ApplicationController {
*/
@PostMapping(name = "단속 재등록 등록", value = "/010/create.do")
public ModelAndView createCrdnReReg(CrdnReReg crdnReReg) {
boolean saved = excl03Service.createCrdnReReg(crdnReReg);
boolean saved = false;
String retMessage = excl03Service.createCrdnReReg(crdnReReg);
if (retMessage.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved);
.addObject("saved", saved)
.addObject("retMessage", retMessage);
}
/** .

@ -289,7 +289,6 @@
<button type="button" class="btn btn-primary" id="btnEditPhoto--${pageName}" title="선택 사진 편집">편집</button>
</div>
<div>
<button type="button" class="btn btn-primary" id="btnSaveFile--${pageName}" title="저장" onclick="fnSaveFile${pageName}();">저장</button>
<button type="button" class="btn btn-primary" id="btnAddFile--${pageName}" title="사진 추가">추가</button>
<button type="button" class="btn btn-primary" id="btnDeleteFile--${pageName}" title="선택 사진 삭제">삭제</button>
</div>
@ -300,10 +299,7 @@
<form id="frmUploadSet--${pageName}" method="post" enctype="multipart/form-data">
<input type="file" id="inputUploadSet--${pageName}" name="inputUploadSet" multiple accept="image/*" hidden />
</form>
<div id="displayForNew--${pageName}" style="overflow-y:scroll; min-height:40px; max-height:80px; border-style:solid;">
</div>
</div>
</div> <!-- 단속 이미지 <div class="card" style="width:500px;"> -->
</div> <!-- <div class="d-flex flex-row justify-content-evenly"> -->
</div> <!-- <div class="content-wrapper"> -->
@ -358,7 +354,7 @@
dialog.alert(resp.retMessage);
if (resp.saved) {
// fnDataRefreshInfo(); // 자료 재조회
fnImageRefreshInfo(); // 이미지(사진) 재조회
}
};
@ -397,7 +393,7 @@
files.forEach(item => localUploadArr.push(item));
fnImageDisplay(false);
${pageName}Control.save(${pageName}Fields.get());
};
uploadSet.onRemove = () => {
@ -425,7 +421,7 @@
}
tagsText += " />";
tagsText += "<img src='"+ item.URL +"' width='280' height='150' />";
tagsText += "<img src='"+ item.URL +"' width='260' height='150' />";
tagsText += "</label>";
if (j % 2 == 1) {
@ -447,7 +443,7 @@
tagsText += "<label class='mx-2'>";
tagsText += "<input type='checkbox' name='newPhoto' class='form-check-input' value='"+item.id +"' ";
tagsText += " />";
tagsText += "<img src='"+ item.url +"' width='280' height='150' />";
tagsText += "<img src='"+ item.url +"' width='260' height='150' />";
tagsText += "</label>";
if (index % 2 == 1) {
@ -518,9 +514,9 @@
});
}
// 자료 재조회
fnDataRefreshInfo = () => {
let crdnId = $("#crdnId--${pageNameMain}").val();
// 이미지(사진) 재조회
fnImageRefreshInfo = () => {
let crdnId = $("#crdnId--${pageName}").val();
// 단속 ID 가 없다면.. return
if (crdnId == null || crdnId == "") {
@ -544,10 +540,6 @@
$("#frmEdit--${pageName}")[0].reset();
}
// 최상단 단속 Data 셋팅
if (resp.crdnPayer) {
${pageNameMain}Control.setData([resp.crdnPayer]);
}
}
});
}
@ -600,7 +592,7 @@
// 이벤트 설정
setEvent${pageName} = () => {
// 선택 사진 편집
$("#btnEditPhoto--${pageName}").on('click', () => {
$("#btnEditPhoto--${pageName}").on("click", () => {
let checked = $("#displayForExist--${pageName}").find("[name='existPhoto']:checked");
if (checked.length < 1) {
dialog.alert("선택된 사진이 없습니다.");
@ -640,7 +632,7 @@
});
// 사진 삭제
$("#btnCancelAddFile--${pageName}").on('click', () => {
$("#btnCancelAddFile--${pageName}").on("click", () => {
let checked = $("#displayForNew--${pageName}").find("[name='newPhoto']:checked");
if (checked.length < 1) {
@ -738,16 +730,6 @@
console.log("단속 상태 변경");
}
// 사진 변경 저장
fnSaveFile${pageName} = () => {
dialog.alert({
content : "현재 사진 정보를 저장하시겠습니까?"
, onOK : () => {
${pageName}Control.save(${pageName}Fields.get());
}
});
}
/**************************************************************************
* script 진입
**************************************************************************/

@ -230,9 +230,8 @@
, data : params || {}
, success : resp => {
if ((typeof resp) != "string") {
if (resp.errorMessage != "") {
dialog.alert(resp.errorMessage);
if (resp.retMessage != "") {
dialog.alert(resp.retMessage);
return;
}
}

@ -338,9 +338,8 @@
, data : params || {}
, success : resp => {
if ((typeof resp) != "string") {
if (resp.errorMessage != "") {
dialog.alert(resp.errorMessage);
if (resp.retMessage != "") {
dialog.alert(resp.retMessage);
return;
}
}

Loading…
Cancel
Save