mjkhan21 10 months ago
commit 57cab7453f

@ -8,8 +8,11 @@ import java.io.StringWriter;
import java.net.URISyntaxException;
import java.net.URLDecoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import javax.annotation.Resource;
@ -39,9 +42,16 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import cokr.xit.base.file.FileInfo;
import cokr.xit.base.file.FileInfo.Relation;
import cokr.xit.base.file.dao.FileMapper;
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.dao.CrdnInfoMapper;
import cokr.xit.fims.crdn.service.CrdnService;
import cokr.xit.fims.sprt.Sprt;
import cokr.xit.fims.sprt.service.bean.MediaBean;
import cokr.xit.foundation.data.DataObject;
@ -50,15 +60,26 @@ public class FileController extends cokr.xit.base.file.web.FileController {
@Resource(name = "fileMapper")
private FileMapper fileMapper;
@Resource(name = "crdnInfoMapper")
private CrdnInfoMapper crdnInfoMapper;
@Resource(name="fileBean")
private FileBean fileBean;
@Resource(name="mediaBean")
private MediaBean mediaBean;
@Resource(name="crdnService")
private CrdnService crdnService;
@Override
public ModelAndView getFileList(FileQuery req) {
ModelAndView mav = new ModelAndView("jsonView");
String infoType = ifEmpty(req.getInfoType(), () -> "");
boolean singleKey = (req.getInfoKeys() != null && req.getInfoKeys().length == 1);
//파일 목록
List<DataObject> fileInfoList = fileService().getFileList(req);
for(DataObject fileInfo : fileInfoList) {
List<DataObject> mosaicInfos = mediaBean.getMosaicList(fileInfo.string("FILE_ID"));
@ -81,9 +102,180 @@ public class FileController extends cokr.xit.base.file.web.FileController {
}
mav = setCollectionInfo(mav, fileInfoList, "file");
//민원 동영상파일 첨부 여부
String cvlcptVideoExistYn = "N";
if(infoType.equals(Crdn.INF_TYPE) && singleKey) {
DataObject dataObject = crdnInfoMapper.selectCrdnInfo(req.getInfoKeys()[0]);
String linkTblNm = dataObject.string("LINK_TBL_NM");
if(!linkTblNm.equals("")) { //민원연계자료
FileQuery cvlcptFileQuery = new FileQuery();
if(linkTblNm.equals("TB_ESB_INTERFACE")) {
cvlcptFileQuery.setInfoType("010");
} else if(linkTblNm.equals("TB_SAEOL")) {
cvlcptFileQuery.setInfoType("020");
} else {
throw new RuntimeException("파일 조회 중 오류가 발생하였습니다.");
}
cvlcptFileQuery.setInfoKeys(dataObject.string("LINK_ID"));
List<DataObject> linkFileList = fileBean.getFileList(cvlcptFileQuery);
if(linkFileList != null && !linkFileList.isEmpty()) {
for(int i=0; i < linkFileList.size(); i++) {
String mimeType = linkFileList.get(i).string("MIME_TYPE");
if(Arrays.asList(Sprt.VIDEO_MIME_TYPE).contains(mimeType)) {
cvlcptVideoExistYn = "Y";
}
}
}
}
}
mav.addObject("cvlcptVideoExistYn", cvlcptVideoExistYn);
return mav;
}
@PostMapping(name= "단속 사진 추가", value = "/insertCrdnImageFile.do")
public ModelAndView insertCrdnImageFile(String crdnId, int atchFileCnt, MultipartFile[] newFileList) {
boolean saved = false;
String retMessage = "[F] ";
if(newFileList == null || newFileList.length == 0 || newFileList[0] == null || newFileList[0].isEmpty()) {
throw new RuntimeException("파일 업로드 오류");
}
Relation relation = new Relation().setInfoType(Crdn.INF_TYPE).setInfoKey(crdnId);
List<FileInfo> newFileInfoList = new FileInfoFactory().makeFileInfos(relation, newFileList);
List<Map<String, Object>> processList = new ArrayList<>();
int newFileSort = 999;
for(FileInfo newFileInfo : newFileInfoList) {
newFileInfo.setSortOrder(newFileSort++);
processList.add(Map.of("process", "insert", "obj", newFileInfo));
}
Crdn crdn = new Crdn();
crdn.setCrdnId(crdnId);
crdn.setAtchFileCnt(atchFileCnt);
retMessage = crdnService.changeCrdnImageFile(crdn, processList);
if (retMessage.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("retMessage", retMessage);
}
@PostMapping(name= "단속 사진 수정", value = "/updateCrdnImageFile.do")
public ModelAndView updateCrdnImageFile(String crdnId, int atchFileCnt,
String beforeKey, int beforeOrder, MultipartFile modifyFile) {
boolean saved = false;
String retMessage = "[F] ";
if(modifyFile == null || modifyFile.isEmpty()) {
throw new RuntimeException("파일 업로드 오류");
}
Relation relation = new Relation().setInfoType(Crdn.INF_TYPE).setInfoKey(crdnId);
FileInfo modifyFileInfo = new FileInfoFactory().make(relation, modifyFile);
modifyFileInfo.setSortOrder(beforeOrder);
List<Map<String, Object>> processList = new ArrayList<>();
processList.add(Map.of("process", "delete", "key", beforeKey));
processList.add(Map.of("process", "insert", "obj", modifyFileInfo));
Crdn crdn = new Crdn();
crdn.setCrdnId(crdnId);
crdn.setAtchFileCnt(atchFileCnt);
retMessage = crdnService.changeCrdnImageFile(crdn, processList);
if (retMessage.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("retMessage", retMessage);
}
@PostMapping(name= "단속 사진 삭제", value = "/deleteCrdnImageFile.do")
public ModelAndView deleteCrdnImageFile(String crdnId, int atchFileCnt, String[] deleteKeys) {
boolean saved = false;
String retMessage = "[F] ";
if(deleteKeys == null || deleteKeys.length == 0 || deleteKeys[0] == null || deleteKeys[0].isEmpty()) {
throw new RuntimeException("파일 삭제 오류");
}
List<Map<String, Object>> processList = new ArrayList<>();
for(String deleteKey : deleteKeys) {
processList.add(Map.of("process", "delete", "key", deleteKey));
}
Crdn crdn = new Crdn();
crdn.setCrdnId(crdnId);
crdn.setAtchFileCnt(atchFileCnt);
retMessage = crdnService.changeCrdnImageFile(crdn, processList);
if (retMessage.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("retMessage", retMessage);
}
@PostMapping(name= "단속 사진 순서 변경", value = "/changeOrderCrdnImageFile.do")
public ModelAndView changeOrderCrdnImageFile(String crdnId, int atchFileCnt, String[] orderedKeys) {
boolean saved = false;
String retMessage = "[F] ";
if(orderedKeys == null || orderedKeys.length == 0 || orderedKeys[0] == null || orderedKeys[0].isEmpty()) {
throw new RuntimeException("파일 순서 변경 오류");
}
List<Map<String, Object>> processList = new ArrayList<>();
for(String orderedKey : orderedKeys) {
processList.add(Map.of("process", "order", "key", orderedKey));
}
Crdn crdn = new Crdn();
crdn.setCrdnId(crdnId);
crdn.setAtchFileCnt(atchFileCnt);
retMessage = crdnService.changeCrdnImageFile(crdn, processList);
if (retMessage.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("retMessage", retMessage);
}
/** .
* @return
* @throws Exception
@ -199,6 +391,7 @@ public class FileController extends cokr.xit.base.file.web.FileController {
}
}
@PostMapping(name = "처리 전 파일업로드", value = "/uploadBeforeProcess.do")
public ModelAndView uploadBeforeProcess(MultipartFile[] uploadFiles) {
ModelAndView mav = new ModelAndView("jsonView");

@ -79,4 +79,6 @@ public interface CrdnService {
*/
boolean removeEquipmentLinkFile(String workPath, String fileName);
String changeCrdnImageFile(Crdn crdn, List<Map<String, Object>> processList);
}

@ -33,6 +33,7 @@ import cokr.xit.fims.crdn.dao.CrdnTeamMapper;
import cokr.xit.fims.crdn.dao.CrdnUpdtMapper;
import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.excl.service.bean.LevyExclBean;
import cokr.xit.fims.sprt.dao.TotalInfoMapper;
import cokr.xit.foundation.AbstractComponent;
import cokr.xit.foundation.UserInfo;
import cokr.xit.foundation.data.DataObject;
@ -70,6 +71,8 @@ public class CrdnBean extends AbstractComponent {
@Resource(name = "crdnTeamMapper")
private CrdnTeamMapper crdnTeamMapper;
@Resource(name = "totalInfoMapper")
private TotalInfoMapper totalInfoMapper;
public boolean create(Map<String, Object> nonQueryRequest, Crdn crdn, List<FileInfo> fileInfoList) {
if(fileInfoList != null && !fileInfoList.isEmpty()) {

@ -10,7 +10,9 @@ 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.fims.cmmn.CmmnUtil;
import cokr.xit.fims.cmmn.service.bean.CrdnPayerHstryBean;
import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean;
import cokr.xit.fims.crdn.Crdn;
@ -25,6 +27,8 @@ import cokr.xit.fims.crdn.service.CrdnService;
import cokr.xit.fims.cvlc.dao.CrdnCvlcptMapper;
import cokr.xit.fims.cvlc.service.bean.CrdnCvlcptMainBean;
import cokr.xit.fims.excl.service.bean.LevyExclBean;
import cokr.xit.fims.sprt.dao.TotalInfoMapper;
import cokr.xit.fims.sprt.service.bean.MediaBean;
import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.DataObject;
@ -49,9 +53,15 @@ public class CrdnServiceBean extends AbstractServiceBean implements CrdnService
@Resource(name="globalStngMapper")
protected GlobalStngMapper globalStngMapper;
@Resource(name="totalInfoMapper")
private TotalInfoMapper totalInfoMapper;
@Resource(name="fileBean")
private FileBean fileBean;
@Resource(name="mediaBean")
private MediaBean mediaBean;
@Resource(name="importBean")
private ImportBean importBean;
@ -82,10 +92,24 @@ public class CrdnServiceBean extends AbstractServiceBean implements CrdnService
List<DataObject> dataObjectList = new ArrayList<DataObject>();
switch (ifEmpty(query.getGridType(), () -> "")) {
case "tagInformationUndefinedData":
dataObjectList = crdnListMapper.selectTagInformationUndefinedDataList(query.setOrderBy("CRDN_ID"));
if (query.getOrderBy() == null) {
if (query.getBy() == null) {
query.setOrderBy("CRDN_ID");
} else {
query.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(query.getBy()));
}
}
dataObjectList = crdnListMapper.selectTagInformationUndefinedDataList(query);
break;
case "photo":
dataObjectList = crdnListMapper.selectPhotoInspectionDataList(query.setOrderBy("VHRNO, CRDN_PLC, CRDN_ID"));
if (query.getOrderBy() == null) {
if (query.getBy() == null) {
query.setOrderBy("VHRNO, CRDN_PLC, CRDN_ID");
} else {
query.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(query.getBy()));
}
}
dataObjectList = crdnListMapper.selectPhotoInspectionDataList(query);
break;
case "sameVehicleMain":
if(ifEmpty(query.getSchOnlySamePlace(),() -> "").equals("on")) {
@ -103,7 +127,14 @@ public class CrdnServiceBean extends AbstractServiceBean implements CrdnService
dataObjectList = crdnListMapper.selectTodayCrackdownList(query);
break;
default:
dataObjectList = crdnListMapper.selectCrackdownList(query.setOrderBy("CRDN_ID"));
if (query.getOrderBy() == null) {
if (query.getBy() == null) {
query.setOrderBy("CRDN_ID");
} else {
query.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(query.getBy()));
}
}
dataObjectList = crdnListMapper.selectCrackdownList(query);
break;
}
@ -245,4 +276,60 @@ public class CrdnServiceBean extends AbstractServiceBean implements CrdnService
public boolean removeEquipmentLinkFile(String workPath, String fileName) {
return crdnBean.removeEquipmentLinkFile(workPath, fileName);
}
@Override
public String changeCrdnImageFile(Crdn crdn, List<Map<String, Object>> processList) {
int createdCount = 0;
int deletedCount = 0;
boolean orderChange = false;
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
int order = 0;
for(Map<String, Object> process : processList) {
if(process.get("process").equals("insert")) {
createdCount += fileBean.create(List.of((FileInfo)process.get("obj")));
}
if(process.get("process").equals("delete")) {
deletedCount += fileBean.deleteByIDs((String)process.get("key"));
}
if(process.get("process").equals("order")) {
mediaBean.reorder((String)process.get("key"), order++);
orderChange = true;
}
}
if(!orderChange) {
// 단속 ID로 파일(TB_FILE) 정보 조회
List<DataObject> infoFileList = fileBean.getFileList(new FileQuery().setInfoType(Crdn.INF_TYPE)
.setInfoKeys(crdn.getCrdnId())
.setOrderBy("SRT_ORD,FILE_ID"));
if (infoFileList != null && infoFileList.size() > 0) {
String[] fileIDs = new String[infoFileList.size()];
for (int iLoop = 0; iLoop < infoFileList.size(); iLoop++) {
fileIDs[iLoop] = infoFileList.get(iLoop).string("FILE_ID");
}
fileBean.reorder(fileIDs); // 첨부파일 재 정렬
}
}
crdn.setAtchFileCnt(crdn.getAtchFileCnt() + createdCount - deletedCount);
rtnScs = totalInfoMapper.updateCrdnAtchFileCnt(crdn);
if (!rtnScs) {
throw new RuntimeException("단속 첨부 파일 갯수 수정에 실패하였습니다.");
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
}
}

@ -3,7 +3,6 @@ package cokr.xit.fims.cvlc.service;
import java.util.List;
import java.util.Map;
import cokr.xit.base.file.FileInfo;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.crdn.CrdnQuery;
import cokr.xit.fims.cvlc.CrdnCvlcpt;
@ -51,10 +50,10 @@ public interface CrdnCvlcptService {
boolean sendBackCivilComplaintInfo(String crdnId);
/** .
* @param nonQueryRequest , crdnCvlcpt , crdn , newFileInfoList
* @param nonQueryRequest , crdnCvlcpt , crdn
* @return
*/
boolean updateCvlcptProcessSection(Map<String, Object> nonQueryRequest, CrdnCvlcpt crdnCvlcpt, Crdn crdn, List<FileInfo> newFileInfoList);
boolean updateCvlcptProcessSection(Map<String, Object> nonQueryRequest, CrdnCvlcpt crdnCvlcpt, Crdn crdn);
/** .
* @param crdnId ID

@ -16,7 +16,6 @@ import javax.annotation.Resource;
import org.springframework.core.io.ClassPathResource;
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.fims.cmmn.CmmnUtil;
@ -40,6 +39,7 @@ import cokr.xit.fims.cvlc.service.CrdnCvlcptService;
import cokr.xit.fims.excl.dao.LevyExclMapper;
import cokr.xit.fims.excl.service.bean.LevyExclBean;
import cokr.xit.fims.sprt.Sprt;
import cokr.xit.fims.sprt.service.bean.MediaBean;
import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.interfaces.disabledparking.service.bean.DisabledParkingBean;
@ -54,6 +54,9 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
@Resource(name="fileBean")
private FileBean fileBean;
@Resource(name="mediaBean")
private MediaBean mediaBean;
@Resource(name = "disabledParkingBean")
private DisabledParkingBean disabledParkingBean;
@ -104,13 +107,36 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
List<DataObject> dataObjectList = new ArrayList<DataObject>();
switch (ifEmpty(query.getGridType(), () -> "")) {
case "receiptData":
dataObjectList = crdnCvlcptMapper.selectCivilComplaintReceiptDataList(query.setOrderBy("CVLCPT_RCPT_YMD, CRDN_ID"));
String appendCopyToOriginal = "CVLCPT_RCPT_YMD, CVLCPT_RCPT_NO, CVLCPT_LIST_NO, CVLCPT_LINK_ID, CRDN_REG_SE_CD, CRDN_ID";
if(query.getOrderBy() == null) {
if (ifEmpty(query.getBy(), "").equals("")) {
query.setOrderBy(appendCopyToOriginal);
} else {
query.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(query.getBy()+","+appendCopyToOriginal));
}
}
dataObjectList = crdnCvlcptMapper.selectCivilComplaintReceiptDataList(query);
break;
case "answerTargetData":
dataObjectList = crdnCvlcptMapper.selectCivilComplaintAnswerTargetDataList(query.setOrderBy("CRDN_ID"));
if (query.getOrderBy() == null) {
if (query.getBy() == null) {
query.setOrderBy("CRDN_ID");
} else {
query.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(query.getBy()));
}
}
dataObjectList = crdnCvlcptMapper.selectCivilComplaintAnswerTargetDataList(query);
break;
default:
dataObjectList = crdnCvlcptMapper.selectCivilComplaintList(query.setOrderBy("CRDN_ID"));
if (query.getOrderBy() == null) {
if (query.getBy() == null) {
query.setOrderBy("CRDN_ID");
} else {
query.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(query.getBy()));
}
}
dataObjectList = crdnCvlcptMapper.selectCivilComplaintList(query);
break;
}
@ -271,13 +297,13 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
FileQuery fileQuery = new FileQuery();
fileQuery.setInfoType(Crdn.INF_TYPE);
fileQuery.setInfoKeys(query.getCrdnId());
List<DataObject> fileList = fileBean.getFileList(fileQuery);
List<DataObject> fileList = mediaBean.getFileAndMosaic(fileQuery);
if(fileList != null && !fileList.isEmpty()) {
dataObject.set("fileList", fileList);
}
//동영상 존재 여부 확인
dataObject.set("videoExist", "N");
dataObject.set("VIDEO_EXIST_YN", "N");
String linkTblNm = dataObject.string("LINK_TBL_NM");
if(!linkTblNm.equals("")) {
@ -295,7 +321,7 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
for(int i=0; i < linkFileList.size(); i++) {
String mimeType = linkFileList.get(i).string("MIME_TYPE");
if(Arrays.asList(Sprt.VIDEO_MIME_TYPE).contains(mimeType)) {
dataObject.set("videoExist", "Y");
dataObject.set("VIDEO_EXIST_YN", "Y");
}
}
}
@ -341,13 +367,13 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
}
@Override
public boolean updateCvlcptProcessSection(Map<String, Object> nonQueryRequest, CrdnCvlcpt crdnCvlcpt, Crdn crdn, List<FileInfo> newFileInfoList) {
public boolean updateCvlcptProcessSection(Map<String, Object> nonQueryRequest, CrdnCvlcpt crdnCvlcpt, Crdn crdn) {
boolean saved = false;
DataObject crdnInfo = crdnInfoMapper.selectCrdnInfo(crdn.getCrdnId());
String acceptType = (String)ifEmpty(nonQueryRequest.get("acceptType"), "");
saved = crdnCvlcptSubBean.updateSubInfo(nonQueryRequest, crdn, newFileInfoList);
saved = crdnCvlcptSubBean.updateSubInfo(nonQueryRequest, crdn);
if(!saved) {
throw new RuntimeException("민원자료 저장 중 오류가 발생하였습니다.");
}

@ -33,6 +33,7 @@ import cokr.xit.fims.cvlc.dao.CrdnCvlcptMapper;
import cokr.xit.fims.cvlc.dao.WarningWordsMapper;
import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.excl.dao.LevyExclMapper;
import cokr.xit.fims.sprt.service.bean.MediaBean;
import cokr.xit.foundation.AbstractComponent;
import cokr.xit.foundation.UserInfo;
import cokr.xit.foundation.data.DataObject;
@ -58,6 +59,9 @@ public class CrdnCvlcptSubBean extends AbstractComponent {
@Resource(name = "fileBean")
private FileBean fileBean;
@Resource(name = "mediaBean")
private MediaBean mediaBean;
@Resource(name = "codeMapper")
private CodeMapper codeMapper;
@ -152,37 +156,22 @@ public class CrdnCvlcptSubBean extends AbstractComponent {
}
/** , .
* @param nonQueryRequest , crdn , newFileInfoList
* @param nonQueryRequest , crdn
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean updateSubInfo(Map<String, Object> nonQueryRequest, Crdn crdn,
List<FileInfo> newFileInfoList) {
public boolean updateSubInfo(Map<String, Object> nonQueryRequest, Crdn crdn) {
boolean saved = false;
DataObject crdnInfo = crdnInfoMapper.selectCrdnInfo(crdn.getCrdnId());
String acceptType = (String)ifEmpty(nonQueryRequest.get("acceptType"), "");
//첨수파일 수 변경
int fileInsertCnt = 0;
int fileDeleteCnt = 0;
if(newFileInfoList != null && !newFileInfoList.isEmpty()) {
fileInsertCnt = newFileInfoList.size();
}
String[] deleteFileKeyList = (String[])ifEmpty(nonQueryRequest.get("deleteFileKeyList"), new String[] {});
if(deleteFileKeyList.length > 0) {
fileDeleteCnt = deleteFileKeyList.length;
}
int changeFileCnt = (fileInsertCnt - fileDeleteCnt);
nonQueryRequest.put("changeFileCnt", changeFileCnt);
//금액 변경
if(crdnInfo.string("TASK_SE_CD").equals("PVS") && "Y".equals(crdnInfo.string("OVTIME_PRTTN_YN"))) {
nonQueryRequest.put("changeAmountYn","N");
@ -282,20 +271,6 @@ public class CrdnCvlcptSubBean extends AbstractComponent {
}
}
//파일 처리
if(newFileInfoList != null && !newFileInfoList.isEmpty()) {
int fileInsertEffected = fileBean.create(newFileInfoList);
if(fileInsertCnt != fileInsertEffected) {
throw new RuntimeException("단속민원답변 수정 중 파일 등록에 실패하였습니다.");
}
}
if(deleteFileKeyList.length > 0) {
int fileDeleteEffected = fileBean.remove((String[])nonQueryRequest.get("deleteFileKeyList"));
if(fileDeleteCnt != fileDeleteEffected) {
throw new RuntimeException("단속민원답변 수정 중 파일 삭제에 실패하였습니다.");
}
}
return true;
}
@ -326,13 +301,23 @@ public class CrdnCvlcptSubBean extends AbstractComponent {
relation.setInfoType(Crdn.INF_TYPE);
relation.setInfoKey(newCrdnId);
fileInfoList = new FileInfoFactory().createFileInfos(relation, files);
ArrayList<String> oldFileIdList = new ArrayList<>();
for (int iLoop = 0; iLoop < fileInfoList.size(); iLoop++) {
oldFileIdList.add(orgnlCrdnFileList.get(iLoop).string("FILE_ID"));
fileInfoList.get(iLoop).setName(orgnlCrdnFileList.get(iLoop).string("FILE_NM"));
}
int effected = fileBean.create(fileInfoList);
if(effected == 0) {
throw new RuntimeException("단속민원 복사 등록 중 파일복사에 실패하였습니다.");
}
try {
for (int iLoop = 0; iLoop < fileInfoList.size(); iLoop++) {
mediaBean.copyMosaicInfo(oldFileIdList.get(iLoop), fileInfoList.get(iLoop).getId());
}
} catch (Exception e) {
throw new RuntimeException("단속민원 복사 등록 중 사진 모자이크 정보 복사에 실패하였습니다.");
}
}
return true;

@ -4,21 +4,16 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Stream;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.poi.ss.usermodel.CellStyle;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import com.fasterxml.jackson.core.type.TypeReference;
import cokr.xit.base.code.CommonCode;
import cokr.xit.base.file.FileInfo;
import cokr.xit.base.file.FileInfo.Relation;
import cokr.xit.base.file.web.FileInfoFactory;
import cokr.xit.base.file.xls.XLSWriter;
import cokr.xit.base.file.xls.XLSWriter.CellDef;
import cokr.xit.base.file.xls.XLSWriter.Styler;
@ -263,14 +258,14 @@ public class Cvlc01Controller extends ApplicationController {
}
/** .
* @param hReq , crdnCvlcpt , crdn , newFileList, modifyFileList
* @param hReq , crdnCvlcpt , crdn
* @return jsonView
* <pre><code> {
* "affected":
* "saved": true, false
* }</code></pre>
*/
public ModelAndView saveCivilComplaintProcessSection(HttpServletRequest hReq, CrdnCvlcpt crdnCvlcpt, Crdn crdn, MultipartFile[] newFileList, MultipartFile[] modifyFileList) {
public ModelAndView saveCivilComplaintProcessSection(HttpServletRequest hReq, CrdnCvlcpt crdnCvlcpt, Crdn crdn) {
ManagedUser currentUser = userMapper.getUser(currentUser().getAccount(), currentUser().getInstitute());
String deptCd = currentUser.getDeptCode();
@ -280,36 +275,7 @@ public class Cvlc01Controller extends ApplicationController {
boolean saved = false;
String[] deleteFileKeyList = hReq.getParameterValues("deleteFileKeyList");
String[] modifyFileKeyList = hReq.getParameterValues("modifyFileKeyList");
List<FileInfo> newFileInfoList = new ArrayList<FileInfo>();
if(newFileList != null || modifyFileList != null) {
Relation relation = new Relation();
relation.setInfoType(crdn.INF_TYPE);
relation.setInfoKey(crdn.getCrdnId());
if(newFileList != null) {
newFileInfoList = new FileInfoFactory().makeFileInfos(relation, newFileList);
}
if(modifyFileList != null) {
newFileInfoList.addAll(new FileInfoFactory().makeFileInfos(relation, modifyFileList));
if(deleteFileKeyList == null) {
deleteFileKeyList = modifyFileKeyList;
} else {
String[] arr1 = deleteFileKeyList;
String[] arr2 = modifyFileKeyList;
String[] sumArr = Stream.of(arr1, arr2).flatMap(Stream::of).toArray(String[]::new);
deleteFileKeyList = (sumArr);
}
}
}
Map<String, Object> nonQueryRequest = new HashMap<String, Object>();
nonQueryRequest.put("deleteFileKeyList", deleteFileKeyList);
String acceptYn = hReq.getParameter("acceptYn");
if(ifEmpty(acceptYn, () -> "").equals("Y")) {
nonQueryRequest.put("acceptType", "accept");
@ -321,7 +287,7 @@ public class Cvlc01Controller extends ApplicationController {
}
}
saved = crdnCvlcptService.updateCvlcptProcessSection(nonQueryRequest, crdnCvlcpt, crdn, newFileInfoList);
saved = crdnCvlcptService.updateCvlcptProcessSection(nonQueryRequest, crdnCvlcpt, crdn);
return new ModelAndView("jsonView")

@ -6,7 +6,7 @@ import lombok.Setter;
/**
*
* @author Jojh
* @author JoJH
*/
@Getter
@Setter
@ -372,6 +372,87 @@ public class Levy extends AbstractEntity {
*/
private String vrActno11;
/**
* 12
*/
private String bankNm12;
/**
* 12
*/
private String vrActno12;
/**
* 13
*/
private String bankNm13;
/**
* 13
*/
private String vrActno13;
/**
* 14
*/
private String bankNm14;
/**
* 14
*/
private String vrActno14;
/**
* 15
*/
private String bankNm15;
/**
* 15
*/
private String vrActno15;
/**
* 16
*/
private String bankNm16;
/**
* 16
*/
private String vrActno16;
/**
* 17
*/
private String bankNm17;
/**
* 17
*/
private String vrActno17;
/**
* 18
*/
private String bankNm18;
/**
* 18
*/
private String vrActno18;
/**
* 19
*/
private String bankNm19;
/**
* 19
*/
private String vrActno19;
/**
* 20
*/
private String bankNm20;
/**
* 20
*/
private String vrActno20;
/**
*
*/

@ -144,7 +144,7 @@ public class LevyBean extends AbstractComponent {
}
// 전용차로위반, 주정차위반 과태료
// if ("BPV,PVS".contains(crdnInfo.string("TASK_SE_CD"))) {
if ("BPV,PVS".contains(crdnInfo.string("TASK_SE_CD"))) {
LevyQuery selectLevyNo = new LevyQuery();
selectLevyNo.setSggCd(crdnInfo.string("SGG_CD"));
@ -158,16 +158,16 @@ public class LevyBean extends AbstractComponent {
levy.setFfnlgAmt(crdnInfo.number("FFNLG_AMT").intValue()); // 과태료 금액
levy.setLevyPcptax(crdnInfo.number("ADVNTCE_AMT").intValue()); // 부과 본세
levy.setSumAmt(crdnInfo.number("ADVNTCE_AMT").intValue()); // 합계 금액
// } else {
} else {
// levy.setFyr(null); // 회계연도
// levy.setLevyNo(null); // 부과 번호
// levy.setLevyYmd(null); // 부과 일자
// levy.setFrstDudtYmd(null); // 최초 납기 일자
// levy.setDudtYmd(null); // 납기 일자
// levy.setFfnlgAmt(crdnInfo.number("FFNLG_AMT").intValue()); // 과태료 금액
// levy.setLevyPcptax(crdnInfo.number("FFNLG_AMT").intValue()); // 부과 본세
// levy.setSumAmt(crdnInfo.number("FFNLG_AMT").intValue()); // 합계 금액
// }
levy.setLevyNo(null); // 부과 번호
levy.setLevyYmd(null); // 부과 일자
levy.setFrstDudtYmd(null); // 최초 납기 일자
levy.setDudtYmd(null); // 납기 일자
levy.setFfnlgAmt(crdnInfo.number("FFNLG_AMT").intValue()); // 과태료 금액
levy.setLevyPcptax(crdnInfo.number("FFNLG_AMT").intValue()); // 부과 본세
levy.setSumAmt(crdnInfo.number("FFNLG_AMT").intValue()); // 합계 금액
}
levy.setSggCd(crdnInfo.string("SGG_CD")); // 시군구 코드
levy.setTaskSeCd(crdnInfo.string("TASK_SE_CD")); // 업무 구분 코드

@ -82,9 +82,9 @@ public class Dept extends AbstractEntity {
private String egpEsbPath;
/**
* E CN
* E ID
*/
private String egpCertCn;
private String egpPostInstId;
/**
* ID

@ -337,6 +337,96 @@ public class SndngDtl extends AbstractEntity {
*/
private String vrActno11;
/**
* 12
*/
private String bankNm12;
/**
* 12
*/
private String vrActno12;
/**
* 13
*/
private String bankNm13;
/**
* 13
*/
private String vrActno13;
/**
* 14
*/
private String bankNm14;
/**
* 14
*/
private String vrActno14;
/**
* 15
*/
private String bankNm15;
/**
* 15
*/
private String vrActno15;
/**
* 16
*/
private String bankNm16;
/**
* 16
*/
private String vrActno16;
/**
* 17
*/
private String bankNm17;
/**
* 17
*/
private String vrActno17;
/**
* 18
*/
private String bankNm18;
/**
* 18
*/
private String vrActno18;
/**
* 19
*/
private String bankNm19;
/**
* 19
*/
private String vrActno19;
/**
* 20
*/
private String bankNm20;
/**
* 20
*/
private String vrActno20;
/**
*
*/

@ -76,7 +76,7 @@ public class Sndb01Controller extends ApplicationController {
, serviceByPublicNoticeMain = "/240/main.do" // 공시송달 현황 메인 화면
, getServiceByPublicNoticeList = "/240/list.do" // 공시송달 현황 목록 조회
, removeServiceByPublicNotice = "/240/remove.do" // 공시송달 삭제
, getServiceByPublicNoticeDetailInfo = "/250/info.do" // 공시송달 상세 목록 조회
, getServiceByPublicNoticeDetailInfo = "/250/info.do" // 공시송달 상세 화면
, getServiceByPublicNoticeDetailList = "/250/list.do" // 공시송달 상세 목록 조회
, getServiceByPublicNoticeInfo = "/260/info.do" // 공시송달 정보
, createServiceByPublicNotice = "/260/create.do" // 공시송달 등록
@ -413,15 +413,14 @@ public class Sndb01Controller extends ApplicationController {
, Map.entry("등기번호", xlsx.style("RG_NO", center))
, Map.entry("발송일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_YMD"))).style(dateYMD))
, Map.entry("납기일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_END_YMD"))).style(dateYMD))
, Map.entry("납부자명", "RTPYR_NM")
, Map.entry("납부자생일", xlsx.style("RTPYR_BRDT_MASK", center))
, Map.entry("우편번호", xlsx.style("RTPYR_ZIP", center))
, Map.entry("주소", "RTPYR_ADDR")
, Map.entry("상세주소", "RTPYR_DTL_ADDR")
, Map.entry("성명", "RCPN_NM")
, Map.entry("우편번호", xlsx.style("RCPN_ZIP", center))
, Map.entry("주소", "RCPN_ADDR")
, Map.entry("상세주소", "RCPN_DTL_ADDR")
, Map.entry("배달일자", xlsx.format(o -> xlsx.str2date(o.get("DLVR_YMD"))).style(dateYMD))
, Map.entry("배달시각", xlsx.style("DLVR_TM", center))
, Map.entry("미배달사유", "UNDLVR_RSN_NM")
, Map.entry("수령인", "RCPN_NM")
, Map.entry("수령인", "ACTL_RCPN_NM")
, Map.entry("수령인관계", "RCPN_REL_NM")
, Map.entry("단속일시", xlsx.style("CRDN_DT", center))
, Map.entry("차량번호", "VHRNO")
@ -749,15 +748,14 @@ public class Sndb01Controller extends ApplicationController {
, Map.entry("등기번호", xlsx.style("RG_NO", center))
, Map.entry("발송일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_YMD"))).style(dateYMD))
, Map.entry("발송종료일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_END_YMD"))).style(dateYMD))
, Map.entry("납부자명", "RTPYR_NM")
, Map.entry("납부자생일", xlsx.style("RTPYR_BRDT_MASK", center))
, Map.entry("우편번호", xlsx.style("RTPYR_ZIP", center))
, Map.entry("주소", "RTPYR_ADDR")
, Map.entry("상세주소", "RTPYR_DTL_ADDR")
, Map.entry("성명", "RCPN_NM")
, Map.entry("우편번호", xlsx.style("RCPN_ZIP", center))
, Map.entry("주소", "RCPN_ADDR")
, Map.entry("상세주소", "RCPN_DTL_ADDR")
, Map.entry("배달일자", xlsx.format(o -> xlsx.str2date(o.get("DLVR_YMD"))).style(dateYMD))
, Map.entry("배달시각", xlsx.style("DLVR_TM", center))
, Map.entry("미배달사유", "UNDLVR_RSN_NM")
, Map.entry("수령인", "RCPN_NM")
, Map.entry("수령인", "ACTL_RCPN_NM")
, Map.entry("수령인관계", "RCPN_REL_NM")
, Map.entry("단속일시", xlsx.style("CRDN_DT", center))
, Map.entry("차량번호", "VHRNO")
@ -935,15 +933,14 @@ public class Sndb01Controller extends ApplicationController {
, Map.entry("등기번호", xlsx.style("RG_NO", center))
, Map.entry("발송일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_YMD"))).style(dateYMD))
, Map.entry("발송종료일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_END_YMD"))).style(dateYMD))
, Map.entry("납부자명", "RTPYR_NM")
, Map.entry("납부자생일", xlsx.style("RTPYR_BRDT_MASK", center))
, Map.entry("우편번호", xlsx.style("RTPYR_ZIP", center))
, Map.entry("주소", "RTPYR_ADDR")
, Map.entry("상세주소", "RTPYR_DTL_ADDR")
, Map.entry("성명", "RCPN_NM")
, Map.entry("우편번호", xlsx.style("RCPN_ZIP", center))
, Map.entry("주소", "RCPN_ADDR")
, Map.entry("상세주소", "RCPN_DTL_ADDR")
, Map.entry("배달일자", xlsx.format(o -> xlsx.str2date(o.get("DLVR_YMD"))).style(dateYMD))
, Map.entry("배달시각", xlsx.style("DLVR_TM", center))
, Map.entry("미배달사유", "UNDLVR_RSN_NM")
, Map.entry("수령인", "RCPN_NM")
, Map.entry("수령인", "ACTL_RCPN_NM")
, Map.entry("수령인관계", "RCPN_REL_NM")
, Map.entry("단속일시", xlsx.style("CRDN_DT", center))
, Map.entry("차량번호", "VHRNO")
@ -1353,7 +1350,7 @@ public class Sndb01Controller extends ApplicationController {
return mav
.addObject("pageName", "sndb01250")
.addObject("query", toJson(req))
.addObject("svbtcDtl", toJson(mav.getModel().get("svbtcDtlList")))
.addObject("svbtcDtlList", toJson(mav.getModel().get("svbtcDtlList")))
;
}
@ -1380,7 +1377,7 @@ public class Sndb01Controller extends ApplicationController {
ArrayList<CellDef> cellDefs = fromJson(req.getCellDefs(), new TypeReference<ArrayList<CellDef>>() {});
XLSWriter xlsx = new XLSWriter()
.setFilename("고지서발송상세" + "_목록_" + dateTime + ".xlsx")
.setFilename("공시송달상세" + "_목록_" + dateTime + ".xlsx")
.worksheet(0);
// CellStyle 지정은 여기에서..
@ -1393,18 +1390,18 @@ public class Sndb01Controller extends ApplicationController {
CellDef.setValues(cellDefs, Map.ofEntries(
Map.entry("발송상태", xlsx.style("SNDNG_DTL_STTS_NM", center))
, Map.entry("공시송달일자", xlsx.format(o -> xlsx.str2date(o.get("SVBTC_YMD"))).style(dateYMD))
, Map.entry("등기번호", xlsx.style("RG_NO", center))
, Map.entry("발송일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_YMD"))).style(dateYMD))
, Map.entry("발송종료일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_END_YMD"))).style(dateYMD))
, Map.entry("납부자명", "RTPYR_NM")
, Map.entry("납부자생일", xlsx.style("RTPYR_BRDT_MASK", center))
, Map.entry("우편번호", xlsx.style("RTPYR_ZIP", center))
, Map.entry("주소", "RTPYR_ADDR")
, Map.entry("상세주소", "RTPYR_DTL_ADDR")
, Map.entry("성명", "RCPN_NM")
, Map.entry("우편번호", xlsx.style("RCPN_ZIP", center))
, Map.entry("주소", "RCPN_ADDR")
, Map.entry("상세주소", "RCPN_DTL_ADDR")
, Map.entry("배달일자", xlsx.format(o -> xlsx.str2date(o.get("DLVR_YMD"))).style(dateYMD))
, Map.entry("배달시각", xlsx.style("DLVR_TM", center))
, Map.entry("미배달사유", "UNDLVR_RSN_NM")
, Map.entry("수령인", "RCPN_NM")
, Map.entry("수령인", "ACTL_RCPN_NM")
, Map.entry("수령인관계", "RCPN_REL_NM")
, Map.entry("단속일시", xlsx.style("CRDN_DT", center))
, Map.entry("차량번호", "VHRNO")
@ -1414,7 +1411,6 @@ public class Sndb01Controller extends ApplicationController {
, Map.entry("부과번호", xlsx.style("LEVY_NO", center))
, Map.entry("부과일자", xlsx.format(o -> xlsx.str2date(o.get("LEVY_YMD"))).style(dateYMD))
, Map.entry("납기일자", xlsx.format(o -> xlsx.str2date(o.get("DUDT_YMD"))).style(dateYMD))
, Map.entry("과태료금액", xlsx.style("FFNLG_AMT", numeric))
, Map.entry("본세", xlsx.style("PCPTAX", numeric))
, Map.entry("가산금", xlsx.style("ADAMT", numeric))
, Map.entry("합계금액", xlsx.style("SUM_AMT", numeric))
@ -1426,7 +1422,7 @@ public class Sndb01Controller extends ApplicationController {
);
xlsx.cell(0, 0)
.value("고지서 발송 상세", center)
.value("공시송달상세", center)
.merge(0, cellDefs.size() - 1)
.cell(3, 0)
.rowValues(CellDef.header(cellDefs, () -> CmmnUtil.headerStyle(xlsx)))

@ -1,6 +1,7 @@
package cokr.xit.fims.sprt.dao;
import java.util.List;
import java.util.Map;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
@ -15,4 +16,10 @@ public interface MediaMapper {
*/
List<DataObject> selectMosaicList(String fileId);
int reorder(Map<String, Object> params);
int copyMosaicInfo(Map<String, Object> param);
}

@ -3,7 +3,9 @@ package cokr.xit.fims.sprt.service.bean;
import java.awt.image.BufferedImage;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
@ -69,6 +71,33 @@ public class MediaBean extends AbstractComponent {
return fileInfo;
}
public List<DataObject> getFileAndMosaic(FileQuery fileQuery){
List<DataObject> fileList = fileBean.getFileList(fileQuery);
for(DataObject fileInfo : fileList) {
List<DataObject> mosaicInfos = this.getMosaicList(fileInfo.string("FILE_ID"));
if(mosaicInfos != null) {
String mosaic = "";
for(int i=0; i < mosaicInfos.size(); i++) {
DataObject mosaicInfo = mosaicInfos.get(i);
if(i != 0) {
mosaic += "|";
}
mosaic += mosaicInfo.string("X_AXS")
+ "," + mosaicInfo.string("Y_AXS")
+ "," + mosaicInfo.string("MOSC_LT")
+ "," + mosaicInfo.string("MOSC_HG");
}
fileInfo.set("MOSAIC", mosaic);
} else {
fileInfo.set("MOSAIC", "");
}
}
return fileList;
}
/** .<br />
* @param fileId ID
* @return
@ -112,4 +141,24 @@ public class MediaBean extends AbstractComponent {
return result;
}
public int reorder(String fileId, int i) {
Map<String, Object> params = new HashMap<>();
params.put("fileId", fileId);
params.put("srtOrd", i);
return mediaMapper.reorder(params);
}
public void copyMosaicInfo(String oldFileId, String newFileId) {
DataObject param = new DataObject().set("currentUser", currentUser());
param.put("oldFileId", oldFileId);
param.put("newFileId", newFileId);
List<DataObject> mosaicInfos = this.getMosaicList(oldFileId);
for(DataObject mosaicInfo : mosaicInfos) {
param.set("oldMoscId", mosaicInfo.string("MOSC_ID"));
mediaMapper.copyMosaicInfo(param);
}
}
}

@ -13,8 +13,8 @@ import cokr.xit.fims.crdn.ExmptnVhcl;
import cokr.xit.fims.crdn.Team;
import cokr.xit.fims.cvlc.CrdnCvlcpt;
import cokr.xit.fims.excl.CrdnReReg;
import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.Rduct;
@ -53,8 +53,8 @@ public class BpvController {
@Override
@RequestMapping(name="전용차로과태료업무 민원 정보 수정", value=METHOD_URL.saveCivilComplaintProcessSection)
public ModelAndView saveCivilComplaintProcessSection(HttpServletRequest hReq, CrdnCvlcpt crdnCvlcpt, Crdn crdn, MultipartFile[] newFileList, MultipartFile[] modifyFileList) {
return super.saveCivilComplaintProcessSection(hReq, crdnCvlcpt, crdn, newFileList, modifyFileList);
public ModelAndView saveCivilComplaintProcessSection(HttpServletRequest hReq, CrdnCvlcpt crdnCvlcpt, Crdn crdn) {
return super.saveCivilComplaintProcessSection(hReq, crdnCvlcpt, crdn);
}
@Override

@ -14,8 +14,8 @@ import cokr.xit.fims.epst.EpostGdcc;
import cokr.xit.fims.epst.EpostQuery;
import cokr.xit.fims.epst.EpostRcptReg;
import cokr.xit.fims.excl.CrdnReReg;
import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.Rduct;
@ -63,8 +63,8 @@ public class DpvController {
@Override
@RequestMapping(name="장애인과태료업무 민원 정보 수정", value=METHOD_URL.saveCivilComplaintProcessSection)
public ModelAndView saveCivilComplaintProcessSection(HttpServletRequest hReq, CrdnCvlcpt crdnCvlcpt, Crdn crdn, MultipartFile[] newFileList, MultipartFile[] modifyFileList) {
return super.saveCivilComplaintProcessSection(hReq, crdnCvlcpt, crdn, newFileList, modifyFileList);
public ModelAndView saveCivilComplaintProcessSection(HttpServletRequest hReq, CrdnCvlcpt crdnCvlcpt, Crdn crdn) {
return super.saveCivilComplaintProcessSection(hReq, crdnCvlcpt, crdn);
}
@Override
@ -674,11 +674,17 @@ public class DpvController {
}
@Override
@RequestMapping(name="공시송달 상세 조회", value=METHOD_URL.getServiceByPublicNoticeDetailInfo)
@RequestMapping(name="공시송달 상세 화면", value=METHOD_URL.getServiceByPublicNoticeDetailInfo)
public ModelAndView getServiceByPublicNoticeDetailInfo(SndbQuery req) {
return super.getServiceByPublicNoticeDetailInfo(req);
}
@Override
@RequestMapping(name="공시송달 상세 목록 조회", value=METHOD_URL.getServiceByPublicNoticeDetailList)
public ModelAndView getServiceByPublicNoticeDetailList(SndbQuery req) {
return super.getServiceByPublicNoticeDetailList(req);
}
@Override
@RequestMapping(name="공시송달 정보", value=METHOD_URL.getServiceByPublicNoticeInfo)
public ModelAndView getServiceByPublicNoticeInfo(SndbQuery req) {

@ -11,8 +11,8 @@ import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.crdn.CrdnQuery;
import cokr.xit.fims.cvlc.CrdnCvlcpt;
import cokr.xit.fims.excl.CrdnReReg;
import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.Rduct;
@ -51,8 +51,8 @@ public class EcaController {
@Override
@RequestMapping(name="전기차과태료업무 민원 정보 수정", value=METHOD_URL.saveCivilComplaintProcessSection)
public ModelAndView saveCivilComplaintProcessSection(HttpServletRequest hReq, CrdnCvlcpt crdnCvlcpt, Crdn crdn, MultipartFile[] newFileList, MultipartFile[] modifyFileList) {
return super.saveCivilComplaintProcessSection(hReq, crdnCvlcpt, crdn, newFileList, modifyFileList);
public ModelAndView saveCivilComplaintProcessSection(HttpServletRequest hReq, CrdnCvlcpt crdnCvlcpt, Crdn crdn) {
return super.saveCivilComplaintProcessSection(hReq, crdnCvlcpt, crdn);
}
@Override

@ -12,8 +12,8 @@ import cokr.xit.fims.crdn.CrdnQuery;
import cokr.xit.fims.crdn.Team;
import cokr.xit.fims.cvlc.CrdnCvlcpt;
import cokr.xit.fims.excl.CrdnReReg;
import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.Rduct;
@ -52,8 +52,8 @@ public class PvsController {
@Override
@RequestMapping(name="주정차과태료업무 민원 정보 수정", value=METHOD_URL.saveCivilComplaintProcessSection)
public ModelAndView saveCivilComplaintProcessSection(HttpServletRequest hReq, CrdnCvlcpt crdnCvlcpt, Crdn crdn, MultipartFile[] newFileList, MultipartFile[] modifyFileList) {
return super.saveCivilComplaintProcessSection(hReq, crdnCvlcpt, crdn, newFileList, modifyFileList);
public ModelAndView saveCivilComplaintProcessSection(HttpServletRequest hReq, CrdnCvlcpt crdnCvlcpt, Crdn crdn) {
return super.saveCivilComplaintProcessSection(hReq, crdnCvlcpt, crdn);
}
@Override

@ -220,6 +220,7 @@ AND (SELECT VLTN_ARTCL FROM TB_VLTN WHERE VLTN_ID = C.VLTN_ID) LIKE CONCAT('%',
/* 민원접수자료 목록 조회(crdnCvlcptMapper.selectCivilComplaintReceiptDataList) */
<include refid="utility.paging-prefix"/>
SELECT C.CRDN_ID <!-- 단속 ID -->
, CC.CVLCPT_LINK_ID
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.CRDN_REG_SE_CD <!-- 단속 등록 구분 코드 -->
@ -577,7 +578,6 @@ SELECT CC.CVLCPT_LINK_ID /* 민원 연계 ID */
UPDATE TB_CRDN
SET MDFCN_DT = <include refid="utility.now" /> /* 수정일시 */
, MDFR = #{currentUser.id} /* 수정자 */
, ATCH_FILE_CNT = ATCH_FILE_CNT + (#{changeFileCnt})
, RTPYR_ID = #{crdn.rtpyrId} /* 납부자 ID */
, CRDN_YMD = #{crdn.crdnYmd} /* 단속 일자 */
, CRDN_TM = #{crdn.crdnTm} /* 단속 시각 */

File diff suppressed because it is too large Load Diff

@ -26,49 +26,48 @@
</resultMap>
<sql id="selectList">
SELECT R.RDUCT_ID /* 감경 ID */
, R.RDUCT_YMD /* 감경 일자 */
, R.RDUCT_RSN_CD /* 감경 사유 코드 */
, R.RDUCT_AMT /* 감경 금액 */
, R.ETC_CN /* 감액 기타 내용 */
, R.DEL_YN /* 삭제 여부 */
, R.REG_DT /* 등록 일시 */
, R.RGTR /* 등록자 */
, R.MDFCN_DT /* 수정 일시 */
, R.MDFR /* 수정자 */
, R.DEL_DT /* 삭제 일시 */
, R.DLTR /* 삭제자 */
, R.DEL_RSN /* 삭제 사유 */
, C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD /* 업무 구분 코드 */
, C.VHRNO /* 차량 번호 */
, C.FFNLG_CRDN_AMT /* 과태료 단속 금액 */
, C.FFNLG_RDUCT_RT /* 과태료 감경 율 */
, C.FFNLG_AMT /* 과태료 금액 */
, C.ADVNTCE_AMT /* 사전통지금액 */
, C.CRDN_STTS_CD /* 단속 상태 코드 */
, P.RTPYR_ID /* 납부자 ID */
, P.RTPYR_NO /* 납부자 번호 */
, P.RTPYR_NM /* 납부자 명 */
, L.LEVY_ID /* 부과 ID */
, L.LEVY_PCPTAX /* 부과 본세 */
, L.LEVY_ADAMT /* 부과 가산금*/
, L.INSPY_INT /* 분납 이자 */
, L.RCVMT_PCPTAX /* 수납 본세 */
, L.RCVMT_ADAMT /* 수납 가산금 */
, L.RDCAMT_PCPTAX /* 감액 본세 */
, L.RDCAMT_ADAMT /* 감액 가산금 */
, L.SUM_AMT /* 합계 금액 */
, L.LEVY_PCPTAX + L.LEVY_ADAMT AS LEVY_AMT /* 부과 금액 */
, L.RCVMT_PCPTAX + L.RCVMT_ADAMT AS RCVMT_AMT /* 수납 금액 */
, L.RDCAMT_PCPTAX + L.RDCAMT_ADAMT AS RDCAMT_AMT /* 감액 금액 */
, CONCAT(C.CRDN_YMD,C.CRDN_TM) AS CRDN_YMD_TM /* 단속 일시 */
, (SELECT GET_CODE_NM('FIM019', R.RDUCT_RSN_CD) FROM DUAL) AS RDUCT_RSN_NM /* 감경 사유 명 */
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.RGTR) AS RGTR_NM /* 등록자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.MDFR) AS MDFR_NM /* 수정자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.DLTR) AS DLTR_NM /* 삭제자 명 */
SELECT R.RDUCT_ID <!-- 감경 ID -->
, R.RDUCT_YMD <!-- 감경 일자 -->
, R.RDUCT_RSN_CD <!-- 감경 사유 코드 -->
, R.RDUCT_AMT <!-- 감경 금액 -->
, R.ETC_CN <!-- 감액 기타 내용 -->
, R.DEL_YN <!-- 삭제 여부 -->
, R.REG_DT <!-- 등록 일시 -->
, R.RGTR <!-- 등록자 -->
, R.MDFCN_DT <!-- 수정 일시 -->
, R.MDFR <!-- 수정자 -->
, R.DEL_DT <!-- 삭제 일시 -->
, R.DLTR <!-- 삭제자 -->
, (SELECT GET_CODE_NM('FIM019', R.RDUCT_RSN_CD) FROM DUAL) AS RDUCT_RSN_NM <!-- 감경 사유 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.DLTR) AS DLTR_NM <!-- 삭제자 명 -->
, C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.VHRNO <!-- 차량 번호 -->
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.FFNLG_RDUCT_RT <!-- 과태료 감경 율 -->
, C.FFNLG_AMT <!-- 과태료 금액 -->
, C.ADVNTCE_AMT <!-- 사전통지금액 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, CONCAT(C.CRDN_YMD,C.CRDN_TM) AS CRDN_YMD_TM <!-- 단속 일시 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 -->
, L.LEVY_ID <!-- 부과 ID -->
, L.LEVY_PCPTAX <!-- 부과 본세 -->
, L.LEVY_ADAMT <!-- 부과 가산금 -->
, L.INSPY_INT <!-- 분납 이자 -->
, L.RCVMT_PCPTAX <!-- 수납 본세 -->
, L.RCVMT_ADAMT <!-- 수납 가산금 -->
, L.RDCAMT_PCPTAX <!-- 감액 본세 -->
, L.RDCAMT_ADAMT <!-- 감액 가산금 -->
, L.SUM_AMT <!-- 합계 금액 -->
, L.LEVY_PCPTAX + L.LEVY_ADAMT AS LEVY_AMT <!-- 부과 금액 -->
, L.RCVMT_PCPTAX + L.RCVMT_ADAMT AS RCVMT_AMT <!-- 수납 금액 -->
, L.RDCAMT_PCPTAX + L.RDCAMT_ADAMT AS RDCAMT_AMT <!-- 감액 금액 -->
FROM TB_RDUCT R
INNER JOIN TB_CRDN C ON (R.CRDN_ID = C.CRDN_ID)
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
@ -78,32 +77,32 @@
<select id="selectRductList" parameterType="map" resultType="dataobject">/* 과태료 감경 대장 목록 조회(rductMapper.selectRductList) */
<include refid="utility.paging-prefix" />
<include refid="selectList" />
WHERE C.SGG_CD = #{sggCd} /* 시군구 코드 */
WHERE C.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
<if test="taskSeCd != null">
AND C.TASK_SE_CD = #{taskSeCd} /* 업무 구분 코드 */
AND C.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
</if>
<if test="schRductYmdFrom != null">
AND R.RDUCT_YMD <![CDATA[>=]]> #{schRductYmdFrom} /* 감경 일자 시작 */
AND R.RDUCT_YMD <![CDATA[>=]]> #{schRductYmdFrom} <!-- 감경 일자 시작 -->
</if>
<if test="schRductYmdTo != null">
AND R.RDUCT_YMD <![CDATA[<=]]> #{schRductYmdTo} /* 감경 일자 시작 */
AND R.RDUCT_YMD <![CDATA[<=]]> #{schRductYmdTo} <!-- 감경 일자 시작 -->
</if>
<if test="schCrdnYmdFrom != null">
AND C.CRDN_YMD <![CDATA[>=]]> #{schCrdnYmdFrom} /* 단속 일자 시작 */
AND C.CRDN_YMD <![CDATA[>=]]> #{schCrdnYmdFrom} <!-- 단속 일자 시작 -->
</if>
<if test="schCrdnYmdTo != null">
AND C.CRDN_YMD <![CDATA[<=]]> #{schCrdnYmdTo} /* 단속 일자 종료 */
AND C.CRDN_YMD <![CDATA[<=]]> #{schCrdnYmdTo} <!-- 단속 일자 종료 -->
</if>
<if test="schVhrno != null">
AND C.VHRNO = #{schVhrno} /* 차량번호 */
AND C.VHRNO = #{schVhrno} <!-- 차량번호 -->
</if>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} /* 단속 ID */
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
</if>
<if test="delYN != null">
AND R.DEL_YN = #{delYN} /* 삭제 여부 */
AND R.DEL_YN = #{delYN} <!-- 삭제 여부 -->
</if>
AND C.DEL_YN = 'N' /* 단속 삭제 여부 */
AND C.DEL_YN = 'N' <!-- 단속 삭제 여부 -->
<if test="by != null and by != '' and term != null">
<choose>
<when test="mainOption == 'codeValue' or mainOption == 'match' or mainOption == 'ymd'">
@ -128,42 +127,41 @@
</select>
<sql id="select">
SELECT C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD /* 업무 구분 코드 */
, C.VHRNO /* 차량 번호 */
, C.FFNLG_CRDN_AMT /* 과태료 단속 금액 */
, C.FFNLG_RDUCT_RT /* 과태료 감경 율 */
, C.FFNLG_AMT /* 과태료 금액 */
, C.ADVNTCE_AMT /* 사전통지금액 */
, C.CRDN_STTS_CD /* 단속 상태 코드 */
, CONCAT(C.CRDN_YMD,C.CRDN_TM) AS CRDN_YMD_TM /* 단속 일시 */
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, L.LEVY_ID /* 부과 ID */
, L.SUM_AMT /* 합계 금액 */
, L.LEVY_PCPTAX + LEVY_ADAMT AS LEVY_AMT /* 부과 금액 */
, L.RCVMT_PCPTAX + RCVMT_ADAMT AS RCVMT_AMT /* 수납 금액 */
, L.RDCAMT_PCPTAX + RDCAMT_ADAMT AS RDCAMT_AMT /* 감액 금액 */
, P.RTPYR_ID /* 납부자 ID */
, P.RTPYR_NO /* 납부자 번호 */
, P.RTPYR_NM /* 납부자 명 */
, R.RDUCT_ID /* 감경 ID */
, R.RDUCT_YMD /* 감경 일자 */
, R.RDUCT_RSN_CD /* 감경 사유 코드 */
, R.RDUCT_AMT /* 감경 금액 */
, R.ETC_CN /* 감액 기타 내용 */
, R.DEL_YN /* 삭제 여부 */
, R.REG_DT /* 등록 일시 */
, R.RGTR /* 등록자 */
, R.MDFCN_DT /* 수정 일시 */
, R.MDFR /* 수정자 */
, R.DEL_DT /* 삭제 일시 */
, R.DLTR /* 삭제자 */
, R.DEL_RSN /* 삭제 사유 */
, (SELECT GET_CODE_NM('FIM019', R.RDUCT_RSN_CD) FROM DUAL) AS RDUCT_RSN_NM /* 감경 사유 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.RGTR) AS RGTR_NM /* 등록자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.MDFR) AS MDFR_NM /* 수정자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.DLTR) AS DLTR_NM /* 삭제자 명 */
SELECT C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.VHRNO <!-- 차량 번호 -->
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.FFNLG_RDUCT_RT <!-- 과태료 감경 율 -->
, C.FFNLG_AMT <!-- 과태료 금액 -->
, C.ADVNTCE_AMT <!-- 사전통지금액 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, CONCAT(C.CRDN_YMD,C.CRDN_TM) AS CRDN_YMD_TM <!-- 단속 일시 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, L.LEVY_ID <!-- 부과 ID -->
, L.SUM_AMT <!-- 합계 금액 -->
, L.LEVY_PCPTAX + LEVY_ADAMT AS LEVY_AMT <!-- 부과 금액 -->
, L.RCVMT_PCPTAX + RCVMT_ADAMT AS RCVMT_AMT <!-- 수납 금액 -->
, L.RDCAMT_PCPTAX + RDCAMT_ADAMT AS RDCAMT_AMT <!-- 감액 금액 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 -->
, R.RDUCT_ID <!-- 감경 ID -->
, R.RDUCT_YMD <!-- 감경 일자 -->
, R.RDUCT_RSN_CD <!-- 감경 사유 코드 -->
, R.RDUCT_AMT <!-- 감경 금액 -->
, R.ETC_CN <!-- 감액 기타 내용 -->
, R.DEL_YN <!-- 삭제 여부 -->
, R.REG_DT <!-- 등록 일시 -->
, R.RGTR <!-- 등록자 -->
, R.MDFCN_DT <!-- 수정 일시 -->
, R.MDFR <!-- 수정자 -->
, R.DEL_DT <!-- 삭제 일시 -->
, R.DLTR <!-- 삭제자 -->
, (SELECT GET_CODE_NM('FIM019', R.RDUCT_RSN_CD) FROM DUAL) AS RDUCT_RSN_NM <!-- 감경 사유 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.DLTR) AS DLTR_NM <!-- 삭제자 명 -->
FROM TB_CRDN C
INNER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N')
@ -174,11 +172,11 @@
<include refid="select" />
<where>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} /* 단속 ID */
AND C.DEL_YN = #{delYN} /* 삭제 여부 */
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
AND C.DEL_YN = #{delYN} <!-- 삭제 여부 -->
</if>
<if test="rductId != null">
AND R.RDUCT_ID = #{rductId} /* 감경 ID */
AND R.RDUCT_ID = #{rductId} <!-- 감경 ID -->
</if>
</where>
<include refid="utility.orderBy" />
@ -192,84 +190,84 @@
</selectKey>
INSERT
INTO TB_RDUCT (
RDUCT_ID /* 감경 ID */
, CRDN_ID /* 단속 ID */
, RTPYR_ID /* 납부자 ID */
, RDUCT_YMD /* 감경 일자 */
, RDUCT_RSN_CD /* 감경 사유 코드 */
, RDUCT_AMT /* 감경 금액 */
, ETC_CN /* 기타 내용 */
, DEL_YN /* 삭제 여부 */
, REG_DT /* 등록 일시 */
, RGTR /* 등록자 */
, MDFCN_DT /* 수정 일시 */
, MDFR /* 수정자 */
RDUCT_ID <!-- 감경 ID -->
, CRDN_ID <!-- 단속 ID -->
, RTPYR_ID <!-- 납부자 ID -->
, RDUCT_YMD <!-- 감경 일자 -->
, RDUCT_RSN_CD <!-- 감경 사유 코드 -->
, RDUCT_AMT <!-- 감경 금액 -->
, ETC_CN <!-- 기타 내용 -->
, DEL_YN <!-- 삭제 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
)
VALUES (
#{rduct.rductId} /* 감경 ID */
, #{rduct.crdnId} /* 단속 ID */
, #{rduct.rtpyrId} /* 납부자 ID */
, #{rduct.rductYmd} /* 감경 일자 */
, #{rduct.rductRsnCd} /* 감경 사유 코드 */
, #{rduct.rductAmt} /* 감경 금액 */
, #{rduct.etcCn} /* 기타 내용 */
, 'N' /* 삭제 여부 */
, <include refid="utility.now" /> /* 등록 일시 */
, #{rduct.createdBy} /* 등록자 */
, <include refid="utility.now" /> /* 수정 일시 */
, #{rduct.modifiedBy} /* 수정자 */
#{rduct.rductId} <!-- 감경 ID -->
, #{rduct.crdnId} <!-- 단속 ID -->
, #{rduct.rtpyrId} <!-- 납부자 ID -->
, #{rduct.rductYmd} <!-- 감경 일자 -->
, #{rduct.rductRsnCd} <!-- 감경 사유 코드 -->
, #{rduct.rductAmt} <!-- 감경 금액 -->
, #{rduct.etcCn} <!-- 기타 내용 -->
, 'N' <!-- 삭제 여부 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{rduct.createdBy} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{rduct.modifiedBy} <!-- 수정자 -->
)
</insert>
<update id="updateRduct" parameterType="map">/* 과태료 감경 대장 수정(rductMapper.updateRduct) */
UPDATE TB_RDUCT
SET RDUCT_YMD = #{rduct.rductYmd} /* 감경 일자 */
, RDUCT_RSN_CD = #{rduct.rductRsnCd} /* 감경 사유 코드 */
, RDUCT_AMT = #{rduct.rductAmt} /* 감경 금액 */
, ETC_CN = #{rduct.etcCn} /* 기타 내용 */
, MDFCN_DT = <include refid="utility.now" /> /* 수정 일시 */
, MDFR = #{rduct.modifiedBy} /* 수정자 */
WHERE RDUCT_ID = #{rduct.rductId} /* 감경 ID */
AND DEL_YN = 'N' /* 삭제 여부 */
SET RDUCT_YMD = #{rduct.rductYmd} <!-- 감경 일자 -->
, RDUCT_RSN_CD = #{rduct.rductRsnCd} <!-- 감경 사유 코드 -->
, RDUCT_AMT = #{rduct.rductAmt} <!-- 감경 금액 -->
, ETC_CN = #{rduct.etcCn} <!-- 기타 내용 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{rduct.modifiedBy} <!-- 수정자 -->
WHERE RDUCT_ID = #{rduct.rductId} <!-- 감경 ID -->
AND DEL_YN = 'N'
</update>
<update id="deleteRduct" parameterType="map">/* 과태료 감경 대장 삭제(rductMapper.deleteRduct) */
UPDATE TB_RDUCT SET
DEL_YN = 'Y' /* 삭제 여부 */
, DEL_DT = <include refid="utility.now" /> /* 삭제 일시 */
, DLTR = #{rduct.modifiedBy} /* 삭제자 */
, DEL_RSN = #{rduct.delRsn} /* 삭제 사유 */
WHERE RDUCT_ID = #{rduct.rductId} /* 감경 ID */
AND DEL_YN = 'N' /* 삭제 여부 */
DEL_YN = 'Y' <!-- 삭제 여부 -->
, DEL_DT = <include refid="utility.now" /> <!-- 삭제 일시 -->
, DLTR = #{rduct.modifiedBy} <!-- 삭제자 -->
, DEL_RSN = #{rduct.delRsn} <!-- 삭제 사유 -->
WHERE RDUCT_ID = #{rduct.rductId} <!-- 감경 ID -->
AND DEL_YN = 'N'
</update>
<select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(rductMapper.selectCrdn) */
SELECT C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD /* 업무 구분 코드 */
, C.VHRNO /* 차량번호 */
, C.FFNLG_CRDN_AMT /* 과태료 단속 금액 */
, C.FFNLG_RDUCT_RT /* 과태료 감경 율 */
, C.FFNLG_AMT /* 과태료 금액 */
, C.CRDN_STTS_CD /* 단속 상태 코드 */
, T.WKSN_RDUCT_RT /* 사회적약자 감경 율 */
, T.ADVNTCE_RDUCT_RT /* 사전통지 감경 율 */
, P.RTPYR_ID /* 납부자 ID */
, P.RTPYR_NO /* 납부자 번호 */
, P.RTPYR_NM /* 납부자 명 */
, L.LEVY_ID /* 부과 ID */
, L.DUDT_YMD /* 납기 일자 */
, L.LEVY_PCPTAX /* 부과 본세 */
, L.LEVY_ADAMT /* 부과 가산금 */
, L.INSPY_INT /* 분납 이자 */
, L.RCVMT_PCPTAX /* 수납 본세 */
, L.RCVMT_ADAMT /* 수납 가산금 */
, L.RDCAMT_PCPTAX /* 감액 본세 */
, L.RDCAMT_ADAMT /* 감액 가산금 */
, R.RDUCT_ID /* 감경 ID */
, <include refid="utility.today" /> AS TODAY /* 오늘 일자 */
, C.FFNLG_CRDN_AMT * T.WKSN_RDUCT_RT / 100 AS CALC_RDUCT_AMT /* 감경 금액 */
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
SELECT C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.VHRNO <!-- 차량번호 -->
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.FFNLG_RDUCT_RT <!-- 과태료 감경 율 -->
, C.FFNLG_AMT <!-- 과태료 금액 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, T.WKSN_RDUCT_RT <!-- 사회적약자 감경 율 -->
, T.ADVNTCE_RDUCT_RT <!-- 사전통지 감경 율 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 -->
, L.LEVY_ID <!-- 부과 ID -->
, L.DUDT_YMD <!-- 납기 일자 -->
, L.LEVY_PCPTAX <!-- 부과 본세 -->
, L.LEVY_ADAMT <!-- 부과 가산금 -->
, L.INSPY_INT <!-- 분납 이자 -->
, L.RCVMT_PCPTAX <!-- 수납 본세 -->
, L.RCVMT_ADAMT <!-- 수납 가산금 -->
, L.RDCAMT_PCPTAX <!-- 감액 본세 -->
, L.RDCAMT_ADAMT <!-- 감액 가산금 -->
, R.RDUCT_ID <!-- 감경 ID -->
, <include refid="utility.today" /> AS TODAY <!-- 오늘 일자 -->
, C.FFNLG_CRDN_AMT * T.WKSN_RDUCT_RT / 100 AS CALC_RDUCT_AMT <!-- 감경 금액 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
FROM TB_CRDN C
INNER JOIN TB_TASK T ON (C.SGG_CD = T.SGG_CD AND C.TASK_SE_CD = T.TASK_SE_CD AND T.USE_YN = 'Y')
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
@ -277,15 +275,15 @@
LEFT OUTER JOIN TB_RDUCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N')
<where>
<if test="rductId != null">
AND R.RDUCT_ID = #{rductId} /* 감경 ID */
AND R.RDUCT_ID = #{rductId} <!-- 감경 ID -->
<if test="delYN != null">
AND R.DEL_YN = #{delYN} /* 삭제 여부 */
AND R.DEL_YN = #{delYN} <!-- 삭제 여부 -->
</if>
</if>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} /* 단속 ID */
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
<if test="delYN != null">
AND C.DEL_YN = #{delYN} /* 삭제 여부 */
AND C.DEL_YN = #{delYN} <!-- 삭제 여부 -->
</if>
</if>
</where>
@ -293,24 +291,24 @@
<update id="updateCrdnRduct" parameterType="map">/* 단속 대장 과태료 감경 금액 수정(rductMapper.updateCrdnRduct) */
UPDATE TB_CRDN
SET FFNLG_RDUCT_RT = #{crdn.ffnlgRductRt} /* 과태료 감경 율 */
, FFNLG_AMT = #{crdn.ffnlgAmt} /* 과태료 금액 */
, ADVNTCE_AMT = #{crdn.advntceAmt} /* 사전통지 금액 */
, MDFCN_DT = <include refid="utility.now" /> /* 수정 일시 */
, MDFR = #{crdn.modifiedBy} /* 수정자 */
WHERE CRDN_ID = #{crdn.crdnId} /* 단속 ID */
AND DEL_YN = 'N' /* 삭제 여부 */
SET FFNLG_RDUCT_RT = #{crdn.ffnlgRductRt} <!-- 과태료 감경 율 -->
, FFNLG_AMT = #{crdn.ffnlgAmt} <!-- 과태료 금액 -->
, ADVNTCE_AMT = #{crdn.advntceAmt} <!-- 사전통지 금액 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{crdn.modifiedBy} <!-- 수정자 -->
WHERE CRDN_ID = #{crdn.crdnId} <!-- 단속 ID -->
AND DEL_YN = 'N' <!-- 삭제 여부 -->
</update>
<update id="updateLevyRduct" parameterType="map">/* 부과 대장 과태료 감경 금액 수정(rductMapper.updateLevyRduct) */
UPDATE TB_LEVY
SET FFNLG_AMT = #{levy.ffnlgAmt} /* 과태료 금액 */
, LEVY_PCPTAX = #{levy.levyPcptax} /* 부과 본세 */
, SUM_AMT = #{levy.sumAmt} /* 합계 금액 */
, MDFCN_DT = <include refid="utility.now" /> /* 수정 일시 */
, MDFR = #{levy.modifiedBy} /* 수정자 */
WHERE LEVY_ID = #{levy.levyId} /* 단속 ID */
AND DEL_YN = 'N' /* 삭제 여부 */
SET FFNLG_AMT = #{levy.ffnlgAmt} <!-- 과태료 금액 -->
, LEVY_PCPTAX = #{levy.levyPcptax} <!-- 부과 본세 -->
, SUM_AMT = #{levy.sumAmt} <!-- 합계 금액 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{levy.modifiedBy} <!-- 수정자 -->
WHERE LEVY_ID = #{levy.levyId} <!-- 단속 ID -->
AND DEL_YN = 'N' <!-- 삭제 여부 -->
</update>
</mapper>

