diff --git a/src/main/java/kr/xit/fims/biz/ec/model/NatlNewspaperRcvReqDTO.java b/src/main/java/kr/xit/fims/biz/ec/model/FolderReqDTO.java similarity index 80% rename from src/main/java/kr/xit/fims/biz/ec/model/NatlNewspaperRcvReqDTO.java rename to src/main/java/kr/xit/fims/biz/ec/model/FolderReqDTO.java index 91e8b05e..31051019 100644 --- a/src/main/java/kr/xit/fims/biz/ec/model/NatlNewspaperRcvReqDTO.java +++ b/src/main/java/kr/xit/fims/biz/ec/model/FolderReqDTO.java @@ -18,11 +18,11 @@ import lombok.ToString; @EqualsAndHashCode @Builder @ToString -public class NatlNewspaperRcvReqDTO implements Serializable { +public class FolderReqDTO implements Serializable { private static final long serialVersionUID = 1L; private String filePath; - private List xmlFileInfoList; + private List fileInfoList; @Setter @Getter @@ -30,7 +30,7 @@ public class NatlNewspaperRcvReqDTO implements Serializable { @AllArgsConstructor @EqualsAndHashCode @ToString - public static class XmlFileInfo implements Serializable { + public static class FileInfo implements Serializable { private static final long serialVersionUID = 1L; private String fileNm; diff --git a/src/main/java/kr/xit/fims/biz/ec/service/EcCctvCrackdownService.java b/src/main/java/kr/xit/fims/biz/ec/service/EcCctvCrackdownService.java index 4c0c651a..dc0e690c 100644 --- a/src/main/java/kr/xit/fims/biz/ec/service/EcCctvCrackdownService.java +++ b/src/main/java/kr/xit/fims/biz/ec/service/EcCctvCrackdownService.java @@ -7,6 +7,7 @@ import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; import org.apache.commons.collections4.ListUtils; @@ -21,6 +22,7 @@ import kr.xit.fims.biz.FimsConst; import kr.xit.fims.biz.ec.mapper.IEcCctvCrackdownMapper; import kr.xit.fims.biz.ec.mapper.IEcCtznSttemntMapper; import kr.xit.fims.biz.ec.model.CctvCrackdownDTO; +import kr.xit.fims.biz.ec.model.FolderReqDTO; import kr.xit.framework.biz.cmm.model.CmmFileDTO; import kr.xit.framework.biz.cmm.service.ICmmFileService; import kr.xit.framework.support.exception.BizRuntimeException; @@ -141,6 +143,81 @@ public class EcCctvCrackdownService implements IEcCctvCrackdownService { } + @Override + @Transactional + public void saveBusCctvCrackdownDatas(final FolderReqDTO dto) { + String filePath = dto.getFilePath(); + AtomicInteger index = new AtomicInteger(); + + dto.getFileInfoList().forEach((fi) -> { + // // Receive XML File Parsing + // NatlNewspaperRcvXmlDTO xmlDto = XmlParseUtils.readXmlToObject(NatlNewspaperRcvXmlDTO.class, filePath+"/"+fi.getFileNm()); + // // XML 첨부파일 정보 + // NatlNewspaperRcvXmlDTO.ApndFileInfo appendFileDto = xmlDto.getAppendFileInfo(); + // // XML 첨부파일 수 : 위도 경도 .png 파일 포함(첨부파일중 가장 마지막 index) + // int fileCnt = Integer.parseInt(appendFileDto.getApndfilcount()); + // if(fileCnt == 1) throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, "첨부된 파일이 부정확 합니다(위경도 파일은 필수 요소 입니다)"); + // + // //------------------------------------------------------------- + // // interface table save + // //------------------------------------------------------------- + // xmlDto.setPetiRegD(xmlDto.getPetiRegD().replaceAll("[-: ]", "")); + // xmlDto.setPetiEndD(xmlDto.getPetiEndD().replaceAll("[-: ]", "")); + // xmlDto.setAncRegD(xmlDto.getAncRegD().replaceAll("[-: ]", "")); + // xmlDto.setRegD(xmlDto.getRegD().replaceAll("[-: ]", "")); + // xmlDto.setRegister(getUserUniqId()); + // mapper.insertEcEsbInterface(xmlDto); + // + // //------------------------------------------------------------- + // //시민 신고 테이블 save + // //------------------------------------------------------------- + // CtznStmtDTO ctznStmtDTO = setCtznSttemntDTOFromRcvXml(xmlDto); + // ctznSttemntMapper.insertEcCtznSttemnt(ctznStmtDTO); + // + // index.set(0); + // CmmFileDTO.FileMst fstMstDTO = null; + // CmmFileDTO.FileDtl pngDtlDTO = null; + // for(CtznStmtDTO.CtznStmtDtl dtl : ctznStmtDTO.getStmtDtlDTOs()){ + // ctznSttemntMapper.insertEcCtznSttemntDetail(dtl); + // + // // 단속건수가 1건인 경우 파일 전체 저장 + // if(ctznStmtDTO.isSingle()) { + // saveAllAppendFiles(xmlDto, appendFileDto, dtl, fileCnt); + // return; + // } + // + // CtznStmtDTO.DupData dupDataDTO = ctznStmtDTO.getDupDataList().stream() + // .filter(d -> Objects.equals(d.getSttemntDetailDTO().getVhcleNo(), dtl.getVhcleNo())) + // .findFirst() + // .get(); + // + // dtl.getIndexs().addAll(dupDataDTO.getIndexs()); + // + // //------------------------------------------------------------- + // // 첨부파일 저장 + // //------------------------------------------------------------- + // // 첨부파일이 있고, 단속사진 업로드가 끝나지 않은경우(단속사진중 마지막 1장은 위도/경도 파일(.png 필수)로 제외) + // if(index.get() == 0) { + // fstMstDTO = saveAppendFiles(appendFileDto, dtl, index.get(), fileCnt); + // }else { + // if(Checks.isEmpty(pngDtlDTO)) { + // if (fstMstDTO == null || fstMstDTO.getCmmFileDtls().size() == 0) + // throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, "시민신고 첨부 파일 처리중 오류가 발생하였습니다."); + // + // for (CmmFileDTO.FileDtl dtlDto : fstMstDTO.getCmmFileDtls()) { + // if (Objects.equals(dtlDto.getFileExtsn(), "png")) { + // pngDtlDTO = dtlDto; + // break; + // } + // }; + // } + // saveFstOverAppendFiles(appendFileDto, dtl, pngDtlDTO, index.get()); + // } + // index.addAndGet(1); + // }; + }); + } + // metaFileName : 20101224121055000_014_001_0 // yyyyMMddHHmmssTTT_업체코드_장비코드 diff --git a/src/main/java/kr/xit/fims/biz/ec/service/EcCtznSttemntService.java b/src/main/java/kr/xit/fims/biz/ec/service/EcCtznSttemntService.java index 027ed4be..9775432a 100644 --- a/src/main/java/kr/xit/fims/biz/ec/service/EcCtznSttemntService.java +++ b/src/main/java/kr/xit/fims/biz/ec/service/EcCtznSttemntService.java @@ -1,14 +1,8 @@ package kr.xit.fims.biz.ec.service; import java.util.*; -import java.util.function.Predicate; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import com.ctc.wstx.util.DataUtil; -import kr.xit.fims.biz.ec.model.NatlNewspaperRcvReqDTO; import org.apache.ibatis.session.RowBounds; -import org.apache.tiles.request.collection.CollectionUtil; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -20,7 +14,6 @@ import kr.xit.framework.biz.cmm.model.CmmFileDTO; import kr.xit.framework.biz.cmm.service.ICmmFileService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.RequestBody; @Slf4j @RequiredArgsConstructor diff --git a/src/main/java/kr/xit/fims/biz/ec/service/EcNatlNewspaperService.java b/src/main/java/kr/xit/fims/biz/ec/service/EcNatlNewspaperService.java index 0773c3f3..001fdc7d 100644 --- a/src/main/java/kr/xit/fims/biz/ec/service/EcNatlNewspaperService.java +++ b/src/main/java/kr/xit/fims/biz/ec/service/EcNatlNewspaperService.java @@ -25,7 +25,7 @@ import kr.xit.fims.biz.ec.mapper.IEcCtznSttemntMapper; import kr.xit.fims.biz.ec.mapper.IEcNatlNewspaperMapper; import kr.xit.fims.biz.ec.model.CtznStmtDTO; import kr.xit.fims.biz.ec.model.NatlNewspaperRcvDTO; -import kr.xit.fims.biz.ec.model.NatlNewspaperRcvReqDTO; +import kr.xit.fims.biz.ec.model.FolderReqDTO; import kr.xit.fims.biz.ec.model.NatlNewspaperRcvXmlDTO; import kr.xit.framework.biz.cmm.model.CmmFileDTO; import kr.xit.framework.biz.cmm.service.ICmmFileService; @@ -87,11 +87,11 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService { @SuppressWarnings("ConstantConditions") @Override @Transactional - public void saveEsbRvcParse(final NatlNewspaperRcvReqDTO dto) { + public void saveEsbRvcParse(final FolderReqDTO dto) { String filePath = dto.getFilePath(); AtomicInteger index = new AtomicInteger(); - dto.getXmlFileInfoList().forEach((fi) -> { + dto.getFileInfoList().forEach((fi) -> { // Receive XML File Parsing NatlNewspaperRcvXmlDTO xmlDto = XmlParseUtils.readXmlToObject(NatlNewspaperRcvXmlDTO.class, filePath+"/"+fi.getFileNm()); // XML 첨부파일 정보 diff --git a/src/main/java/kr/xit/fims/biz/ec/service/IEcCctvCrackdownService.java b/src/main/java/kr/xit/fims/biz/ec/service/IEcCctvCrackdownService.java index 7e66bef8..a47693d2 100644 --- a/src/main/java/kr/xit/fims/biz/ec/service/IEcCctvCrackdownService.java +++ b/src/main/java/kr/xit/fims/biz/ec/service/IEcCctvCrackdownService.java @@ -6,6 +6,7 @@ import java.util.Map; import org.apache.ibatis.session.RowBounds; import kr.xit.fims.biz.ec.model.CctvCrackdownDTO; +import kr.xit.fims.biz.ec.model.FolderReqDTO; import kr.xit.framework.core.utils.XitCmmnUtil; public interface IEcCctvCrackdownService { @@ -14,7 +15,7 @@ public interface IEcCctvCrackdownService { CctvCrackdownDTO.ExtrlRegltCntc findExtrlRegltCntc(final String extrlRegltCntcId); void saveCctvCrackdownDatas(final CctvCrackdownDTO.Request dto); - + void saveBusCctvCrackdownDatas(FolderReqDTO dto); diff --git a/src/main/java/kr/xit/fims/biz/ec/service/IEcNatlNewspaperService.java b/src/main/java/kr/xit/fims/biz/ec/service/IEcNatlNewspaperService.java index ea5d6193..0c07cd32 100644 --- a/src/main/java/kr/xit/fims/biz/ec/service/IEcNatlNewspaperService.java +++ b/src/main/java/kr/xit/fims/biz/ec/service/IEcNatlNewspaperService.java @@ -5,7 +5,7 @@ import java.util.Map; import org.apache.ibatis.session.RowBounds; -import kr.xit.fims.biz.ec.model.NatlNewspaperRcvReqDTO; +import kr.xit.fims.biz.ec.model.FolderReqDTO; import kr.xit.fims.biz.ec.model.NatlNewspaperRcvDTO; import kr.xit.framework.core.utils.XitCmmnUtil; @@ -14,7 +14,7 @@ public interface IEcNatlNewspaperService { List findEsbInterfaces(final Map paraMap, final RowBounds rowBounds); NatlNewspaperRcvDTO findEsbInterface(final String interfaceSeqN); - void saveEsbRvcParse(final NatlNewspaperRcvReqDTO dto); + void saveEsbRvcParse(final FolderReqDTO dto); diff --git a/src/main/java/kr/xit/fims/biz/ec/web/EcCctvCrackdownController.java b/src/main/java/kr/xit/fims/biz/ec/web/EcCctvCrackdownController.java index 6045d1cc..69b98259 100644 --- a/src/main/java/kr/xit/fims/biz/ec/web/EcCctvCrackdownController.java +++ b/src/main/java/kr/xit/fims/biz/ec/web/EcCctvCrackdownController.java @@ -8,12 +8,14 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import kr.xit.fims.biz.FimsConst; import kr.xit.fims.biz.ec.model.CctvCrackdownDTO; +import kr.xit.fims.biz.ec.model.FolderReqDTO; import kr.xit.fims.biz.ec.service.IEcCctvCrackdownService; import kr.xit.framework.biz.cmm.model.CmmFileDTO; import kr.xit.framework.biz.cmm.service.ICmmFileService; @@ -50,7 +52,7 @@ public class EcCctvCrackdownController { @RequestMapping(value = "/ecCctvCrackdownFileSelPopup") public ModelAndView ecCctvCrackdownFileSelPopup(){ ModelAndView mav = new ModelAndView(FimsConst.FIMS_JSP_BASE_PATH +"ec/ecCctvCrackdownFileSelPopup.popup"); - //mav.addObject("dirPath", fileRcvRoot + rcvBusonlyCctvPath); + mav.addObject("dirPath", fileRcvRoot + rcvBusonlyCctvPath); return mav; } @@ -88,6 +90,15 @@ public class EcCctvCrackdownController { return mav; } + @PostMapping(value = "/saveBusCctvCrackdownDatas") + public ModelAndView saveBusCctvCrackdownDatas(@RequestBody final FolderReqDTO dto) { + ModelAndView mav = new ModelAndView(FrameworkConstants.JSON_VIEW); + service.saveBusCctvCrackdownDatas(dto); + + AjaxMessageMapRenderer.success(mav, MessageKey.CMM_SUCCESS); + return mav; + } + @GetMapping(value = "/findExtrlRegltCntcs") public ModelAndView findExtrlRegltCntcs(@RequestParam final Map paraMap) { return ResultResponse.of(service.findExtrlRegltCntcs(paraMap, MybatisUtils.getPagingInfo(paraMap))); diff --git a/src/main/java/kr/xit/fims/biz/ec/web/EcNatlNewspaperController.java b/src/main/java/kr/xit/fims/biz/ec/web/EcNatlNewspaperController.java index ec6ae026..3dadb700 100644 --- a/src/main/java/kr/xit/fims/biz/ec/web/EcNatlNewspaperController.java +++ b/src/main/java/kr/xit/fims/biz/ec/web/EcNatlNewspaperController.java @@ -4,8 +4,6 @@ import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; -import javax.servlet.http.HttpServletResponse; - import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @@ -16,7 +14,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import kr.xit.fims.biz.FimsConst; -import kr.xit.fims.biz.ec.model.NatlNewspaperRcvReqDTO; +import kr.xit.fims.biz.ec.model.FolderReqDTO; import kr.xit.fims.biz.ec.service.IEcNatlNewspaperService; import kr.xit.framework.biz.cmm.model.CmmFileDTO; import kr.xit.framework.biz.cmm.service.ICmmFileService; @@ -81,7 +79,7 @@ public class EcNatlNewspaperController { } @PostMapping(value = "/saveNatlNewspaers") - public ModelAndView saveNatlNewspaer(@RequestBody final NatlNewspaperRcvReqDTO dto) { + public ModelAndView saveNatlNewspaer(@RequestBody final FolderReqDTO dto) { ModelAndView mav = new ModelAndView(FrameworkConstants.JSON_VIEW); service.saveEsbRvcParse(dto); diff --git a/src/main/resources/sqlmapper/framework/cache/cachecode-mysql-mapper.xml b/src/main/resources/sqlmapper/framework/cache/cachecode-mysql-mapper.xml index 7afdf435..fa3df6b3 100644 --- a/src/main/resources/sqlmapper/framework/cache/cachecode-mysql-mapper.xml +++ b/src/main/resources/sqlmapper/framework/cache/cachecode-mysql-mapper.xml @@ -68,6 +68,48 @@ AND use_at = 'Y' + + /* 공통 코드 etc1 */ + SELECT etc_1 AS code + , code_nm + FROM xit_cmmn_detail_code + WHERE code_id = #{codeId} + AND use_at = 'Y' + AND etc_1 = CASE WHEN etc_1 IS NULL THEN 'NONE' + WHEN etc_1 = '' THEN 'NONE' + ELSE etc_1 + END + ORDER BY ordr + + + + /* 공통 코드 etc2 */ + SELECT etc_2 AS code + , code_nm + FROM xit_cmmn_detail_code + WHERE code_id = #{codeId} + AND use_at = 'Y' + AND etc_2 = CASE WHEN etc_2 IS NULL THEN 'NONE' + WHEN etc_2 = '' THEN 'NONE' + ELSE etc_2 + END + ORDER BY ordr + + + + /* 공통 코드 etc3 */ + SELECT etc_3 AS code + , code_nm + FROM xit_cmmn_detail_code + WHERE code_id = #{codeId} + AND use_at = 'Y' + AND etc_3 = CASE WHEN etc_3 IS NULL THEN 'NONE' + WHEN etc_3 = '' THEN 'NONE' + ELSE etc_3 + END + ORDER BY ordr + + /* 공통 코드 */ SELECT code diff --git a/src/main/webapp/WEB-INF/jsp/fims/biz/ec/ecCctvCrackdownFileSelPopup.jsp b/src/main/webapp/WEB-INF/jsp/fims/biz/ec/ecCctvCrackdownFileSelPopup.jsp index e61d0ad3..d6fd2de0 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/biz/ec/ecCctvCrackdownFileSelPopup.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/biz/ec/ecCctvCrackdownFileSelPopup.jsp @@ -9,7 +9,7 @@ - + @@ -20,14 +20,11 @@ <%--
검색조건
- -<%-- --%> + +<%-- --%> + + - -

Selected Files

- -
    -
--%> <%-- --%> @@ -66,14 +63,14 @@ ******************************* */ const fnBiz = { fileSelect: (e) => { - const output = document.querySelector("ul"); + //const output = document.querySelector("ul"); const files = e.target.files; const arrFile = []; for (let i=0; i { - console.log('%%%%%%%%%%%%%>>>>>>>',ev) + //console.log('%%%%%%%%%%%%%>>>>>>>',ev) }) // 그리드 레이아웃 새로고침 (로드가 다 되지 않는 경우 그리드가 흰색 화면으로 출력될 때가 있다.)) } ,add: () => { - const arrChecks = GRID.getCheckedRows(); + const arrChecks = GRID.getData(); if(arrChecks.length===0) { - alert("등록[변경]할 목록을 선택하세요."); + alert("등록[변경]할 데이타가 없습니다."); return false; } - const data = { - filePath: $('#dirPath').val() - ,xmlFileInfoList: arrChecks.map((row) => { - return {fileNm: row.fileNm, fileType: row.fileType, fileSize: row.fileSize} - }) - } - - const formData = new FormData(); - arrFiles.forEach((f)=> { - formData.append("files", f) - }) - //formData.append("files", arrFiles) + if(confirm("등록 하시겠습니까?")) { + if($('#regltSeCode').val() !== '07') { + const formData = new FormData(); + arrFiles.forEach((f)=> { + formData.append("files", f) + }) + $.ajax({ + type: 'post' + , enctype: "multipart/form-data" + , url: '' + , data: formData + , processData: false + , contentType: false + , success: (res) => { + if (res) { + alert(res.message); + fnBiz.search(); + } + //fnBiz.search(); + } + , error: (xhr, status, err) => { - if(confirm("등록 하시겠습니까?")) { - $.ajax({ - type: 'post' - ,enctype: "multipart/form-data" - ,url: '' - ,data: formData - ,processData: false - ,contentType: false - ,success: (res) => { - if(res){ - alert(res.message); - fnBiz.search(); } - //fnBiz.search(); - } - ,error: (xhr, status, err) => { + }) + }else { + const data = { + filePath: $('#dirPath').val() + ,fileInfoList: arrChecks.map((row) => { + return {fileNm: row.fileNm, fileType: row.fileType, fileSize: row.fileSize} + }) } - }) + cmmAjax({ + url: '' + , data: JSON.stringify(data) + , contentType: 'application/json; charset=utf-8' + , success: () => { + fnBiz.search(); + } + }) + } } } + ,onComboChange: () => { + console.log($('#regltSeCode').val()); + let labelTxt = '폴더 선택'; + if($('#regltSeCode').val() === '07'){ + $('#folder') + .css('display', 'none') + .attr('disabled', true); + $('#dirPath') + .css('display', 'inline-block') + .attr('disabled', false); + GRID.reloadData(); + }else{ + $('#folder') + .css('display', 'inline-block') + .attr('disabled', false); + $('#dirPath') + .css('display', 'none') + .attr('disabled', true); + labelTxt = '파일 경로'; + GRID.resetData([]); + } + //$('label[name="lbTxt"]').text(labelTxt); + } } /************************************************************************** @@ -206,7 +235,7 @@ const gridOptions = { el: 'grid', - rowHeaders: ['rowNum', 'checkbox'], + rowHeaders: ['rowNum'], columns: gridColumns, //FIXME : 페이징 미사용시 //페이지처리 hide @@ -223,7 +252,14 @@ }; const gridDatasource = { //DataSource - initialRequest: false + initialRequest: false, + api: { + readData: { + url: '' + //,initParams: {dirPath: $('#dirPath').val()} + ,serializer: (params) => getPageParam({dirPath: $('#dirPath').val()}, params) + } + } }; GRID = TuiGrid.of(gridOptions, gridDatasource, (ev) => { diff --git a/src/main/webapp/WEB-INF/jsp/fims/biz/ec/ecCtznSttemntMgtPopup_jquery-ui.jsp b/src/main/webapp/WEB-INF/jsp/fims/biz/ec/ecCtznSttemntMgtPopup_jquery-ui.jsp deleted file mode 100644 index 4aa7cdf6..00000000 --- a/src/main/webapp/WEB-INF/jsp/fims/biz/ec/ecCtznSttemntMgtPopup_jquery-ui.jsp +++ /dev/null @@ -1,390 +0,0 @@ -<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ include file="/WEB-INF/jsp/framework/taglibs.jsp" %> - - - - - - - - - - - - - diff --git a/src/main/webapp/WEB-INF/jsp/fims/biz/ec/ecNatlNewspaperFileSelPopup.jsp b/src/main/webapp/WEB-INF/jsp/fims/biz/ec/ecNatlNewspaperFileSelPopup.jsp index 7e1e4a74..02f975dc 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/biz/ec/ecNatlNewspaperFileSelPopup.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/biz/ec/ecNatlNewspaperFileSelPopup.jsp @@ -69,13 +69,13 @@ const arrChecks = GRID.getCheckedRows(); if(arrChecks.length===0) { - alert("등록[변경]할 목록을 선택하세요."); + alert("등록[변경]할 데이타를 선택하세요."); return false; } const data = { filePath: $('#dirPath').val() - ,xmlFileInfoList: arrChecks.map((row) => { + ,fileInfoList: arrChecks.map((row) => { return {fileNm: row.fileNm, fileType: row.fileType, fileSize: row.fileSize} }) }