@ -22,7 +22,7 @@
<result property="egpRceptId" column="EGP_RCEPT_ID" /> <!-- E그린 접수우체국국기호 -->
<result property="egpApvlNb" column="EGP_APVL_NB" /> <!-- E그린 후납계약승인번호 -->
<result property="egpEsbPath" column="EGP_ESB_PATH" /> <!-- E그린 ESB경로 -->
<result property="egpCertCn" column="EGP_CERT_CN" /> <!-- E그린 인증서CN -->
<result property="egpPostInstId" column="EGP_POST_INST_ID" /> <!-- E그린 우정정보센터 기관ID -->
<result property="ensInterfaceId" column="ENS_INTERFACE_ID" /> <!-- 세외수입 인터페이스ID -->
<result property="ensSourceCd" column="ENS_SOURCE_CD" /> <!-- 세외수입 소스코드 -->
<result property="ensTargetCd" column="ENS_TARGET_CD" /> <!-- 세외수입 타겟코드 -->
@ -38,48 +38,48 @@
</resultMap>
<sql id="select">
SELECT D.DEPT_CD /* 부서 코드 */
, D.SGG_CD /* 시군구 코드 */
, D.INST_CD /* 기관 코드 */
, D.DEPT_NM /* 부서 명 */
, D.DEPT_TELNO /* 부서 전화번호 */
, D.DEPT_FXNO /* 부서 팩스번호 */
, D.VRBACNT_LINK_SE_CD /* 가상계좌 연계 구분 코드 */
, D.PSTOFC_NM /* 우체국 명 */
, D.RG_NO_HEADER /* 등기 번호 헤더 */
, D.SNDNG_LINK_SE_CD /* 발송 연계 구분 코드 */
, D.EGP_CON_ORG /* E그린 외부기관구분코드 */
, D.EGP_RCEPT_ID /* E그린 접수우체국국기호 */
, D.EGP_APVL_NB /* E그린 후납계약승인번호 */
, D.EGP_ESB_PATH /* E그린 ESB경로 */
, D.EGP_CERT_CN /* E그린 인증서CN */
, D.ENS_INTERFACE_ID /* 세외수입 인터페이스ID */
, D.ENS_SOURCE_CD /* 세외수입 소스코드 */
, D.ENS_TARGET_CD /* 세외수입 타겟코드 */
, D.ENS_URL /* 세외수입 URL */
, D.DTBN_BANK_NM /* 교부 은행 명 */
, D.DTBN_ACTNO /* 교부 계좌번호 */
, D.SRVR_OS /* 서버 OS */
, D.USE_YN /* 사용 여부 */
, D.REG_DT /* 등록 일시 */
, D.RGTR /* 등록자 */
, D.MDFCN_DT /* 수정 일시 */
, D.MDFR /* 수정자 */
SELECT D.DEPT_CD <!-- 부서 코드 -->
, D.SGG_CD <!-- 시군구 코드 -->
, D.INST_CD <!-- 기관 코드 -->
, D.DEPT_NM <!-- 부서 명 -->
, D.DEPT_TELNO <!-- 부서 전화번호 -->
, D.DEPT_FXNO <!-- 부서 팩스번호 -->
, D.VRBACNT_LINK_SE_CD <!-- 가상계좌 연계 구분 코드 -->
, D.PSTOFC_NM <!-- 우체국 명 -->
, D.RG_NO_HEADER <!-- 등기 번호 헤더 -->
, D.SNDNG_LINK_SE_CD <!-- 발송 연계 구분 코드 -->
, D.EGP_CON_ORG <!-- E그린 외부기관구분코드 -->
, D.EGP_RCEPT_ID <!-- E그린 접수우체국국기호 -->
, D.EGP_APVL_NB <!-- E그린 후납계약승인번호 -->
, D.EGP_ESB_PATH <!-- E그린 ESB경로 -->
, D.EGP_POST_INST_ID <!-- E그린 우정정보센터 기관ID -->
, D.ENS_INTERFACE_ID <!-- 세외수입 인터페이스ID -->
, D.ENS_SOURCE_CD <!-- 세외수입 소스코드 -->
, D.ENS_TARGET_CD <!-- 세외수입 타겟코드 -->
, D.ENS_URL <!-- 세외수입 URL -->
, D.DTBN_BANK_NM <!-- 교부 은행 명 -->
, D.DTBN_ACTNO <!-- 교부 계좌번호 -->
, D.SRVR_OS <!-- 서버 OS -->
, D.USE_YN <!-- 사용 여부 -->
, D.REG_DT <!-- 등록 일시 -->
, D.RGTR <!-- 등록자 -->
, D.MDFCN_DT <!-- 수정 일시 -->
, D.MDFR <!-- 수정자 -->
FROM TB_DEPT D
</sql>
<select id="selectDeptList" parameterType="map" resultType="dataobject">/* 부서 목록 조회(deptMapper.selectDeptList) */
<include refid="utility.paging-prefix" />
<include refid="select" />
WHERE D.SGG_CD = #{sggCd} /* 시군구 코드 */
WHERE D.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
<if test="deptCd != null">
AND D.DEPT_CD = #{deptCd} /* 부서 코드 */
AND D.DEPT_CD = #{deptCd} <!-- 부서 코드 -->
</if>
<if test="instCd != null">
AND D.INST_CD = #{instCd} /* 기관 코드 */
AND D.INST_CD = #{instCd} <!-- 기관 코드 -->
</if>
<if test="useYN != null">
AND D.USE_YN = #{useYN} /* 사용 여부 */
AND D.USE_YN = #{useYN} <!-- 사용 여부 -->
</if>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" />
@ -89,16 +89,16 @@
<include refid="select" />
<where>
<if test="deptCd != null">
AND D.SGG_CD = #{sggCd} /* 시군구 코드 */
AND D.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
</if>
<if test="deptCd != null">
AND D.DEPT_CD = #{deptCd} /* 부서 코드 */
AND D.DEPT_CD = #{deptCd} <!-- 부서 코드 -->
</if>
<if test="instCd != null">
AND D.INST_CD = #{instCd} /* 기관 코드 */
AND D.INST_CD = #{instCd} <!-- 기관 코드 -->
</if>
<if test="useYN != null">
AND D.USE_YN = #{useYN} /* 사용 여부 */
AND D.USE_YN = #{useYN} <!-- 사용 여부 -->
</if>
</where>
<include refid="utility.orderBy" />
@ -107,99 +107,99 @@
<insert id="insertDept" parameterType="map">/* 부서 등록(deptMapper.insertDept) */
INSERT
INTO TB_DEPT (
DEPT_CD /* 부서 코드 */
, SGG_CD /* 시군구 코드 */
, INST_CD /* 기관 코드 */
, DEPT_NM /* 부서 명 */
, DEPT_TELNO /* 부서 전화번호 */
, DEPT_FXNO /* 부서 팩스번호 */
, VRBACNT_LINK_SE_CD /* 가상계좌 연계 구분 코드 */
, PSTOFC_NM /* 우체국 명 */
, RG_NO_HEADER /* 등기 번호 헤더 */
, SNDNG_LINK_SE_CD /* 발송 연계 구분 코드 */
, EGP_CON_ORG /* E그린 외부기관구분코드 */
, EGP_RCEPT_ID /* E그린 접수우체국국기호 */
, EGP_APVL_NB /* E그린 후납계약승인번호 */
, EGP_ESB_PATH /* E그린 ESB경로 */
, EGP_CERT_CN /* E그린 인증서CN */
, ENS_INTERFACE_ID /* 세외수입 인터페이스ID */
, ENS_SOURCE_CD /* 세외수입 소스코드 */
, ENS_TARGET_CD /* 세외수입 타겟코드 */
, ENS_URL /* 세외수입 URL */
, DTBN_BANK_NM /* 교부 은행 명 */
, DTBN_ACTNO /* 교부 계좌번호 */
, SRVR_OS /* 서버 OS */
, USE_YN /* 사용 여부 */
, REG_DT /* 등록 일시 */
, RGTR /* 등록자 */
, MDFCN_DT /* 수정 일시 */
, MDFR /* 수정자 */
DEPT_CD <!-- 부서 코드 -->
, SGG_CD <!-- 시군구 코드 -->
, INST_CD <!-- 기관 코드 -->
, DEPT_NM <!-- 부서 명 -->
, DEPT_TELNO <!-- 부서 전화번호 -->
, DEPT_FXNO <!-- 부서 팩스번호 -->
, VRBACNT_LINK_SE_CD <!-- 가상계좌 연계 구분 코드 -->
, PSTOFC_NM <!-- 우체국 명 -->
, RG_NO_HEADER <!-- 등기 번호 헤더 -->
, SNDNG_LINK_SE_CD <!-- 발송 연계 구분 코드 -->
, EGP_CON_ORG <!-- E그린 외부기관구분코드 -->
, EGP_RCEPT_ID <!-- E그린 접수우체국국기호 -->
, EGP_APVL_NB <!-- E그린 후납계약승인번호 -->
, EGP_ESB_PATH <!-- E그린 ESB경로 -->
, EGP_POST_INST_ID <!-- E그린 우정정보센터 기관ID -->
, ENS_INTERFACE_ID <!-- 세외수입 인터페이스ID -->
, ENS_SOURCE_CD <!-- 세외수입 소스코드 -->
, ENS_TARGET_CD <!-- 세외수입 타겟코드 -->
, ENS_URL <!-- 세외수입 URL -->
, DTBN_BANK_NM <!-- 교부 은행 명 -->
, DTBN_ACTNO <!-- 교부 계좌번호 -->
, SRVR_OS <!-- 서버 OS -->
, USE_YN <!-- 사용 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
) VALUES (
#{dept.deptCd} /* 부서 코드 */
, #{dept.sggCd} /* 시군구 코드 */
, #{dept.instCd} /* 기관 코드 */
, #{dept.deptNm} /* 부서 명 */
, #{dept.deptTelno} /* 부서 전화번호 */
, #{dept.deptFxno} /* 부서 팩스번호 */
, #{dept.vrbacntLinkSeCd} /* 가상계좌 연계 구분 코드 */
, #{dept.pstofcNm} /* 우체국 명 */
, #{dept.rgNoHeader} /* 등기 번호 헤더 */
, #{dept.sndngLinkSeCd} /* 발송 연계 구분 코드 */
, #{dept.egpConOrg} /* E그린 외부기관구분코드 */
, #{dept.egpRceptId} /* E그린 접수우체국국기호 */
, #{dept.egpApvlNb} /* E그린 후납계약승인번호 */
, #{dept.egpEsbPath} /* E그린 ESB경로 */
, #{dept.egpCertCn} /* E그린 인증서CN */
, #{dept.ensInterfaceId} /* 세외수입 인터페이스ID */
, #{dept.ensSourceCd} /* 세외수입 소스코드 */
, #{dept.ensTargetCd} /* 세외수입 타겟코드 */
, #{dept.ensUrl} /* 세외수입 URL */
, #{dept.dtbnBankNm} /* 교부 은행 명 */
, #{dept.dtbnActno} /* 교부 계좌번호 */
, #{dept.srvrOs} /* 서버 OS */
, 'Y' /* 사용 여부 */
, <include refid="utility.now" /> /* 등록 일시 */
, #{dept.createdBy} /* 등록자 */
, <include refid="utility.now" /> /* 수정 일시 */
, #{dept.modifiedBy} /* 수정자 */
#{dept.deptCd} <!-- 부서 코드 -->
, #{dept.sggCd} <!-- 시군구 코드 -->
, #{dept.instCd} <!-- 기관 코드 -->
, #{dept.deptNm} <!-- 부서 명 -->
, #{dept.deptTelno} <!-- 부서 전화번호 -->
, #{dept.deptFxno} <!-- 부서 팩스번호 -->
, #{dept.vrbacntLinkSeCd} <!-- 가상계좌 연계 구분 코드 -->
, #{dept.pstofcNm} <!-- 우체국 명 -->
, #{dept.rgNoHeader} <!-- 등기 번호 헤더 -->
, #{dept.sndngLinkSeCd} <!-- 발송 연계 구분 코드 -->
, #{dept.egpConOrg} <!-- E그린 외부기관구분코드 -->
, #{dept.egpRceptId} <!-- E그린 접수우체국국기호 -->
, #{dept.egpApvlNb} <!-- E그린 후납계약승인번호 -->
, #{dept.egpEsbPath} <!-- E그린 ESB경로 -->
, #{dept.egpPostInstId} <!-- E그린 우정정보센터 기관ID -->
, #{dept.ensInterfaceId} <!-- 세외수입 인터페이스ID -->
, #{dept.ensSourceCd} <!-- 세외수입 소스코드 -->
, #{dept.ensTargetCd} <!-- 세외수입 타겟코드 -->
, #{dept.ensUrl} <!-- 세외수입 URL -->
, #{dept.dtbnBankNm} <!-- 교부 은행 명 -->
, #{dept.dtbnActno} <!-- 교부 계좌번호 -->
, #{dept.srvrOs} <!-- 서버 OS -->
, 'Y' <!-- 사용 여부 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{dept.createdBy} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{dept.modifiedBy} <!-- 수정자 -->
)
</insert>
<update id="updateDept" parameterType="map">/* 부서 수정(deptMapper.updateDept) */
UPDATE TB_DEPT
SET SGG_CD = #{dept.sggCd} /* 시군구 코드 */
, INST_CD = #{dept.instCd} /* 기관 코드 */
, DEPT_NM = #{dept.deptNm} /* 부서 명 */
, DEPT_TELNO = #{dept.deptTelno} /* 부서 전화번호 */
, DEPT_FXNO = #{dept.deptFxno} /* 부서 팩스번호 */
, VRBACNT_LINK_SE_CD = #{dept.vrbacntLinkSeCd} /* 가상계좌 연계 구분 코드 */
, PSTOFC_NM = #{dept.pstofcNm} /* 우체국 명 */
, RG_NO_HEADER = #{dept.rgNoHeader} /* 등기 번호 헤더 */
, SNDNG_LINK_SE_CD = #{dept.sndngLinkSeCd} /* 발송 연계 구분 코드 */
, EGP_CON_ORG = #{dept.egpConOrg} /* E그린 외부기관구분코드 */
, EGP_RCEPT_ID = #{dept.egpRceptId} /* E그린 접수우체국국기호 */
, EGP_APVL_NB = #{dept.egpApvlNb} /* E그린 후납계약승인번호 */
, EGP_ESB_PATH = #{dept.egpEsbPath} /* E그린 ESB경로 */
, EGP_CERT_CN = #{dept.egpCertCn} /* E그린 인증서CN */
, ENS_INTERFACE_ID = #{dept.ensInterfaceId} /* 세외수입 인터페이스ID */
, ENS_SOURCE_CD = #{dept.ensSourceCd} /* 세외수입 소스코드 */
, ENS_TARGET_CD = #{dept.ensTargetCd} /* 세외수입 타겟코드 */
, ENS_URL = #{dept.ensUrl} /* 세외수입 URL */
, DTBN_BANK_NM = #{dept.dtbnBankNm} /* 교부 은행 명 */
, DTBN_ACTNO = #{dept.dtbnActno} /* 교부 계좌번호 */
, SRVR_OS = #{dept.srvrOs} /* 서버 OS */
, MDFCN_DT = <include refid="utility.now" /> /* 수정 일시 */
, MDFR = #{dept.modifiedBy} /* 수정자 */
SET SGG_CD = #{dept.sggCd} <!-- 시군구 코드 -->
, INST_CD = #{dept.instCd} <!-- 기관 코드 -->
, DEPT_NM = #{dept.deptNm} <!-- 부서 명 -->
, DEPT_TELNO = #{dept.deptTelno} <!-- 부서 전화번호 -->
, DEPT_FXNO = #{dept.deptFxno} <!-- 부서 팩스번호 -->
, VRBACNT_LINK_SE_CD = #{dept.vrbacntLinkSeCd} <!-- 가상계좌 연계 구분 코드 -->
, PSTOFC_NM = #{dept.pstofcNm} <!-- 우체국 명 -->
, RG_NO_HEADER = #{dept.rgNoHeader} <!-- 등기 번호 헤더 -->
, SNDNG_LINK_SE_CD = #{dept.sndngLinkSeCd} <!-- 발송 연계 구분 코드 -->
, EGP_CON_ORG = #{dept.egpConOrg} <!-- E그린 외부기관구분코드 -->
, EGP_RCEPT_ID = #{dept.egpRceptId} <!-- E그린 접수우체국국기호 -->
, EGP_APVL_NB = #{dept.egpApvlNb} <!-- E그린 후납계약승인번호 -->
, EGP_ESB_PATH = #{dept.egpEsbPath} <!-- E그린 ESB경로 -->
, EGP_POST_INST_ID = #{dept.egpPostInstId} <!-- E그린 우정정보센터 기관ID -->
, ENS_INTERFACE_ID = #{dept.ensInterfaceId} <!-- 세외수입 인터페이스ID -->
, ENS_SOURCE_CD = #{dept.ensSourceCd} <!-- 세외수입 소스코드 -->
, ENS_TARGET_CD = #{dept.ensTargetCd} <!-- 세외수입 타겟코드 -->
, ENS_URL = #{dept.ensUrl} <!-- 세외수입 URL -->
, DTBN_BANK_NM = #{dept.dtbnBankNm} <!-- 교부 은행 명 -->
, DTBN_ACTNO = #{dept.dtbnActno} <!-- 교부 계좌번호 -->
, SRVR_OS = #{dept.srvrOs} <!-- 서버 OS -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{dept.modifiedBy} <!-- 수정자 -->
WHERE DEPT_CD = #{dept.deptCd}
AND USE_YN = 'Y'
</update>
<update id="deleteDept" parameterType="map">/* 부서 삭제(deptMapper.deleteDept) */
UPDATE TB_DEPT
SET USE_YN = 'N'
, MDFCN_DT = <include refid="utility.now" />
, MDFR = #{currentUser.id}
WHERE DEPT_CD = #{dept.deptCd}
SET USE_YN = 'N' <!-- 사용 여부 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{currentUser.id} <!-- 수정자 -->
WHERE DEPT_CD = #{dept.deptCd} <!-- 부서 코드 -->
AND USE_YN = 'Y'
</update>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -44,7 +44,6 @@
, SV.MDFR <!-- 수정자 -->
, SV.DEL_DT <!-- 삭제 일시 -->
, SV.DLTR <!-- 삭제자 -->
, SV.DEL_RSN <!-- 삭제 사유 -->
, (SELECT GET_CODE_NM('FIM054', SV.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM <!-- 업무 구분 명 -->
, (SELECT GET_CODE_NM('FIM047', SV.SNDNG_SE_CD) FROM DUAL) AS SNDNG_SE_NM <!-- 발송 구분 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SV.RGTR) AS RGTR_NM <!-- 등록자 명 -->
@ -71,18 +70,18 @@
<choose>
<when test="schRegDateOpt == 'regDt'">
<if test="schRegDateFrom != null">
AND SV.REG_DT <![CDATA[>=]]> CONCAT(#{schRegDateFrom},'000000') /* 등록 일자 시작 */
AND SV.REG_DT <![CDATA[>=]]> CONCAT(#{schRegDateFrom},'000000') <!-- 등록 일자 시작 -->
</if>
<if test="schRegDateTo != null">
AND SV.REG_DT <![CDATA[<=]]> CONCAT(#{schRegDateTo},'235959') /* 등록 일자 종료 */
AND SV.REG_DT <![CDATA[<=]]> CONCAT(#{schRegDateTo},'235959') <!-- 등록 일자 종료 -->
</if>
</when>
<when test="schRegDateOpt == 'mdfcnDt'">
<if test="schRegDateFrom != null">
AND SV.MDFCN_DT <![CDATA[>=]]> CONCAT(#{schRegDateFrom},'000000') /* 수정 일자 시작 */
AND SV.MDFCN_DT <![CDATA[>=]]> CONCAT(#{schRegDateFrom},'000000') <!-- 수정 일자 시작 -->
</if>
<if test="schRegDateTo != null">
AND SV.MDFCN_DT <![CDATA[<=]]> CONCAT(#{schRegDateTo},'235959') /* 수정 일자 종료 */
AND SV.MDFCN_DT <![CDATA[<=]]> CONCAT(#{schRegDateTo},'235959') <!-- 수정 일자 종료 -->
</if>
</when>
<otherwise>
@ -91,12 +90,12 @@
<choose>
<when test="schRgtrOpt == 'rgtr'">
<if test="schRgtrCd != null">
AND SV.RGTR = #{schRgtrCd} /* 등록자 코드 */
AND SV.RGTR = #{schRgtrCd} <!-- 등록자 코드 -->
</if>
</when>
<when test="schRgtrOpt == 'mdfr'">
<if test="schRgtrCd != null">
AND SV.MDFR = #{schRgtrCd} /* 수정자 코드 */
AND SV.MDFR = #{schRgtrCd} <!-- 수정자 코드 -->
</if>
</when>
<otherwise>
@ -149,8 +148,8 @@
, SV.TASK_SE_CD <!-- 업무 구분 코드 -->
, SV.SNDNG_SE_CD <!-- 발송 구분 코드 -->
, SV.SVBTC_YMD <!-- 공시송달 일자 -->
, SV.TTL_NM <!-- 제목 명 -->
, SV.DOC_NO <!-- 문서 번호 -->
, SV.TTL_NM <!-- 제목 명 -->
, SV.ETC_CN <!-- 기타 내용 -->
, SV.TNOCS <!-- 총건수 -->
, SV.DEL_YN <!-- 삭제 여부 -->
@ -160,7 +159,6 @@
, SV.MDFR <!-- 수정자 -->
, SV.DEL_DT <!-- 삭제 일시 -->
, SV.DLTR <!-- 삭제자 -->
, SV.DEL_RSN <!-- 삭제 사유 -->
, (SELECT GET_CODE_NM('FIM054', SV.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM <!-- 업무 구분 명 -->
, (SELECT GET_CODE_NM('FIM047', SV.SNDNG_SE_CD) FROM DUAL) AS SNDNG_SE_NM <!-- 발송 구분 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SV.RGTR) AS RGTR_NM <!-- 등록자 명 -->
@ -176,9 +174,12 @@
, SD.FYR <!-- 회계연도 -->
, SD.LEVY_NO <!-- 부과 번호 -->
, SD.SNDNG_YMD <!-- 발송 일자 -->
, SD.SNDNG_END_YMD <!-- 발송 종료 일자 -->
, SD.LEVY_YMD <!-- 부과 일자 -->
, SD.DUDT_YMD <!-- 납기 일자 -->
, SD.DUDT_AFTR_YMD <!-- 납기 후 일자 -->
, SD.FFNLG_AMT <!-- 과태료 금액 -->
, SD.PCPTAX <!-- 본세 -->
, SD.ADAMT <!-- 가산금 -->
, SD.SUM_AMT <!-- 합계 금액 -->
, SD.RCPN_NM <!-- 수령인 명 -->
, SD.RCPN_BRDT <!-- 수령인 생년월일 -->
@ -195,9 +196,9 @@
, SD.SNDNG_DTL_STTS_CD <!-- 발송 상세 상태 코드 -->
, SD.SNDNG_RCVMT_CD <!-- 발송 수납 코드 -->
, SD.ADDR_CHG_CD <!-- 주소 변경 코드 -->
, GET_MASK_DATE(SD.DUDT_YMD, 'K') AS DUDT_YMD_MASK_KOR <!-- 납기 일자(한글표기) -->
, GET_MASK_DATE(SD.DUDT_YMD, '.') AS DUDT_YMD_MASK <!-- 납기 일자 -->
, GET_MASK_DATE(SD.DUDT_AFTR_YMD, '.') AS DUDT_AFTR_YMD_MASK <!-- 납기 후 일자 -->
, (SELECT GET_MASK_DATE(SD.LEVY_YMD, '.') FROM DUAL) AS LEVY_YMD_MASK <!-- 부과 일자 -->
, (SELECT GET_MASK_DATE(SD.DUDT_YMD, '.') FROM DUAL) AS DUDT_YMD_MASK <!-- 납기 일자 -->
, (SELECT GET_MASK_DATE(SD.DUDT_YMD, 'K') FROM DUAL) AS DUDT_YMD_MASK_KOR <!-- 납기 일자(한글표기) -->
, (SELECT GET_CODE('EGP010', SD.UNDLVR_RSN_NM) FROM DUAL) AS UNDLVR_RSN_CD <!-- 미배달 사유 코드 -->
, (SELECT GET_CODE_NM('FIM050', SD.SNDNG_DTL_STTS_CD) FROM DUAL) AS SNDNG_DTL_STTS_NM <!-- 발송 상세 상태 명 -->
, (SELECT GET_CODE_NM('FIM051', SD.SNDNG_RCVMT_CD) FROM DUAL) AS SNDNG_RCVMT_NM <!-- 발송 수납 명 -->

@ -15,4 +15,50 @@ SELECT MOSC_ID
AND DEL_YN = 'N'
</select>
<update id="reorder" parameterType="map">
/* 이미지파일 순서 변경 (mediaMapper.reorder) */
UPDATE TB_FILE
SET SRT_ORD = #{srtOrd}
WHERE FILE_ID = #{fileId}
</update>
<insert id="copyMosaicInfo" parameterType="map">
/* 모자이크 정보 복사(mediaMapper.copyMosaicInfo) */
<selectKey resultType="string" keyProperty="newMoscId" keyColumn="NEW_ID" order="BEFORE">
SELECT
LPAD(CAST(IFNULL(MAX(MOSC_ID) + 1, 1) AS INT), 10, '0')
AS NEW_ID
FROM TB_FILE_MOSC
</selectKey>
INSERT
INTO TB_FILE_MOSC (
MOSC_ID
, FILE_ID
, X_AXS
, Y_AXS
, MOSC_LT
, MOSC_HG
, DEL_YN <!-- 삭제 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
)
SELECT #{newMoscId}
, #{newFileId}
, X_AXS
, Y_AXS
, MOSC_LT
, MOSC_HG
, 'N' <!-- 삭제 여부 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{currentUser.id} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{currentUser.id} <!-- 수정자 -->
FROM TB_FILE_MOSC
WHERE FILE_ID = #{oldFileId}
AND MOSC_ID = #{oldMoscId}
AND DEL_YN = 'N'
</insert>
</mapper>

@ -368,79 +368,14 @@
</form>
</div>
<div class="card" style="width:500px;min-width:500px;">
<form id="frmFile--${pageName}" method="post" enctype="multipart/form-data">
<input type="file" id="newFileList--${pageName}" name="newFileList"
multiple accept="image/*" hidden />
<input type="file" id="modifyFileList--${pageName}" name="modifyFileList"
multiple accept="image/*" hidden />
</form>
<div class="col-md-12 d-flex justify-content-between">
<div class="fs-4 fw-bold">등록된 사진</div>
<div>
<button type="button" id="btnEditPhoto--${pageName}" class="btn btn-primary">
선택 사진 편집
</button>
<button type="button" id="btnDeleteExistPhoto--${pageName}" class="btn btn-primary">
선택 사진 삭제
</button>
</div>
</div>
<div id="displayForExist--${pageName}"
style="overflow-y: scroll;min-height: 40px;max-height: 340px;border-style: solid;">
</div>
<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 d-flex justify-content-between">
<div class="fs-4 fw-bold">추가한 사진</div>
<div>
<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>
</div>
</div>
<div id="displayForNew--${pageName}"
style="overflow-y: scroll;min-height: 40px;max-height: 340px;border-style: solid;">
</div>
</div>
<jsp:include page="/WEB-INF/jsp/fims/photo-main.jsp" />
</div>
<label for="" id="refreshEnd--${pageName}" class="parentGrid" hidden></label>
<template id="imgRadioTemplate--${pageName}">
<label class='mx-1'>
<div style='display:relative;'>
<input type="radio" name="{name}" class="form-check-input" value="{value}" checked="" />
<img src="{src}" width='200' height='200' style='display:absolute;'
data-crdn-photo-id="{crdnPhotoId}"
data-mosaic="{mosaic}"
onload='fn_photoMask($("#photoMask--top").is(":checked"),this);' />
</div>
</label>
</template>
<script>
<template id="imgCheckboxTemplate--${pageName}">
<label class='mx-1'>
<div style='display:relative;'>
<input type="checkbox" name="{name}" class="form-check-input" value="{value}" />
<img src="{src}" width='200' height='200' style='display:absolute;'
data-crdn-photo-id="{crdnPhotoId}"
data-mosaic="{mosaic}"
onload='fn_photoMask($("#photoMask--top").is(":checked"),this);' />
</div>
</label>
</template>
<script>
/**************************************************************************
* Global Variable
**************************************************************************/
@ -468,19 +403,11 @@ $(document).ready(function(){
$P.provided = pageObject.childReq.pop();
}
$P.existFileArr = [];
$P.captureFileArr = [];
$P.localUploadArr = [];
$P.numberPlateArr = [];
/**************************************************************************
* DatasetControl, Dataset, FormFields
**************************************************************************/
$P.formFields = new FimsFormFields("#frmEdit--${pageName}");
$P.uploadSet = uploadSupport("#inputUploadSet--${pageName}");
$P.crdnControl = new DatasetControl({
urls : {
load : "",
@ -500,35 +427,7 @@ $(document).ready(function(){
$P.crdnControl.save = (info, accept) => {
if (!info) return;
var formData = new FormData(document.getElementById("frmFile--${pageName}"));
for(var key in info) {
var value = info[key];
formData.append(key,value);
}
formData.delete("newFileList");
formData.delete("modifyFileList");
if($P.localUploadArr.length > 0){
$P.localUploadArr.forEach(item => formData.append("newFileList",item));
}
if($P.numberPlateArr.length > 0){
$P.numberPlateArr.forEach(item => formData.append("newFileList",item));
}
if($P.captureFileArr.length > 0){
$P.captureFileArr.forEach(item => formData.append("newFileList",item));
}
if($P.existFileArr.length > 0){
for(var i=0; i < $P.existFileArr.length; i++){
if($P.existFileArr[i].status == "delete"){
formData.append("deleteFileKeyList", $P.existFileArr[i].FILE_ID);
} else if($P.existFileArr[i].status == "modified"){
formData.append("modifyFileKeyList", $P.existFileArr[i].FILE_ID);
formData.append("modifyFileList", $P.existFileArr[i]);
}
}
}
var formData = new FormData(document.getElementById("frmEdit--${pageName}"));
if(accept){
formData.append("acceptYn", "Y");
@ -550,16 +449,6 @@ $(document).ready(function(){
$P.formFields.set(item);
}
$P.uploadSet.onDatasetChange = () => {
var files = $P.uploadSet.getDataset();
files.forEach(function(item){
item.mosaic = "";
$P.localUploadArr.push(item);
});
$P.fnDisplay(false);
};
$P.uploadSet.onRemove = () => { };
$P.crdnControl.onSave = (resp) => {
if (resp.saved) {
@ -594,203 +483,7 @@ $(document).ready(function(){
/**************************************************************************
* pageObject.function
**************************************************************************/
$P.fnMakeImgForExistFile = (fileArr) => {
var tagsTextArr = [];
for(var index = 0, j = 0; index < fileArr.length; index++){
var item = fileArr[index];
if(item.status == "delete"){
continue;
}
var template = document.getElementById("imgRadioTemplate--${pageName}").innerHTML;
template = template.replace(/{name}/gi, "existPhoto");
template = template.replace(/{value}/gi, item.FILE_ID);
template = template.replace(/{src}/gi, item.URL);
if(index != 0){
template = template.replace("checked=\"\"", "");
}
template = template.replace(/{crdnPhotoId}/gi, "exist"+item.FILE_ID+"${pageName}");
template = template.replace(/{mosaic}/gi, item.MOSAIC);
tagsTextArr.push(template);
if(j % 2 == 1){
tagsTextArr.push("<br />");
}
j++;
}
return tagsTextArr.join("");
}
$P.fnMakeImgForNewFile = (fileArr) => {
var tagsTextArr = [];
for(var index = 0; index < fileArr.length; index++){
var item = fileArr[index];
var template = document.getElementById("imgCheckboxTemplate--${pageName}").innerHTML;
template = template.replace(/{name}/gi, "newPhoto");
template = template.replace(/{value}/gi, item.id);
template = template.replace(/{src}/gi, item.url);
template = template.replace(/{crdnPhotoId}/gi, "new"+item.id+"${pageName}");
template = template.replace(/{mosaic}/gi, item.mosaic);
tagsTextArr.push(template);
if(index % 2 == 1){
tagsTextArr.push("<br />");
}
}
return tagsTextArr.join("");
}
$P.fnDisplay = (isExist) => {
if(isExist){
var displayArea = document.querySelector("#displayForExist--${pageName}");
var tagsText = $P.fnMakeImgForExistFile($P.existFileArr);
if(tagsText == ""){
displayArea.innerHTML = "등록된 사진이 없습니다.";
$("#btnEditPhoto--cvlc01020-info").hide();
} else {
displayArea.innerHTML = tagsText;
$("#btnEditPhoto--cvlc01020-info").show();
}
} else {
var displayArea = document.querySelector("#displayForNew--${pageName}");
var concatArr = $P.localUploadArr.concat($P.numberPlateArr).concat($P.captureFileArr);
var tagsText = $P.fnMakeImgForNewFile(concatArr);
displayArea.innerHTML = tagsText;
}
};
$P.fnReset = () => {
var crdnId = $("#crdnId--${pageName}").val();
$P.fnGo(crdnId);
}
$P.fnAccept = () => {
if(!customValidate($("#frmEdit--${pageName} input"))) return;
var vhrno = document.getElementById("vhrno--${pageName}");
var rtpyrNm = document.getElementById("rtpyrNm--${pageName}");
if(vhrno.value == ""){
dialog.alert({
content:"수용 처리를 하기 위해선 차량번호가 입력되어야 합니다.",
init : function() { focusClose(); },
onClose:function(){vhrno.focus();}
});
return;
}
if(rtpyrNm.value == ""){
dialog.alert({
content:"수용 처리를 하기 위해선 소유주정보가 입력되어야 합니다.",
init : function() { focusClose(); },
onClose:function(){rtpyrNm.focus();}
});
return;
}
if(confirm("현재 단속 정보를 저장하시겠습니까?")){
$P.crdnControl.save($P.formFields.get(), true);
}
};
$P.fnSendBack = () => {
if(!confirm("반송 처리 하시겠습니까?")){
return;
}
var crdnId = $("#crdnId--${pageName}").val();
ajax.post({
url : $P.crdnControl.urls.remove,
data : { crdnId : crdnId },
success : resp => {
if(resp.saved){
var message = "민원회수 요청이 등록되었습니다.\n"
+"30~60분 사이에 서버에서 민원시스템으로 전송이 진행되니 이후에 민원시스템에서 확인하시기 바랍니다.";
dialog.alert({
content : message,
init : function() { focusClose(); }
});
var crdnId = $("#crdnId--${pageName}").val();
var cursorKey = "";
var nextKey = $P.provided.getNextKey(crdnId);
if(nextKey != ""){
cursorKey = nextKey;
} else {
var prevKey = $P.provided.getPrevKey(crdnId);
if(prevKey != ""){
cursorKey = prevKey;
}
}
$("#refreshEnd--${pageName}").attr("data-cursor-key", cursorKey);
$P.provided.refreshList();
}
}
});
}
$P.videoCallback = (snapshots) => {
snapshots.forEach(function(canvas, index, array){
canvas.toBlob(function(blob){
var identify = new Date().getTime()+ "-" + index;
var file = new File([blob], "capture-"+identify+".png", {type: "image/png"});
file.id = "file-" + identify;
file.url = (window.URL || window.webkitURL).createObjectURL(file);
file.mosaic = "";
$P.captureFileArr.push(file);
if(index === array.length - 1){
$P.fnDisplay(false);
}
});
});
}
$P.editPhotoCallback = (modifiedFile, originalFileInfo, isNumberPlate) => {
modifiedFile.id = "file-" + new Date().getTime() + "-" + "0";
modifiedFile.url = (window.URL || window.webkitURL).createObjectURL(modifiedFile);
if(isNumberPlate){
modifiedFile.mosaic = "";
$P.numberPlateArr.push(modifiedFile);
$P.fnDisplay(false);
} else {
$P.existFileArr.forEach(function(item,index){
if(item.FILE_ID == originalFileInfo.FILE_ID){
modifiedFile.URL = modifiedFile.url;
modifiedFile.FILE_ID = originalFileInfo.FILE_ID;
modifiedFile.status = "modified";
modifiedFile.MOSAIC = originalFileInfo.MOSAIC;
$P.existFileArr.splice(index, 1, modifiedFile);
};
});
$P.fnDisplay(true);
}
}
$P.openLevyExclPop = (levyExclSeCd) => {
@ -833,7 +526,6 @@ $(document).ready(function(){
});
};
$P.exclSaveCallback = function(exclInfo){
var mergeInfo = $P.formFields.get();
@ -879,26 +571,13 @@ $(document).ready(function(){
$("#countStauts--${pageName}").val(cs);
$P.provided.selectRow(crdnId);
if(crdnInfo.videoExist == "N"){
$("#btnOpenVideoCapture--${pageName}").hide();
} else {
$("#btnOpenVideoCapture--${pageName}").show();
}
$P.existFileArr = [];
if(crdnInfo.fileList){
crdnInfo.fileList.forEach(function(item){
item.status = "";
$P.existFileArr.push(item);
});
var existVideo = false;
if(crdnInfo.VIDEO_EXIST_YN == "Y"){
existVideo = true;
}
$P.fnDisplay(true);
initPhotoMain("${pageName}", crdnInfo.fileList, existVideo);
$P.captureFileArr = [];
$P.localUploadArr = [];
$P.numberPlateArr = [];
$("#inputUploadSet--${pageName}")[0].value = "";
$P.fnDisplay(false);
}
});
}
@ -1051,6 +730,87 @@ $(document).ready(function(){
}
$P.fnReset = () => {
var crdnId = $("#crdnId--${pageName}").val();
$P.fnGo(crdnId);
}
$P.fnAccept = () => {
if(!customValidate($("#frmEdit--${pageName} input"))) return;
var vhrno = document.getElementById("vhrno--${pageName}");
var rtpyrNm = document.getElementById("rtpyrNm--${pageName}");
if(vhrno.value == ""){
dialog.alert({
content:"수용 처리를 하기 위해선 차량번호가 입력되어야 합니다.",
init : function() { focusClose(); },
onClose:function(){vhrno.focus();}
});
return;
}
if(rtpyrNm.value == ""){
dialog.alert({
content:"수용 처리를 하기 위해선 소유주정보가 입력되어야 합니다.",
init : function() { focusClose(); },
onClose:function(){rtpyrNm.focus();}
});
return;
}
if(confirm("현재 단속 정보를 저장하시겠습니까?")){
$P.crdnControl.save($P.formFields.get(), true);
}
};
$P.fnSendBack = () => {
if(!confirm("반송 처리 하시겠습니까?")){
return;
}
var crdnId = $("#crdnId--${pageName}").val();
ajax.post({
url : $P.crdnControl.urls.remove,
data : { crdnId : crdnId },
success : resp => {
if(resp.saved){
var message = "민원회수 요청이 등록되었습니다.\n"
+"30~60분 사이에 서버에서 민원시스템으로 전송이 진행되니 이후에 민원시스템에서 확인하시기 바랍니다.";
dialog.alert({
content : message,
init : function() { focusClose(); }
});
var crdnId = $("#crdnId--${pageName}").val();
var cursorKey = "";
var nextKey = $P.provided.getNextKey(crdnId);
if(nextKey != ""){
cursorKey = nextKey;
} else {
var prevKey = $P.provided.getPrevKey(crdnId);
if(prevKey != ""){
cursorKey = prevKey;
}
}
$("#refreshEnd--${pageName}").attr("data-cursor-key", cursorKey);
$P.provided.refreshList();
}
}
});
}
/**************************************************************************
* 초기화(업무별 입력항목)
**************************************************************************/
@ -1080,69 +840,7 @@ $(document).ready(function(){
//납부자 등록, 수정
$("#btnPopPayer--${pageName}").on("click", () => $P.fnPopPayer());
//파일처리 버튼
$("#btnAddFile--${pageName}").on('click', () => { $("#inputUploadSet--${pageName}").trigger("click"); });
$("#btnOpenVideoCapture--${pageName}").on('click', () => {
var crdnId = $("#crdnId--${pageName}").val();
window.open(wctx.url("/sprt/sprt03/010/main.do?openerPageName=${pageName}&crdnId="+crdnId)
,"newVideoCapture"
,"width=1800,height=950"
);
});
$("#btnEditPhoto--${pageName}").on('click', () => {
var checked = $("#displayForExist--${pageName}").find("[name='existPhoto']:checked");
if(checked.length < 1){
alert("선택된 사진이 없습니다.");
return;
}
var fileId = checked.val();
window.open(wctx.url("/sprt/sprt03/020/main.do?openerPageName=${pageName}&fileId="+fileId)
,"editPhoto"
,"width=1400,height=750"
);
});
$("#btnDeleteExistPhoto--${pageName}").on('click', () => {
var checked = $("#displayForExist--${pageName}").find("[name='existPhoto']:checked");
if(checked.length < 1){
alert("선택된 사진이 없습니다.");
return;
}
var target = checked[0].value;
$P.existFileArr.forEach(function(item){
if(item.FILE_ID == target){
item.status = "delete";
}
});
$P.fnDisplay(true);
});
$("#btnCancelAddFile--${pageName}").on('click', () => {
var checked = $("#displayForNew--${pageName}").find("[name='newPhoto']:checked");
if(checked.length < 1){
alert("선택된 사진이 없습니다.");
return;
}
var checkedArr = [];
for(var i=0; i < checked.length; i++){
checkedArr.push(checked[i].value);
}
$P.captureFileArr = $P.captureFileArr.filter(item => checkedArr.indexOf(item.id) == -1);
$P.localUploadArr = $P.localUploadArr.filter(item => checkedArr.indexOf(item.id) == -1);
$P.numberPlateArr = $P.numberPlateArr.filter(item => checkedArr.indexOf(item.id) == -1);
$P.fnDisplay(false);
});
//차적조회
$("#vhrno--${pageName}").on("keyup",function(e){
@ -1315,21 +1013,17 @@ $(document).ready(function(){
var cs = $P.provided.getCountStatus($("#crdnId--${pageName}").val());
$("#countStauts--${pageName}").val(cs);
if(crdnInfo.videoExist == "N"){
$("#btnOpenVideoCapture--${pageName}").hide();
} else {
$("#btnOpenVideoCapture--${pageName}").show();
}
if(crdnInfo.fileList){
crdnInfo.fileList.forEach(function(item){
item.status = "";
$P.existFileArr.push(item);
});
//사진영역 설정
settingPhotoMain("${pageName}", "crdnId--${pageName}");
//사진영역 초기화
var existVideo = false;
if(crdnInfo.VIDEO_EXIST_YN == "Y"){
existVideo = true;
}
initPhotoMain("${pageName}", crdnInfo.fileList, existVideo);
$P.fnDisplay(true);
});
</script>

@ -324,9 +324,9 @@
, untilPageNum : 0 // 현재 페이지 번호
, tableRenderComplete : false // dataTables 에 자료 추가 완료 여부
, urls : {
load : wctx.url(${pageName}PrefixUrl + "/010/list.do") // 조회
, getInfo : wctx.url(${pageName}PrefixUrl + "/020/info.do") // 수정
, remove : wctx.url(${pageName}PrefixUrl + "/010/remove.do") // 삭제
load : wctx.url("/" + ${pageName}PrefixUrl + "/010/list.do") // 조회
, remove : wctx.url("/" + ${pageName}PrefixUrl + "/010/remove.do") // 삭제
, getInfo : wctx.url("/" + ${pageName}PrefixUrl + "/020/info.do") // 수정
}
, formats : {
LEVY_EXCL_YMD : dateFormat
@ -772,9 +772,9 @@
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회
${pageName}Control.urls.remove = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/010/remove.do"); // 삭제
${pageName}Control.urls.getInfo = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/020/info.do"); // 수정
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회
${pageName}Control.urls.remove = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/remove.do"); // 삭제
${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/020/info.do"); // 수정
}
/**************************************************************************

@ -99,8 +99,8 @@
, keymapper : info => info ? info.LEVY_EXCL_ID : ""
, dataGetter : obj => obj.levyExclInfo
, urls : {
create : wctx.url(${pageName}PrefixUrl + "/020/create.do") // 등록
, update : wctx.url(${pageName}PrefixUrl + "/020/update.do") // 수정
create : wctx.url("/" + ${pageName}PrefixUrl + "/020/create.do") // 등록
, update : wctx.url("/" + ${pageName}PrefixUrl + "/020/update.do") // 수정
}
});
@ -110,16 +110,16 @@
// Dataset 셋팅
${pageName}Fields.set(item);
// 호출용도가 등록
if (${pageName}CallPurpose = "create") {
$("#levyExclYmd--${pageName}").datepicker("setDate", new Date());
}
// 업무구분에 따른 url 변경
setURL${pageName}(item.data.TASK_SE_CD);
// 부과제외구분에 따른 부과제외사유 셋팅
// 부과제외구분에 따른 부과제외사유 설정
setFim021${pageName}(item.data.LEVY_EXCL_SE_CD, item.data.LEVY_EXCL_RSN_CD);
// 업무구분에 따른 url 변경
setURL${pageName}(item.data.TASK_SE_CD);
// 호출용도가 등록 이라면..
if (${pageName}CallPurpose = "create") {
$("#levyExclYmd--${pageName}").datepicker("setDate", new Date());
}
}
/**************************************************************************
@ -162,12 +162,6 @@
/**************************************************************************
* 사용자 함수
**************************************************************************/
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.create = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/020/create.do"); // 등록
${pageName}Control.urls.update = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/020/update.do"); // 수정
}
// 부과제외 구분에 따른 부과제외 사유 코드 설정
setFim021${pageName} = (seCode, rsnCode) => {
let cmnCode = FIM021[seCode];
@ -218,11 +212,8 @@
});
}
// 화면 초기 설정
initForm${pageName} = () => {
// 화면 초기화
$("#frmEdit--${pageName}")[0].reset();
// 기본 데이터 설정
initData${pageName} = () => {
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
$("#levyExclYmd--${pageName}").datepicker("setDate", new Date());
@ -241,9 +232,10 @@
}
}
// 기본 데이터 설정
initData${pageName} = () => {
//
// 업무구분에 따른 url 변경
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.create = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/020/create.do"); // 등록
${pageName}Control.urls.update = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/020/update.do"); // 수정
}
/**************************************************************************
@ -253,9 +245,6 @@
// 이벤트 설정
setEvent${pageName}();
// 화면 초기 설정
initForm${pageName}();
// 기본 데이터 설정
initData${pageName}();

@ -830,10 +830,10 @@
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url( taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회
${pageName}Control.urls.remove = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/010/remove.do"); // 삭제
${pageName}Control.urls.getInfo = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/020/info.do"); // 수정
${pageName}Control.urls.getDlbrInfo = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/030/info.do"); // 심의
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회
${pageName}Control.urls.remove = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/remove.do"); // 삭제
${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/020/info.do"); // 수정
${pageName}Control.urls.getDlbrInfo = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/030/info.do"); // 심의
}
/**************************************************************************

@ -204,10 +204,10 @@
${pageName}Fields.set(item);
// 업무구분에 따른 url 변경
${pageName}Control.urls.create = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/020/create.do");
${pageName}Control.urls.update = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/020/update.do");
setURL${pageName}(item.data.TASK_SE_CD);
fnSearchFileList${pageName}(item.data.OPNN_ID); // 첨부파일 조회
// 첨부파일 조회
fnSearchFileList${pageName}(item.data.OPNN_ID);
}
/**************************************************************************
@ -451,18 +451,12 @@
$("#btnAddFile--${pageName}").on('click', () => { $("#uploadFiles--${pageName}").trigger("click"); });
}
// 초기 기본 설정
initForm${pageName} = () => {
// 화면 초기화
$("#frmEdit--${pageName}")[0].reset();
// 기본 데이터 설정
initData${pageName} = () => {
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
$("#rcptYmd--${pageName}").datepicker("setDate", new Date());
}
// 기본 데이터 설정
setFormData${pageName} = () => {
$("#vhrno--${pageName}").prop("readonly", true); // 차량번호
$("#crdnYmdTm--${pageName}").prop("readonly", true); // 단속 일자
$("#rtpyrNm--${pageName}").prop("readonly", true); // 납부자 명
@ -484,6 +478,12 @@
}
}
// 업무구분에 따른 url 변경
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.create = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/020/create.do");
${pageName}Control.urls.update = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/020/update.do");
}
/**************************************************************************
* script 진입
**************************************************************************/
@ -491,14 +491,11 @@
// 이벤트 설정
setEvent${pageName}();
// 초기 기본 설정
initForm${pageName}();
// 기본 데이터 설정
initData${pageName}();
// Dataset 설정
${pageName}Control.setData([${opnnSbmsnInfo}]);
// 기본 데이터 설정
setFormData${pageName}();
});
</script>

@ -147,7 +147,18 @@
${pageName}Fields.set(item);
// 업무구분에 따른 url 변경
${pageName}Control.urls.update = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/030/update.do");
setURL${pageName}(item.data.TASK_SE_CD);
//
fnChangeOpnnSbmsnSttsCd(item.data.OPNN_SBMSN_STTS_CD);
// 호출용도가 등록 이라면..
if (${pageName}CallPurpose = "create") {
// 날짜
$("#ansYmd--${pageName}").datepicker("setDate", new Date());
// 시간 "09:51:35 GMT+0900 (한국 표준시)"의 형식에서 공백을 기준으로 잘라 시간 부분만 가져와줍니다.
$("#ansTm--${pageName}").val(new Date().toTimeString().split(" ")[0]);
}
}
/**************************************************************************
@ -251,37 +262,22 @@
});
}
// 화면 초기 설정
initForm${pageName} = () => {
// 화면 초기화
$("#frmEdit--${pageName}")[0].reset();
// 기본 데이터 설정
initData${pageName}();
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
$("#ansYmd--${pageName}").datepicker("setDate", new Date());
$("#ansTm--${pageName}").val(new Date().toTimeString().split(" ")[0]);
// view 로 호출됐을 경우..
if (${pageName}CallPurpose == "view") {
$("btnSave--${pageName}").attr("disabled", true);
} else {
$("btnSave--${pageName}").attr("disabled", false);
}
}
// 화면 데이터 셋팅
setFormData${pageName} = () => {
// 날짜, 시간
if ($("#ansYmd--${pageName}").val() == "") {
$("#ansYmd--${pageName}").datepicker("setDate", new Date());
}
if ($("#ansTm--${pageName}").val() == "" || $("#ansTm--${pageName}").val() == "::") {
$("#ansTm--${pageName}").val(new Date().toTimeString().split(" ")[0]); // "09:51:35 GMT+0900 (한국 표준시)"의 형식에서 공백을 기준으로 잘라 시간 부분만 가져와줍니다.
}
// 과태료 감경사유, 감경금액
fnChangeOpnnSbmsnSttsCd($("#opnnSbmsnSttsCd--${pageName}").val());
// 업무구분에 따른 url 변경
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.update = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/030/update.do");
}
/**************************************************************************
@ -291,14 +287,11 @@
// 이벤트 설정
setEvent${pageName}();
// 화면 초기 설정
initForm${pageName}();
// 기본 데이터 설정
initData${pageName}();
// Dataset 셋팅 - 단건일 경우 setData
${pageName}Control.setData([${opnnSbmsnInfo}]);
// 화면 데이터 셋팅
setFormData${pageName}();
});
</script>

@ -277,9 +277,6 @@
, appendData : true
, untilPageNum : 0 // 현재 페이지 번호
, tableRenderComplete : false // dataTables 에 자료 추가 완료 여부
, urls : {
getInfo : wctx.url("/sprt/sprt02/010/main.do") // 개별총정보
}
, formats : {
RE_REG_YMD : dateFormat
, CRDN_YMD_TM : datetimeFormat
@ -415,7 +412,7 @@
}
ajax.get({
url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
@ -610,9 +607,9 @@
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회
${pageName}Control.urls.create = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/010/create.do"); // 등록
${pageName}Control.urls.getInfo = wctx.url(taskSeCd + "/sprt/sprt02/010/main.do"); // 개별총정보
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회
${pageName}Control.urls.create = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/create.do"); // 등록
${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + "/sprt/sprt02/010/main.do"); // 개별총정보
}
/**************************************************************************

@ -0,0 +1,58 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<div class="card" style="width:550px;min-width:550px;">
<form id="frmFile--${pageName}" method="post" enctype="multipart/form-data">
<input type="file" id="newFileList--${pageName}" name="newFileList"
multiple accept="image/*" hidden />
<input type="file" id="modifyFile--${pageName}" name="modifyFile"
multiple accept="image/*" hidden />
</form>
<div class="fs-4 fw-bold d-block">등록된 사진</div>
<div class="col-md-12 d-flex justify-content-between">
<div class="my-1">
<button type="button" id="btnOpenVideoCapture--${pageName}" class="btn btn-primary">
동영상 캡쳐
</button>
<button type="button" id="btnAddFile--${pageName}" class="btn btn-primary">
사진 추가
</button>
<button type="button" id="btnEditPhoto--${pageName}" class="btn btn-primary">
선택 사진 편집
</button>
<button type="button" id="btnDeleteExistPhoto--${pageName}" class="btn btn-primary">
선택 사진 삭제
</button>
</div>
</div>
<div id="displayForExist--${pageName}"
style="border-style: solid;">
<ul id="dragAndDrop--${pageName}"
style="display:flex;flex-wrap:wrap;overflow-y: scroll;min-height: 40px;max-height: 650px;">
</ul>
</div>
<form id="frmUploadSet--${pageName}" method="post" enctype="multipart/form-data">
<input type="file" id="inputUploadSet--${pageName}" name="inputUploadSet"
multiple accept="image/*" hidden />
</form>
</div>
<template id="imgRadioTemplate--${pageName}">
<li style="display:flex">
<label class='mx-1' style="display:flex;flex-direction:row">
<input type="radio" name="{name}" class="form-check-input" value="{value}" checked="" />
<div style='position:relative;'>
<img src="{src}" width='200' height='200' style='display:absolute;'
data-crdn-photo-id="{crdnPhotoId}"
data-mosaic="{mosaic}"
onload='fn_photoMask($("#photoMask--top").is(":checked"),this);' />
</div>
</label>
</li>
</template>
<script>
LoadScript("photoMainJspScript","/resources/js/fims/photo-main.js");
</script>

@ -474,7 +474,7 @@
}
ajax.get({
url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
@ -492,7 +492,7 @@
if (!params) return;
ajax.get({
url : wctx.url(params.taskSeCd + "/excl/excl01/020/info.do?openerPageName=${pageName}")
url : wctx.url("/" + params.taskSeCd + "/excl/excl01/020/info.do?openerPageName=${pageName}")
, data : params || {}
, success : resp => {
dialog.open({
@ -722,8 +722,8 @@
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회
${pageName}Control.urls.getInfo = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/020/info.do"); // 발송대상 정보
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회
${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/020/info.do"); // 발송대상 정보
}
/**************************************************************************

@ -282,7 +282,7 @@
}
ajax.get({
url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
@ -366,7 +366,7 @@
// 업무구분에 따른 url 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.create = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/020/createList.do"); // 등록
${pageName}Control.urls.create = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/020/createList.do"); // 등록
}
/**************************************************************************

@ -282,7 +282,7 @@
, data : params
, success : resp => {
dialog.open({
id : "wrngSndngDtlDialog"
id : ${pageName}Control.prefixed("DtlDialog")
, title : "계고장 발송 상세 정보"
, content : resp
, size : ${pageName}Control.infoSize
@ -390,7 +390,7 @@
}
ajax.get({
url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
@ -535,8 +535,8 @@
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/030/list.do"); // 조회
${pageName}Control.urls.getInfo = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/040/info.do"); // 계고장 발송 정보
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/030/list.do"); // 조회
${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/040/info.do"); // 계고장 발송 정보
}
/**************************************************************************

@ -131,7 +131,7 @@
**************************************************************************/
var ${pageName}Control = new DatasetControl({
prefix : "wrngSndngDtl"
, prefixName : "계고장 발송 상세"
, prefixName : "계고장 발송 상세 정보"
, keymapper : info => info ? info.SNDNG_DTL_ID : ""
, dataGetter : obj => obj.wrngSndngDtlList
, appendData : true
@ -230,7 +230,7 @@
}
ajax.get({
url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
@ -359,7 +359,7 @@
// 업무구분에 따른 url 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/040/list.do"); // 조회
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/040/list.do"); // 조회
}
/**************************************************************************

@ -456,7 +456,7 @@
}
ajax.get({
url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
@ -661,8 +661,8 @@
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/050/list.do"); // 조회
${pageName}Control.urls.getInfo = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/060/info.do"); // 발송대상 정보
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/050/list.do"); // 조회
${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/060/info.do"); // 발송대상 정보
}
/**************************************************************************

@ -282,7 +282,7 @@
}
ajax.get({
url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
@ -364,7 +364,7 @@
// 업무구분에 따른 url 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.create = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/060/createList.do"); // 등록
${pageName}Control.urls.create = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/060/createList.do"); // 등록
}
/**************************************************************************

@ -283,7 +283,7 @@
, data : params
, success : resp => {
dialog.open({
id : "advntceSndngDtlDialog"
id : ${pageName}Control.prefixed("DtlDialog")
, title : "사전통지 발송 상세 정보"
, content : resp
, size : ${pageName}Control.infoSize
@ -388,7 +388,7 @@
}
ajax.get({
url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
@ -532,8 +532,8 @@
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/070/list.do"); // 조회
${pageName}Control.urls.getInfo = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/080/info.do"); // 사전통지 세부내용
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/070/list.do"); // 조회
${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/080/info.do"); // 사전통지 세부내용
}
/**************************************************************************

@ -176,6 +176,7 @@
, FFNLG_AMT : numberFormat
, PCPTAX : numberFormat
, ADAMT : numberFormat
, SUM_AMT : numberFormat
, REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
}
@ -264,7 +265,7 @@
}
ajax.get({
url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
@ -282,7 +283,7 @@
if (!params) return;
ajax.post({
url : wctx.url(params.taskSeCd + "/nxrp/nxrp01/010/createNxrpLink.do")
url : wctx.url("/" + params.taskSeCd + "/nxrp/nxrp01/010/createNxrpLink.do")
, data : params || {}
, success : resp => {
// S 또는 F 를 버튼 title 로 변경하여 메시지 출력
@ -316,7 +317,7 @@
createSndngLink${pageName} = (obj) => {
let btnTitle = $("#btnCreateSndngLink--${pageName}").attr("title");
let info = {
let params = {
sndngId : ${pageName}Control.dataset.getValue("SNDNG_ID") // 발송 ID
, sggCd : $("#sggCd--${pageName}").val() // 시군구 코드
, taskSeCd : $("#taskSeCd--${pageName}").val() // 업무 구분 코드
@ -327,8 +328,8 @@
};
ajax.post({
url : wctx.url(info.taskSeCd + ${pageName}PrefixUrl + "/080/createSndngLink.do")
, data : info || {}
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/080/createSndngLink.do")
, data : params || {}
, success : resp => {
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, btnTitle);
dialog.alert(showMessage);
@ -352,7 +353,7 @@
if (!params) return;
ajax.post({
url : wctx.url(params.taskSeCd + ${pageName}PrefixUrl + "/080/createSndbkList.do")
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/080/createSndbkList.do")
, data : params || {}
, success : resp => {
// S 또는 F 를 버튼 title 로 변경하여 메시지 출력
@ -532,17 +533,8 @@
});
}
// 화면 초기 설정
initForm${pageName} = () => {
// 화면 초기화
$("#frmEdit--${pageName}")[0].reset();
// dataset 초기화
${pageName}Control.dataset.clear();
}
// 기본 데이터 설정
setFormData${pageName} = () => {
initData${pageName} = () => {
let sggCd = ${pageName}Query.sggCd;
let taskSeCd = ${pageName}Query.taskSeCd;
@ -559,7 +551,7 @@
// 업무구분에 따른 url 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/080/list.do"); // 조회
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/080/list.do"); // 조회
}
/**************************************************************************
@ -569,11 +561,8 @@
// 이벤트 설정
setEvent${pageName}();
// 화면 초기화
initForm${pageName}();
// 기본 데이터 설정
setFormData${pageName}();
initData${pageName}();
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));

@ -363,7 +363,7 @@
}
ajax.get({
url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
@ -538,8 +538,8 @@
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/090/list.do"); // 조회
${pageName}Control.urls.getInfo = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/100/info.do"); // 고지서 세부 내용
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/090/list.do"); // 조회
${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/100/info.do"); // 고지서 세부 내용
}
/**************************************************************************

@ -259,7 +259,7 @@
}
ajax.get({
url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
@ -277,7 +277,7 @@
if (!params) return;
ajax.post({
url : wctx.url(params.taskSeCd + ${pageName}PrefixUrl + "/080/createSndbkList.do")
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/080/createSndbkList.do")
, data : params || {}
, success : resp => {
// S 또는 F 를 버튼 title 로 변경하여 메시지 출력
@ -400,7 +400,7 @@
// 업무구분에 따른 url 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/100/list.do"); // 조회
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/100/list.do"); // 조회
}
/**************************************************************************

@ -359,7 +359,7 @@
if (selected.length < 1) return;
let info = {
let params = {
crdnIDs = selected.join(","); // 단속 IDs
, sggCd : $("#sggCd--${pageName}").val() // 시군구 코드
, taskSeCd : $("#taskSeCd--${pageName}").val() // 업무 구분 코드
@ -368,8 +368,8 @@
};
// ajax.post({
// url : wctx.url("/" + info.taskSeCd + ${pageName}PrefixUrl + "/080/createSndngLink.do")
// , data : info || {}
// url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/080/createSndngLink.do")
// , data : params || {}
// , success : resp => {
// let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, btnTitle);
// dialog.alert(showMessage);

@ -85,14 +85,13 @@
// Dataset 셋팅
${pageName}Fields.set(item);
// 업무구분에 따른 url 변경
setURL${pageName}(item.data.TASK_SE_CD);
// 배달일자
if ($("#dlvrYmd--${pageName}").val() == "") {
$("#dlvrYmd--${pageName}").datepicker("setDate", new Date());
}
// 업무구분에 따른 url 변경
${pageName}Control.urls.create = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/220/create.do");
${pageName}Control.urls.update = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/220/update.do");
}
/**************************************************************************
@ -196,6 +195,12 @@
}
}
// 업무구분에 따른 url 변경
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.create = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/220/create.do");
${pageName}Control.urls.update = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/220/update.do");
}
/**************************************************************************
* script 진입
**************************************************************************/

@ -437,7 +437,7 @@
}
ajax.get({
url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
@ -467,7 +467,7 @@
}
ajax.get({
url : wctx.url(params.taskSeCd + ${pageName}PrefixUrl + "/260/info.do") // 등록
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/260/info.do") // 등록
, data : params || {}
, success : resp => {
dialog.open({
@ -704,7 +704,7 @@
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/230/list.do"); // 조회
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/230/list.do"); // 조회
}
/**************************************************************************

@ -310,8 +310,8 @@
, data : params
, success : resp => {
dialog.open({
id : ${pageName}Control.prefixed("Dialog")
, title : "공시송달 세부 내용"
id : ${pageName}Control.prefixed("DtlDialog")
, title : "공시송달 상세 정보"
, content : resp
, size : ${pageName}Control.infoSize
});
@ -422,7 +422,7 @@
}
ajax.get({
url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do")
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
@ -452,7 +452,7 @@
}
ajax.get({
url : wctx.url(params.taskSeCd + ${pageName}PrefixUrl + "/260/info.do") // 수정
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/260/info.do") // 수정
, data : params || {}
, success : resp => {
dialog.open({
@ -672,9 +672,9 @@
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/240/list.do"); // 조회
${pageName}Control.urls.remove = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/240/remove.do"); // 삭제
${pageName}Control.urls.getInfo = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/250/info.do"); // 공시송달 세부내용
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/240/list.do"); // 조회
${pageName}Control.urls.remove = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/240/remove.do"); // 삭제
${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/250/info.do"); // 공시송달 세부내용
}
/**************************************************************************

@ -5,7 +5,7 @@
<div class="content-wrapper">
<!-- Content -->
<div class="container flex-grow-1 px-0">
<c:set var="prefixName" scope="request">공시송달 정보</c:set>
<c:set var="prefixName" scope="request">공시송달 상세</c:set>
<!-- Page Body -->
<div class="card">
@ -20,6 +20,12 @@
<!-- 업무 버튼 및 건수 표시 -->
<div>
<span class="container-page-btn">
<!-- 건수, 페이지 표시 -->
<div class="d-flex flex-row justify-content-between">
<label class="dataTables_info" id="paging--${pageName}PagingInfo" role="status" aria-live="polite"></label>
<ul class="pagination pagination-primary" id="paging--${pageName}">
</ul>
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀" onclick="fnExcel${pageName}();">
@ -28,13 +34,12 @@
<button type="button" class="btn btn-primary w-px-120" id="btnHwpPrint--${pageName}" title="한글파일 출력" onclick="fnHwpPrint${pageName}();">
한글파일 출력
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnSvbtcRemove--${pageName}" title="공시송달 삭제" onclick="fnSvbtcRemove${pageName}();">
<button type="button" class="btn btn-primary w-px-120" id="btnRemove--${pageName}" title="공시송달 삭제" onclick="fnRemove${pageName}();">
공시송달 삭제
</button>
</span>
</span>
</div>
<!-- / 업무 버튼 및 건수 표시 -->
</div> <!-- / 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
@ -44,19 +49,21 @@
<thead class="sticky-thead">
<tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th class="cmn" style="width: 56px;">
<input type="checkbox" class="form-check-input" onchange="${pageName}Control.select(this.checked);">
</th>
<th class="cmn" style="width: 56px;"><input type="checkbox" class="form-check-input" onchange="${pageName}Control.select(this.checked);"></th>
<th class="cmn" style="width: 120px;">발송상태</th>
<th class="cmn" style="width: 120px;">공시송달일자</th>
<th class="cmn" style="width: 160px;">등기번호</th>
<th class="cmn" style="width: 120px;">발송일자</th>
<th class="cmn" style="width: 120px;">발송종료일자</th>
<th class="cmn" style="width: 200px;">납부자명</th>
<th class="cmn" style="width: 160px;">납부자번호</th>
<th class="cmn" style="width: 200px;">성명</th>
<th class="cmn" style="width: 100px;">우편번호</th>
<th class="cmn" style="width: 280px;">주소</th>
<th class="cmn" style="width: 320px;">상세주소</th>
<th class="cmn" style="width: 120px;">배달일자</th>
<th class="cmn" style="width: 120px;">배달시각</th>
<th class="cmn" style="width: 200px;">미배달사유</th>
<th class="cmn" style="width: 200px;">수령인</th>
<th class="cmn" style="width: 200px;">수령인관계</th>
<th class="cmn" style="width: 180px;">단속일시</th>
<th class="cmn" style="width: 140px;">차량번호</th>
<th class="cmn" style="width: 160px;">법정동</th>
@ -66,6 +73,8 @@
<th class="cmn" style="width: 120px;">부과일자</th>
<th class="cmn" style="width: 120px;">납기일자</th>
<th class="cmn" style="width: 120px;">과태료금액</th>
<th class="cmn" style="width: 120px;">본세</th>
<th class="cmn" style="width: 120px;">가산금</th>
<th class="cmn" style="width: 120px;">합계금액</th>
<th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th>
@ -78,19 +87,21 @@
</tbody>
<template id="${infoPrefix}Row--${pageName}">
<tr data-key="{SNDNG_DTL_ID}">
<td class="cmn text-center">
<input type="checkbox" class="form-check-input" value="{SNDNG_DTL_ID}" onchange="${pageName}Control.select('{SNDNG_DTL_ID}', this.checked);">
</td>
<td class="cmn text-center"><input type="checkbox" class="form-check-input" value="{SNDNG_DTL_ID}" onchange="${pageName}Control.select('{SNDNG_DTL_ID}', this.checked);"></td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_DTL_STTS_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SVBTC_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RG_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_END_YMD}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_ZIP}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_DTL_ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_ZIP}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_DTL_ADDR}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{UNDLVR_RSN_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ACTL_RCPN_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_REL_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_DT}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td>
@ -100,6 +111,8 @@
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DUDT_YMD}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{PCPTAX}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{ADAMT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{SUM_AMT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td>
@ -110,14 +123,14 @@
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="26" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="32" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
</div>
</div>
</div>
<!-- / DataTables(그리드) -->
</div> <!-- / DataTables(그리드) -->
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> -->
</div> <!-- / Content <div class="container flex-grow-1 px-0"> -->
@ -132,24 +145,29 @@
var ${pageName}PrefixUrl = "/sndb/sndb01";
// FormFields
var ${pageName}Fields = new FimsFormFields("#frmEdit--${pageName}");
// main 의 검색 조건을 그대로 유지
var ${pageName}Query = ${query};
/**************************************************************************
* DatasetControl
**************************************************************************/
var ${pageName}Control = new DatasetControl({
prefix : "svbtcDtl"
, prefixName : "공시송달 상세"
, prefixName : "공시송달 상세 정보"
, keymapper : info => info ? info.SNDNG_DTL_ID : ""
, dataGetter : obj => obj.svbtcDtlList
, appendData : true
, untilPageNum : 0 // 현재 페이지 번호
, tableRenderComplete : false // dataTables 에 자료 추가 완료 여부
, formats : {
SVBTC_YMD : dateFormat
, SNDNG_YMD : dateFormat
, SNDNG_END_YMD : dateFormat
, DLVR_YMD : dateFormat
, LEVY_YMD : dateFormat
, DUDT_YMD : dateFormat
, FFNLG_AMT : numberFormat
, PCPTAX : numberFormat
, ADAMT : numberFormat
, SUM_AMT : numberFormat
, REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
@ -161,7 +179,16 @@
**************************************************************************/
// Dataset 변경 이벤트
${pageName}Control.onDatasetChange = obj => {
renderList${pageName}();
renderList${pageName}(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({
list : ${pageName}Control.dataset
, prefix : "paging--${pageName}"
, start : obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch
, func : "${pageName}Control.load({index})"
});
${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
};
@ -173,8 +200,6 @@
let key = item.data.SNDNG_DTL_ID;
$("#tbody--${pageName}").setCurrentRow(key);
${pageName}Control.urls.getInfo = wctx.url("/" + item.data.TASK_SE_CD + "/sprt/sprt02/010/main.do"); // 개별총정보
};
// 선택(체크) 변경 이벤트
@ -188,33 +213,9 @@
checkbox.prop("checked", keys.includes(checkbox.val()));
});
$("#btnSvbtcRemove--${pageName}").prop("disabled", keys.length < 1);
$("#btnRemove--${pageName}").prop("disabled", keys.length < 1);
};
// 개별총정보 dialog
${pageName}Control.getInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "${pageName}Control"
, callPurpose : "view"
, crdnId : crdnId
}
ajax.get({
url : ${pageName}Control.urls.getInfo
, data : params
, success : resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
});
}
});
}
// 삭제 callback
${pageName}Control.onRemove = (selected, resp) => {
let taskSeCd = $("#taskSeCd--${pageName}").val();
@ -257,10 +258,10 @@
}
/**************************************************************************
*
* DataTables 이벤트
**************************************************************************/
// DataTables에 click, dbclick 이벤트
renderList${pageName} = () => {
renderList${pageName} = (totalSize) => {
let ${infoPrefix}List = ${pageName}Control.dataset;
let empty = ${infoPrefix}List.empty;
@ -270,16 +271,105 @@
document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%>
(str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("SNDNG_DTL_ID") + "');")
.replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("CRDN_ID") + "');")
.replace(/{ondblclick}/gi, "getTotalInfo${pageName}('" + dataItem.getValue("CRDN_ID") + "');")
);
$("#tbody--${pageName}").html(trs.join());
$("th input[type='checkbox']").prop("checked", false);
let noMore = (totalSize == ${infoPrefix}List.length);
let initScroll = (${pageName}Control.query.pageNum < 2) && (${pageName}Control.untilPageNum == 0);
$("#table-responsive--${pageName}")[0].changeContent(trs.join(), initScroll, noMore);
if (${pageName}Control.untilPageNum != 0) {
${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize;
${pageName}Control.query.pageNum = ${pageName}Control.untilPageNum;
${pageName}Control.untilPageNum = 0;
}
//보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
}
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
scrollDataList${pageName} = () => {
${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 false
${pageName}Control.load(${pageName}Control.query.pageNum + 1);
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
// 개별총정보 dialog
getTotalInfo${pageName} = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "${pageName}Control"
, callPurpose : "view"
, sggCd : $("#sggCd--${pageName}").val()
, taskSeCd : $("#taskSeCd--${pageName}").val()
, crdnId : crdnId
}
ajax.get({
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do")
, data : params
, success : resp => {
dialog.open({
id : "totalInfoMainDialog"
, title : "개별총정보"
, content : resp
, size : "xxl"
});
}
});
}
// 검색 자료 재조회
refreshList${pageName} = () => {
${pageName}Control.untilPageNum = ${pageName}Control.query.pageNum;
${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize * ${pageName}Control.query.pageNum;
${pageName}Control.load(1);
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 엑셀 버튼 이벤트
fnExcel${pageName} = () => {
if (${pageName}Control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
});
return;
}
// DataTables(그리드)
let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td"));
${pageName}Control.query.cellDefs = cellDefs;
${pageName}Control.download();
}
// 한글파일 출력 버튼 이벤트
fnHwpPrint${pageName} = () => {
}
// 공시송달 삭제 버튼 이벤트
fnRemove${pageName} = () => {
dialog.alert({
content : "공시송달 내역에서 선택한 정보를 삭제하시겠습니까?"
, onOK : () => {
${pageName}Control.remove();
}
});
}
/**************************************************************************
* 초기 셋팅
**************************************************************************/
@ -300,50 +390,55 @@
// DataTables width 변경 조정
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
}
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.remove = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/250/remove.do"); // 삭제
${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + "/sprt/sprt02/010/main.do"); // 개별총정보
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 엑셀 버튼 이벤트
fnExcel${pageName} = () => {
// DataTables 스크롤 이벤트 생성
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], scrollDataList${pageName});
// DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다.
$("#${infoPrefix}Dialog").on("shown.bs.modal", function (e) {
${pageName}Control.setData({
${infoPrefix}List : ${svbtcDtlList}
, ${infoPrefix}Start : ${svbtcDtlStart}
, ${infoPrefix}Fetch : ${svbtcDtlFetch}
, ${infoPrefix}Total : ${svbtcDtlTotal}
});
});
}
// 공시송달 삭제 버튼 이벤트
fnSvbtcRemove${pageName} = () => {
dialog.alert({
content : "공시송달 내역에서 선택한 정보를 삭제하시겠습니까?"
, onOK : () => {
${pageName}Control.remove();
// 기본 데이터 설정
initData${pageName} = () => {
let sggCd = ${pageName}Query.sggCd;
let taskSeCd = ${pageName}Query.taskSeCd;
$("#sggCd--${pageName}").val(sggCd); // 시군구 코드
$("#taskSeCd--${pageName}").val(taskSeCd); // 업무 구분 코드
// 검색 조건 설정
${pageName}Control.defaultFetchSize = ${pageName}Query.fetchSize;
${pageName}Control.query = ${pageName}Query;
// URL 설정
setURL${pageName}(taskSeCd);
}
});
// 업무구분에 따른 url 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/250/list.do"); // 조회
${pageName}Control.urls.remove = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/250/remove.do"); // 삭제
}
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// 기본 데이터
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
$("#taskSeCd--${pageName}").val("${taskSeCd}"); // 업무 구분 코드
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 이벤트 설정
setEvent${pageName}();
// URL 설정
setURL${pageName}("${taskSeCd}");
// 기본 데이터 설정
initData${pageName}();
// Dataset 셋팅 - 화면이 열리면서 조회하는 경우 addData 하여 자료를 추가
${pageName}Control.addData(${svbtcDtl});
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
});
</script>

@ -143,12 +143,13 @@ $(document).ready(function(){
data : submitParam,
success : (resp) => {
if(resp.filePath != null && resp.filePath != ""){
var a = document.createElement("a");
a.href = resp.filePath;
a.download = resp.fileName;
document.getElementById("tempArea--${pageName}").appendChild(a);
a.click();
document.getElementById("tempArea--${pageName}").removeChild(a);
if(fileType == "pdf"){
openPDF(resp.filePath, resp.fileName, resp.fileName);
} else {
downloadFile(resp.filePath, resp.fileName, "tempArea--${pageName}");
}
}
}
});

@ -141,12 +141,13 @@ $(document).ready(function(){
data : submitParam,
success : (resp) => {
if(resp.filePath != null && resp.filePath != ""){
var a = document.createElement("a");
a.href = resp.filePath;
a.download = resp.fileName;
document.getElementById("tempArea--${pageName}").appendChild(a);
a.click();
document.getElementById("tempArea--${pageName}").removeChild(a);
if(fileType == "pdf"){
openPDF(resp.filePath, resp.fileName, resp.fileName);
} else {
downloadFile(resp.filePath, resp.fileName, "tempArea--${pageName}");
}
}
}
});

@ -764,15 +764,7 @@ $(document).ready(function(){
data : submitParam,
success : (resp) => {
if(resp.filePath != null && resp.filePath != ""){
var samplePath = resp.filePath;
samplePath = samplePath.replaceAll("\\","%5c");
window.open(
wctx.url("/resources/html/pdf.html"+"?"+"path="+samplePath)
,"pdf_sample"
,'top=10, left=10'
);
openPDF(resp.filePath, resp.fileName, "pdf_sample");
}
}
});

@ -1017,8 +1017,6 @@
// 화면 호출(callPurpose)이 view 라면 버튼 비활성화
if (${pageNameMain}CallPurpose == "view") {
// button 요소들을 disabled = true
$("#btnViewCvlcptOrgnl--${pageName}").prop("disabled", true);
$("#btnViewAnswerPreview--${pageName}").prop("disabled", true);
$("#btnUpdateCrdn--${pageName}").prop("disabled", true);
$("#btnRemoveCrdn--${pageName}").prop("disabled", true);
$("#btnCreateCrdnReReg--${pageName}").prop("disabled", true);
@ -1028,19 +1026,6 @@
$("#btnEditPhoto--${pageName}").prop("disabled", true);
$("#btnAddFile--${pageName}").prop("disabled", true);
$("#btnDeleteFile--${pageName}").prop("disabled", true);
} else {
// button 요소들을 disabled = false
$("#btnViewCvlcptOrgnl--${pageName}").prop("disabled", false);
$("#btnViewAnswerPreview--${pageName}").prop("disabled", false);
$("#btnUpdateCrdn--${pageName}").prop("disabled", false);
$("#btnRemoveCrdn--${pageName}").prop("disabled", false);
$("#btnCreateCrdnReReg--${pageName}").prop("disabled", false);
$("#btnPrintNotice--${pageName}").prop("disabled", false);
$("#btnUpdateCrdnSttsCd--${pageName}").prop("disabled", false);
$("#btnUpdatePayer--${pageName}").prop("disabled", false);
$("#btnEditPhoto--${pageName}").prop("disabled", false);
$("#btnAddFile--${pageName}").prop("disabled", false);
$("#btnDeleteFile--${pageName}").prop("disabled", false);
}
}

@ -539,15 +539,7 @@
$("#btnCreateOpnnSbmsn--${pageName}").prop("disabled", true);
$("#btnUpdateOpnnSbmsn--${pageName}").prop("disabled", true);
$("#btnRemoveOpnnSbmsn--${pageName}").prop("disabled", true);
$("#btnPrintDlbrtLtfr--${pageName}").prop("disabled", true);
$("#btnUpdateOpnnSbmsnDlbrt--${pageName}").prop("disabled", true);
} else {
// button 요소들을 disabled = false
$("#btnCreateOpnnSbmsn--${pageName}").prop("disabled", false);
$("#btnUpdateOpnnSbmsn--${pageName}").prop("disabled", false);
$("#btnRemoveOpnnSbmsn--${pageName}").prop("disabled", false);
$("#btnPrintDlbrtLtfr--${pageName}").prop("disabled", false);
$("#btnUpdateOpnnSbmsnDlbrt--${pageName}").prop("disabled", false);
}
}

@ -259,28 +259,26 @@
// 가상계좌번호
let vrActno = "";
if (item.data.BANK_NM != null && item.data.BANK_NM != "") vrActno += item.data.BANK_NM + " " ; // 은행 명
if (item.data.VR_ACTNO != null && item.data.VR_ACTNO != "") vrActno += item.data.VR_ACTNO + "\n"; // 가상 계좌번호
if (item.data.BANK_NM2 != null && item.data.BANK_NM2 != "") vrActno += item.data.BANK_NM2 + " " ; // 은행 명2
if (item.data.VR_ACTNO2 != null && item.data.VR_ACTNO2 != "") vrActno += item.data.VR_ACTNO2 + "\n"; // 가상 계좌번호2
if (item.data.BANK_NM3 != null && item.data.BANK_NM3 != "") vrActno += item.data.BANK_NM3 + " " ; // 은행 명3
if (item.data.VR_ACTNO3 != null && item.data.VR_ACTNO3 != "") vrActno += item.data.VR_ACTNO3 + "\n"; // 가상 계좌번호3
if (item.data.BANK_NM4 != null && item.data.BANK_NM4 != "") vrActno += item.data.BANK_NM4 + " " ; // 은행 명4
if (item.data.VR_ACTNO4 != null && item.data.VR_ACTNO4 != "") vrActno += item.data.VR_ACTNO4 + "\n"; // 가상 계좌번호4
if (item.data.BANK_NM5 != null && item.data.BANK_NM5 != "") vrActno += item.data.BANK_NM5 + " " ; // 은행 명5
if (item.data.VR_ACTNO5 != null && item.data.VR_ACTNO5 != "") vrActno += item.data.VR_ACTNO5 + "\n"; // 가상 계좌번호5
if (item.data.BANK_NM6 != null && item.data.BANK_NM6 != "") vrActno += item.data.BANK_NM6 + " " ; // 은행 명6
if (item.data.VR_ACTNO6 != null && item.data.VR_ACTNO6 != "") vrActno += item.data.VR_ACTNO6 + "\n"; // 가상 계좌번호6
if (item.data.BANK_NM7 != null && item.data.BANK_NM7 != "") vrActno += item.data.BANK_NM7 + " " ; // 은행 명7
if (item.data.VR_ACTNO7 != null && item.data.VR_ACTNO7 != "") vrActno += item.data.VR_ACTNO7 + "\n"; // 가상 계좌번호7
if (item.data.BANK_NM8 != null && item.data.BANK_NM8 != "") vrActno += item.data.BANK_NM8 + " " ; // 은행 명8
if (item.data.VR_ACTNO8 != null && item.data.VR_ACTNO8 != "") vrActno += item.data.VR_ACTNO8 + "\n"; // 가상 계좌번호8
if (item.data.BANK_NM9 != null && item.data.BANK_NM9 != "") vrActno += item.data.BANK_NM9 + " " ; // 은행 명9
if (item.data.VR_ACTNO9 != null && item.data.VR_ACTNO9 != "") vrActno += item.data.VR_ACTNO9 + "\n"; // 가상 계좌번호9
if (item.data.BANK_NM10 != null && item.data.BANK_NM10 != "") vrActno += item.data.BANK_NM10 + " " ; // 은행 명10
if (item.data.VR_ACTNO10 != null && item.data.VR_ACTNO10 != "") vrActno += item.data.VR_ACTNO10 + "\n"; // 가상 계좌번호10
if (item.data.BANK_NM11 != null && item.data.BANK_NM11 != "") vrActno += item.data.BANK_NM11 + " " ; // 은행 명11
if (item.data.VR_ACTNO11 != null && item.data.VR_ACTNO11 != "") vrActno += item.data.VR_ACTNO11 + "\n"; // 가상 계좌번호11
if (item.data.BANK_NM != null && item.data.BANK_NM != "") vrActno += item.data.BANK_NM + " " + item.data.VR_ACTNO + "\n"; // 가상 계좌번호
if (item.data.BANK_NM2 != null && item.data.BANK_NM2 != "") vrActno += item.data.BANK_NM2 + " " + item.data.VR_ACTNO2 + "\n"; // 가상 계좌번호2
if (item.data.BANK_NM3 != null && item.data.BANK_NM3 != "") vrActno += item.data.BANK_NM3 + " " + item.data.VR_ACTNO3 + "\n"; // 가상 계좌번호3
if (item.data.BANK_NM4 != null && item.data.BANK_NM4 != "") vrActno += item.data.BANK_NM4 + " " + item.data.VR_ACTNO4 + "\n"; // 가상 계좌번호4
if (item.data.BANK_NM5 != null && item.data.BANK_NM5 != "") vrActno += item.data.BANK_NM5 + " " + item.data.VR_ACTNO5 + "\n"; // 가상 계좌번호5
if (item.data.BANK_NM6 != null && item.data.BANK_NM6 != "") vrActno += item.data.BANK_NM6 + " " + item.data.VR_ACTNO6 + "\n"; // 가상 계좌번호6
if (item.data.BANK_NM7 != null && item.data.BANK_NM7 != "") vrActno += item.data.BANK_NM7 + " " + item.data.VR_ACTNO7 + "\n"; // 가상 계좌번호7
if (item.data.BANK_NM8 != null && item.data.BANK_NM8 != "") vrActno += item.data.BANK_NM8 + " " + item.data.VR_ACTNO8 + "\n"; // 가상 계좌번호8
if (item.data.BANK_NM9 != null && item.data.BANK_NM9 != "") vrActno += item.data.BANK_NM9 + " " + item.data.VR_ACTNO9 + "\n"; // 가상 계좌번호9
if (item.data.BANK_NM10 != null && item.data.BANK_NM10 != "") vrActno += item.data.BANK_NM10 + " " + item.data.VR_ACTNO10 + "\n"; // 가상 계좌번호10
if (item.data.BANK_NM11 != null && item.data.BANK_NM11 != "") vrActno += item.data.BANK_NM11 + " " + item.data.VR_ACTNO11 + "\n"; // 가상 계좌번호11
if (item.data.BANK_NM12 != null && item.data.BANK_NM12 != "") vrActno += item.data.BANK_NM12 + " " + item.data.VR_ACTNO12 + "\n"; // 가상 계좌번호12
if (item.data.BANK_NM13 != null && item.data.BANK_NM13 != "") vrActno += item.data.BANK_NM13 + " " + item.data.VR_ACTNO13 + "\n"; // 가상 계좌번호13
if (item.data.BANK_NM14 != null && item.data.BANK_NM14 != "") vrActno += item.data.BANK_NM14 + " " + item.data.VR_ACTNO14 + "\n"; // 가상 계좌번호14
if (item.data.BANK_NM15 != null && item.data.BANK_NM15 != "") vrActno += item.data.BANK_NM15 + " " + item.data.VR_ACTNO15 + "\n"; // 가상 계좌번호15
if (item.data.BANK_NM16 != null && item.data.BANK_NM16 != "") vrActno += item.data.BANK_NM16 + " " + item.data.VR_ACTNO16 + "\n"; // 가상 계좌번호16
if (item.data.BANK_NM17 != null && item.data.BANK_NM17 != "") vrActno += item.data.BANK_NM17 + " " + item.data.VR_ACTNO17 + "\n"; // 가상 계좌번호17
if (item.data.BANK_NM18 != null && item.data.BANK_NM18 != "") vrActno += item.data.BANK_NM18 + " " + item.data.VR_ACTNO18 + "\n"; // 가상 계좌번호18
if (item.data.BANK_NM19 != null && item.data.BANK_NM19 != "") vrActno += item.data.BANK_NM19 + " " + item.data.VR_ACTNO19 + "\n"; // 가상 계좌번호19
if (item.data.BANK_NM20 != null && item.data.BANK_NM20 != "") vrActno += item.data.BANK_NM20 + " " + item.data.VR_ACTNO20 + "\n"; // 가상 계좌번호20
$("#vrActno--${pageName}").val(vrActno); // 가상 계좌번호
$("#epayno--${pageName}").val(item.data.EPAYNO_MASK); // 전자납부번호
@ -301,7 +299,7 @@
}
ajax.get({
url : wctx.url(params.taskSeCd + "/sndb/sndb01/220/info.do")
url : wctx.url("/" + params.taskSeCd + "/sndb/sndb01/220/info.do")
, data : params || {}
, success : resp => {
dialog.open({
@ -334,7 +332,7 @@
params.sndngDtlSttsCd = "03"; // 발송 상세 상태 코드(SNDNG_DTL_STTS_CD) FIM050 - 03 발송
ajax.post({
url : wctx.url(params.taskSeCd + "/sndb/sndb01/210/delete.do")
url : wctx.url("/" + params.taskSeCd + "/sndb/sndb01/210/delete.do")
, data : params
, success : resp => ${pageName}Control.onRemove(resp)
});
@ -394,7 +392,7 @@
};
ajax.get({
url : wctx.url(params.taskSeCd + "/sprt/sprt02/040/info.do")
url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/040/info.do")
, headers: { Accept: "application/json; charset=utf-8" } // json
, data : params || {}
, success : resp => {
@ -531,11 +529,15 @@
});
}
// 우편 종적 보기 참고 https://www.data.go.kr/dataset/15000390/openapi.do
// 우편 종적 보기
fnViewPostTrace${pageName} = () => {
// 등기번호
let rgNo = ${pageName}Control.dataset.getValue("RG_NO");
alert("우편 종적 보기");
// 등기번호가 없다면..
if (typeof rgNo == "undefined" || rgNo == null || rgNo == "") return;
window.open("http://service.epost.go.kr/trace.RetrieveRegiPrclDeliv.postal?sid1=" + rgNo, "_blank", "");
}
/**************************************************************************
@ -561,12 +563,6 @@
$("#btnCreateSndbk--${pageName}").prop("disabled", true);
$("#btnUpdateSndbk--${pageName}").prop("disabled", true);
$("#btnRemoveSndbk--${pageName}").prop("disabled", true);
$("#btnViewPostTrace--${pageName}").prop("disabled", true);
} else {
$("#btnCreateSndbk--${pageName}").prop("disabled", false);
$("#btnUpdateSndbk--${pageName}").prop("disabled", false);
$("#btnRemoveSndbk--${pageName}").prop("disabled", false);
$("#btnViewPostTrace--${pageName}").prop("disabled", false);
}
}

@ -203,7 +203,7 @@
<label for="vrActno--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">가상계좌번호</label>
</div>
<div class="col-md-12">
<textarea type="text" class="form-control w-100" id="vrActno--${pageName}" name="vrActno" data-map="VR_ACTNO" rows="13"></textarea>
<textarea type="text" class="form-control w-100" id="vrActno--${pageName}" name="vrActno" data-map="VR_ACTNO" rows="15"></textarea>
</div>
</div>
</div> <!-- <div class="card"> -->
@ -301,17 +301,26 @@
// 가상계좌번호
let vrActno = "";
if (item.data.BANK_NM != null) vrActno += item.data.BANK_NM + " " + item.data.VR_ACTNO + "\n"; // 가상 계좌번호
if (item.data.BANK_NM2 != null) vrActno += item.data.BANK_NM2 + " " + item.data.VR_ACTNO2 + "\n"; // 가상 계좌번호2
if (item.data.BANK_NM3 != null) vrActno += item.data.BANK_NM3 + " " + item.data.VR_ACTNO3 + "\n"; // 가상 계좌번호3
if (item.data.BANK_NM4 != null) vrActno += item.data.BANK_NM4 + " " + item.data.VR_ACTNO4 + "\n"; // 가상 계좌번호4
if (item.data.BANK_NM5 != null) vrActno += item.data.BANK_NM5 + " " + item.data.VR_ACTNO5 + "\n"; // 가상 계좌번호5
if (item.data.BANK_NM6 != null) vrActno += item.data.BANK_NM6 + " " + item.data.VR_ACTNO6 + "\n"; // 가상 계좌번호6
if (item.data.BANK_NM7 != null) vrActno += item.data.BANK_NM7 + " " + item.data.VR_ACTNO7 + "\n"; // 가상 계좌번호7
if (item.data.BANK_NM8 != null) vrActno += item.data.BANK_NM8 + " " + item.data.VR_ACTNO8 + "\n"; // 가상 계좌번호8
if (item.data.BANK_NM9 != null) vrActno += item.data.BANK_NM9 + " " + item.data.VR_ACTNO9 + "\n"; // 가상 계좌번호9
if (item.data.BANK_NM10 != null) vrActno += item.data.BANK_NM10 + " " + item.data.VR_ACTNO10 + "\n"; // 가상 계좌번호10
if (item.data.BANK_NM11 != null) vrActno += item.data.BANK_NM11 + " " + item.data.VR_ACTNO11; // 가상 계좌번호11
if (item.data.BANK_NM != null && item.data.BANK_NM != "") vrActno += item.data.BANK_NM + " " + item.data.VR_ACTNO + "\n"; // 가상 계좌번호
if (item.data.BANK_NM2 != null && item.data.BANK_NM2 != "") vrActno += item.data.BANK_NM2 + " " + item.data.VR_ACTNO2 + "\n"; // 가상 계좌번호2
if (item.data.BANK_NM3 != null && item.data.BANK_NM3 != "") vrActno += item.data.BANK_NM3 + " " + item.data.VR_ACTNO3 + "\n"; // 가상 계좌번호3
if (item.data.BANK_NM4 != null && item.data.BANK_NM4 != "") vrActno += item.data.BANK_NM4 + " " + item.data.VR_ACTNO4 + "\n"; // 가상 계좌번호4
if (item.data.BANK_NM5 != null && item.data.BANK_NM5 != "") vrActno += item.data.BANK_NM5 + " " + item.data.VR_ACTNO5 + "\n"; // 가상 계좌번호5
if (item.data.BANK_NM6 != null && item.data.BANK_NM6 != "") vrActno += item.data.BANK_NM6 + " " + item.data.VR_ACTNO6 + "\n"; // 가상 계좌번호6
if (item.data.BANK_NM7 != null && item.data.BANK_NM7 != "") vrActno += item.data.BANK_NM7 + " " + item.data.VR_ACTNO7 + "\n"; // 가상 계좌번호7
if (item.data.BANK_NM8 != null && item.data.BANK_NM8 != "") vrActno += item.data.BANK_NM8 + " " + item.data.VR_ACTNO8 + "\n"; // 가상 계좌번호8
if (item.data.BANK_NM9 != null && item.data.BANK_NM9 != "") vrActno += item.data.BANK_NM9 + " " + item.data.VR_ACTNO9 + "\n"; // 가상 계좌번호9
if (item.data.BANK_NM10 != null && item.data.BANK_NM10 != "") vrActno += item.data.BANK_NM10 + " " + item.data.VR_ACTNO10 + "\n"; // 가상 계좌번호10
if (item.data.BANK_NM11 != null && item.data.BANK_NM11 != "") vrActno += item.data.BANK_NM11 + " " + item.data.VR_ACTNO11 + "\n"; // 가상 계좌번호11
if (item.data.BANK_NM12 != null && item.data.BANK_NM12 != "") vrActno += item.data.BANK_NM12 + " " + item.data.VR_ACTNO12 + "\n"; // 가상 계좌번호12
if (item.data.BANK_NM13 != null && item.data.BANK_NM13 != "") vrActno += item.data.BANK_NM13 + " " + item.data.VR_ACTNO13 + "\n"; // 가상 계좌번호13
if (item.data.BANK_NM14 != null && item.data.BANK_NM14 != "") vrActno += item.data.BANK_NM14 + " " + item.data.VR_ACTNO14 + "\n"; // 가상 계좌번호14
if (item.data.BANK_NM15 != null && item.data.BANK_NM15 != "") vrActno += item.data.BANK_NM15 + " " + item.data.VR_ACTNO15 + "\n"; // 가상 계좌번호15
if (item.data.BANK_NM16 != null && item.data.BANK_NM16 != "") vrActno += item.data.BANK_NM16 + " " + item.data.VR_ACTNO16 + "\n"; // 가상 계좌번호16
if (item.data.BANK_NM17 != null && item.data.BANK_NM17 != "") vrActno += item.data.BANK_NM17 + " " + item.data.VR_ACTNO17 + "\n"; // 가상 계좌번호17
if (item.data.BANK_NM18 != null && item.data.BANK_NM18 != "") vrActno += item.data.BANK_NM18 + " " + item.data.VR_ACTNO18 + "\n"; // 가상 계좌번호18
if (item.data.BANK_NM19 != null && item.data.BANK_NM19 != "") vrActno += item.data.BANK_NM19 + " " + item.data.VR_ACTNO19 + "\n"; // 가상 계좌번호19
if (item.data.BANK_NM20 != null && item.data.BANK_NM20 != "") vrActno += item.data.BANK_NM20 + " " + item.data.VR_ACTNO20 + "\n"; // 가상 계좌번호20
$("#vrActno--${pageName}").val(vrActno);
}

@ -343,28 +343,14 @@
});
}
// 화면 초기 설정
initForm${pageName} = () => {
// 화면 초기화
$("#frmEdit--${pageName}")[0].reset();
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
}
// 기본 데이터 설정
setFormData${pageName} = () => {
initData${pageName} = () => {
// 화면 호출(callPurpose)이 view 라면 버튼 비활성화
if (${pageNameMain}CallPurpose == "view") {
// button 요소들을 disabled = true
$("#btnCreate--${pageName}").prop("disabled", true);
$("#btnUpdate--${pageName}").prop("disabled", true);
$("#btnRemove--${pageName}").prop("disabled", true);
} else {
// button 요소들을 disabled = false
$("#btnCreate--${pageName}").prop("disabled", true);
$("#btnUpdate--${pageName}").prop("disabled", true);
$("#btnRemove--${pageName}").prop("disabled", true);
$("#btnCreateCvlcptDscsn--${pageName}").prop("disabled", true);
$("#btnUpdateCvlcptDscsn--${pageName}").prop("disabled", true);
$("#btnRemoveCvlcptDscsn--${pageName}").prop("disabled", true);
}
}
@ -375,17 +361,14 @@
// 이벤트 설정
setEvent${pageName}();
// 초기 기본 설정
initForm${pageName}();
// 기본 데이터 설정
initData${pageName}();
// Dataset 설정
let cvlcptDscsn = ${cvlcptDscsn};
if (cvlcptDscsn) {
${pageName}Control.setData(${cvlcptDscsn});
}
// 기본 데이터 설정
setFormData${pageName}();
});
</script>

@ -66,6 +66,30 @@
pageObject.childReq = [];
pageObject.parentRes = [];
function LoadScript(scriptId, scriptPath){
if(document.getElementById(scriptId) == null){
$("body").append("<script id='"+scriptId+"' src='"+"<c:url value='' />"+scriptPath+"' />");
}
}
function FindObject(objectName, pageName){
if(pageName == undefined || pageName == null || pageName == ""){
return window[objectName];
} else {
return pageObject[pageName][objectName];
}
}
function RegistObject(objectName, def, pageName){
if(pageName == undefined || pageName == null || pageName == ""){
window[objectName] = def;
return window[objectName];
} else {
pageObject[pageName][objectName] = def;
return pageObject[pageName][objectName];
}
}
var ALL_TASK = {};
var MY_INFO = {};
var PARAM_TASK = "${param.taskSeCd}";

@ -5,7 +5,7 @@
<h5 class="modal-title">{title}</h5>
<button id="close{id}" type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body" style="min-height:10em; min-width:30%;">
<div class="modal-body" style="min-height:10em; min-width:30%;overflow-y:auto;max-height:750px;">
</div>
<div class="modal-footer text-end hidden">
<button type="button" class="btn btn-primary">확인</button>

@ -159,7 +159,7 @@ var dialog = {
setTimeout(function(){dialog.close(id);}, conf.timeout);
}
dlg.draggable().modal("show");
dlg.modal("show");
$(".modal-backdrop").each(function() { // gives id to its backdrop
let backdrop = $(this);
if (!backdrop.prop("id"))

@ -1289,6 +1289,9 @@ class DatasetControl {
}
download(type) {
if (!this.query.pageNum)
this.query.pageNum = 1;
this.query.download = type || "xls";
let query = toQuery(this.query);
this.query.download = null;

@ -1,3 +1,22 @@
function download(filePath, fileName, tempAreaId){
var a = document.createElement("a");
a.href = resp.filePath;
a.download = resp.fileName;
document.getElementById(tempAreaId).appendChild(a);
a.click();
document.getElementById(tempAreaId).removeChild(a);
}
function openPDF(filePath, fileName, windowName){
filePath = filePath.replaceAll("\\","%5c");
window.open(
wctx.url("/resources/html/pdf.html"+"?"+"path="+filePath)
,windowName
,'top=10, left=10'
);
}
//엑셀 파일 생성 정보
function getCellDefs($th, $td){
var cellDefs = [];

@ -0,0 +1,288 @@
function settingPhotoMain(pageName, crdnIdElementId){
var $P = pageObject[pageName];
$P.existFileArr = [];
$P.localUploadArr = [];
//드래그앤드롭
Sortable.create(document.getElementById("dragAndDrop--"+pageName), {
onEnd : function(evt){
if(evt.oldIndex != evt.newIndex){
$P.updateFileInfo("changeOrder");
}
}
});
//파일처리 버튼
//추가버튼
$("#btnAddFile--"+pageName).on('click', () => {
$("#inputUploadSet--"+pageName).trigger("click");
});
//동영상캡쳐버튼
$("#btnOpenVideoCapture--"+pageName).on('click', () => {
var crdnId = $("#"+crdnIdElementId).val();
window.open(wctx.url("/sprt/sprt03/010/main.do?openerPageName="+pageName+"&"+"crdnId="+crdnId)
,"newVideoCapture"
,"width=1800,height=950"
);
});
//편집버튼
$("#btnEditPhoto--"+pageName).on('click', () => {
var checked = $("#displayForExist--"+pageName).find("[name='existPhoto']:checked");
if(checked.length < 1){
alert("선택된 사진이 없습니다.");
return;
}
var fileId = checked.val();
window.open(wctx.url("/sprt/sprt03/020/main.do?openerPageName="+pageName+"&"+"fileId="+fileId)
,"editPhoto"
,"width=1400,height=750"
);
});
//삭제버튼
$("#btnDeleteExistPhoto--"+pageName).on('click', () => {
var checked = $("#displayForExist--"+pageName).find("[name='existPhoto']:checked");
if(checked.length < 1){
alert("선택된 사진이 없습니다.");
return;
}
var target = checked[0].value;
$P.existFileArr.forEach(function(item){
if(item.FILE_ID == target){
item.status = "delete";
}
});
$P.updateFileInfo("delete");
});
$P.uploadSet = uploadSupport("#inputUploadSet--"+pageName);
$P.uploadSet.onDatasetChange = () => {
var files = $P.uploadSet.getDataset();
if(files != null && files.length > 0){
files.forEach(function(item){
$P.localUploadArr.push(item);
});
$P.updateFileInfo("insert");
}
};
$P.uploadSet.onRemove = () => { };
//이미지 HTML태그 문자열 반환
$P.fnMakeImgForExistFile = (fileArr) => {
var tagsTextArr = [];
for(var index = 0, j = 0; index < fileArr.length; index++){
var item = fileArr[index];
if(item.status == "delete"){
continue;
}
var template = document.getElementById("imgRadioTemplate--" + pageName).innerHTML;
template = template.replace(/{name}/gi, "existPhoto");
template = template.replace(/{value}/gi, item.FILE_ID);
template = template.replace(/{src}/gi, item.URL);
if(index != 0){
template = template.replace("checked=\"\"", "");
}
template = template.replace(/{crdnPhotoId}/gi, "exist" + item.FILE_ID + pageName);
template = template.replace(/{mosaic}/gi, ifEmpty(item.MOSAIC,""));
tagsTextArr.push(template);
if(j % 2 == 1){
//tagsTextArr.push("<br />");
}
j++;
}
return tagsTextArr.join("");
}
//이미지 HTML 렌더링
$P.fnDisplay = () => {
var tagsText = $P.fnMakeImgForExistFile($P.existFileArr);
if(tagsText == ""){
document.querySelector("#dragAndDrop--"+pageName).innerHTML = "";
$("#btnEditPhoto--"+pageName).hide();
} else {
document.querySelector("#dragAndDrop--"+pageName).innerHTML = tagsText;
$("#btnEditPhoto--"+pageName).show();
}
};
//동영상캡쳐 콜백
$P.videoCallback = (snapshots) => {
snapshots.forEach(function(canvas, index, array){
canvas.toBlob(function(blob){
var identify = new Date().getTime()+ "-" + index;
var file = new File([blob], "capture-"+identify+".png", {type: "image/png"});
file.id = "file-" + identify;
file.url = (window.URL || window.webkitURL).createObjectURL(file);
file.mosaic = "";
$P.localUploadArr.push(file);
if(index === array.length - 1){
$P.updateFileInfo("insert");
}
});
});
}
//사진 편집 콜백
$P.editPhotoCallback = (modifiedFile, originalFileInfo, isNumberPlate) => {
modifiedFile.id = "file-" + new Date().getTime() + "-" + "0";
modifiedFile.url = (window.URL || window.webkitURL).createObjectURL(modifiedFile);
if(isNumberPlate){
modifiedFile.mosaic = "";
$P.localUploadArr.push(modifiedFile);
$P.updateFileInfo("insert");
} else {
$P.existFileArr.forEach(function(item,index){
if(item.FILE_ID == originalFileInfo.FILE_ID){
modifiedFile.URL = modifiedFile.url;
modifiedFile.FILE_ID = originalFileInfo.FILE_ID;
modifiedFile.SRT_ORD = originalFileInfo.SRT_ORD;
modifiedFile.status = "modified";
$P.existFileArr.splice(index, 1, modifiedFile);
};
});
$P.updateFileInfo("modifiy");
}
}
// 사진 저장
$P.updateFileInfo = (flag) => {
var formData = new FormData(document.getElementById("frmFile--"+pageName));
formData.append("crdnId", $("#"+crdnIdElementId).val());
formData.append("atchFileCnt", $P.existFileArr.length);
var fileProcessingURL = "";
if(flag == "insert"){
fileProcessingURL = wctx.url("file/insertCrdnImageFile.do");
formData.delete("newFileList");
if ($P.localUploadArr.length > 0) {
$P.localUploadArr.forEach(function(item){
formData.append("newFileList", item);
});
}
} else if(flag == "modifiy"){
fileProcessingURL = wctx.url("file/updateCrdnImageFile.do");
formData.delete("modifyFile");
if($P.existFileArr.length > 0) {
$P.existFileArr.forEach(function(item){
if(item.status == "modified"){
formData.append("beforeKey", item.FILE_ID);
formData.append("beforeOrder", item.SRT_ORD);
formData.append("modifyFile", item);
}
});
}
} else if(flag == "delete"){
fileProcessingURL = wctx.url("file/deleteCrdnImageFile.do");
if($P.existFileArr.length > 0) {
$P.existFileArr.forEach(function(item){
if(item.status == "delete"){
formData.append("deleteKeys", item.FILE_ID);
}
});
}
} else if(flag == "changeOrder"){
fileProcessingURL = wctx.url("file/changeOrderCrdnImageFile.do");
var inputs = $("#dragAndDrop--"+pageName).find("input[name='existPhoto']");
for(var i=0; i < inputs.length; i++){
formData.append("orderedKeys", inputs[i].value);
}
}
ajax.post({
url : fileProcessingURL,
data : formData, contentType : false, processData : false,
success : resp => {
if(resp.saved){
var crdnId = $("#"+crdnIdElementId).val();
ajax.post({
url : wctx.url("file/list.do"),
data : {
infoKeys : crdnId,
infoType : "100"
},
success : (resp) => {
var hasVideo = false;
if(resp.cvlcptVideoExistYn == "Y"){
hasVideo = true;
}
initPhotoMain(pageName, resp.fileList, hasVideo);
}
});
}
},
});
}
}
function initPhotoMain(pageName, fileList, existVideo){
var $P = pageObject[pageName];
//동영상캡쳐버튼
if(existVideo){
$("#btnOpenVideoCapture--"+pageName).show();
} else {
$("#btnOpenVideoCapture--"+pageName).hide();
}
$P.existFileArr = [];
if(fileList){
fileList.forEach(function(item){
item.status = "";
$P.existFileArr.push(item);
});
}
$P.localUploadArr = [];
$("#inputUploadSet--"+pageName)[0].value = "";
$P.fnDisplay();
}
Loading…
Cancel
Save