diff --git a/src/main/java/cokr/xit/fims/excl/web/Excl02Controller.java b/src/main/java/cokr/xit/fims/excl/web/Excl02Controller.java index 94591d7a..7531b39d 100644 --- a/src/main/java/cokr/xit/fims/excl/web/Excl02Controller.java +++ b/src/main/java/cokr/xit/fims/excl/web/Excl02Controller.java @@ -118,7 +118,7 @@ public class Excl02Controller extends ApplicationController { } /**의견제출 대장를 등록한다. - * @param opnnSbmsn 의견제출 대장 정보 + * @param opnnSbmsn 의견제출 정보, 이미지 파일 uploadFiles * @return jsonView *
 {
 	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
@@ -148,7 +148,7 @@ public class Excl02Controller extends ApplicationController {
 	}
 
 	/**의견제출 대장 정보를 수정한다.
-	 * @param opnnSbmsn 의견제출 대장 정보
+	 * @param opnnSbmsn 의견제출 정보, 이미지 파일 uploadFiles
 	 * @return jsonView
 	 * 
 {
 	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
diff --git a/src/main/java/cokr/xit/fims/sprt/dao/TotalInfoMapper.java b/src/main/java/cokr/xit/fims/sprt/dao/TotalInfoMapper.java
index 6ec9deb5..5a423234 100644
--- a/src/main/java/cokr/xit/fims/sprt/dao/TotalInfoMapper.java
+++ b/src/main/java/cokr/xit/fims/sprt/dao/TotalInfoMapper.java
@@ -1,7 +1,10 @@
 package cokr.xit.fims.sprt.dao;
 
+import java.util.Map;
+
 import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
 
+import cokr.xit.fims.crdn.Crdn;
 import cokr.xit.fims.sprt.SprtQuery;
 import cokr.xit.foundation.component.AbstractMapper;
 import cokr.xit.foundation.data.DataObject;
@@ -31,4 +34,24 @@ public interface TotalInfoMapper extends AbstractMapper {
 	 */
 	DataObject selectCrdnPayerInfo(SprtQuery req);
 
+	/**단속 대장 첨부 파일수 정보를 수정한다.
+	 * @param params 파라미터
+	 * 
  • "crdn" - 단속 대장
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int updateCrdnAtchFileCnt(Map params); + + /**단속 대장 첨부 파일수 정보를 수정한다. + * @param crdn 단속 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + default boolean updateCrdnAtchFileCnt(Crdn crdn) { + return crdn != null && updateCrdnAtchFileCnt(params().set("crdn", crdn)) == 1; + } + } diff --git a/src/main/java/cokr/xit/fims/sprt/service/Sprt02Service.java b/src/main/java/cokr/xit/fims/sprt/service/Sprt02Service.java index ea56186f..7924b955 100644 --- a/src/main/java/cokr/xit/fims/sprt/service/Sprt02Service.java +++ b/src/main/java/cokr/xit/fims/sprt/service/Sprt02Service.java @@ -1,5 +1,10 @@ package cokr.xit.fims.sprt.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.sprt.SprtQuery; import cokr.xit.foundation.data.DataObject; @@ -27,4 +32,10 @@ public interface Sprt02Service { */ DataObject getCrdnPayerInfo(SprtQuery req); + /** 단속 사진에 대한 정보를 수정한다. + * @param nonQueryRequest 처리 요청, crdn 단속정보, newFileInfoList 업로드 파일 목록 + * @return 저장여부 + */ + String updateCrdnImageFile(Map nonQueryRequest, Crdn crdn, List newFileInfoList); + } diff --git a/src/main/java/cokr/xit/fims/sprt/service/bean/Sprt02Bean.java b/src/main/java/cokr/xit/fims/sprt/service/bean/Sprt02Bean.java index 00af0257..44ee6afd 100644 --- a/src/main/java/cokr/xit/fims/sprt/service/bean/Sprt02Bean.java +++ b/src/main/java/cokr/xit/fims/sprt/service/bean/Sprt02Bean.java @@ -4,6 +4,7 @@ import javax.annotation.Resource; import org.springframework.stereotype.Component; +import cokr.xit.fims.crdn.Crdn; import cokr.xit.fims.sprt.SprtQuery; import cokr.xit.fims.sprt.dao.TotalInfoMapper; import cokr.xit.foundation.AbstractComponent; @@ -42,4 +43,21 @@ public class Sprt02Bean extends AbstractComponent { return totalInfoMapper.selectCrdnPayerInfo(req); } + public String updateCrdnAtchFileCnt(Crdn crdn) { + // 변수 선언 + boolean retSuccess = false; // DB 처리 결과 + String retMessage = ""; // 처리 결과 메시지 + + // 의견제출 대장을 수정 한다. + retSuccess = totalInfoMapper.updateCrdnAtchFileCnt(crdn); + if (!retSuccess) { + // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback + throw new RuntimeException("단속 첨부 파일 갯수 수정에 실패하였습니다."); + } + + retMessage = "[S] 작업이 정상 처리 되었습니다."; + + return retMessage; + } + } diff --git a/src/main/java/cokr/xit/fims/sprt/service/bean/Sprt02ServiceBean.java b/src/main/java/cokr/xit/fims/sprt/service/bean/Sprt02ServiceBean.java index 5643ccc9..49c92af7 100644 --- a/src/main/java/cokr/xit/fims/sprt/service/bean/Sprt02ServiceBean.java +++ b/src/main/java/cokr/xit/fims/sprt/service/bean/Sprt02ServiceBean.java @@ -1,9 +1,18 @@ package cokr.xit.fims.sprt.service.bean; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + 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.crdn.Crdn; +import cokr.xit.fims.excl.OpnnSbmsn; import cokr.xit.fims.sprt.SprtQuery; import cokr.xit.fims.sprt.service.Sprt02Service; import cokr.xit.foundation.component.AbstractServiceBean; @@ -26,6 +35,10 @@ public class Sprt02ServiceBean extends AbstractServiceBean implements Sprt02Serv @Resource(name="sprt02Bean") protected Sprt02Bean sprt02Bean; + /** 파일 Bean */ + @Resource(name="fileBean") + private FileBean fileBean; + @Override public DataObject getCrdnInfo(SprtQuery req) { return sprt02Bean.getCrdnInfo(req); @@ -33,7 +46,81 @@ public class Sprt02ServiceBean extends AbstractServiceBean implements Sprt02Serv @Override public DataObject getCrdnPayerInfo(SprtQuery req) { - return sprt02Bean.getCrdnPayerInfo(req); + // 단속, 납부자 조회 + DataObject dataObject = sprt02Bean.getCrdnPayerInfo(req); + + // 첨부파일 조회 + FileQuery fileQuery = new FileQuery(); + + fileQuery.setInfoType(Crdn.INF_TYPE); + fileQuery.setInfoKeys(req.getCrdnId()); + + List fileList = fileBean.getFileList(fileQuery); + + if (fileList != null && !fileList.isEmpty()) { + dataObject.set("fileList", fileList); + } + + // 동영상 존재 여부 확인 +// dataObject.set("videoExist", "N"); +// String linkTblNm = dataObject.string("LINK_TBL_NM"); +// +// if (!linkTblNm.equals("")) { +// if (linkTblNm.equals("TB_ESB_INTERFACE")) { +// fileQuery.setInfoType("010"); +// } else if(linkTblNm.equals("TB_SAEOL")) { +// fileQuery.setInfoType("020"); +// } else { +// throw new RuntimeException("파일 조회 중 오류가 발생하였습니다."); +// } +// +// fileQuery.setInfoKeys(dataObject.string("LINK_ID")); +// +// List linkFileList = fileBean.getFileList(fileQuery); +// +// if (linkFileList != null && !linkFileList.isEmpty()) { +// for (int iLoop = 0; iLoop < linkFileList.size(); iLoop++) { +// String mimeType = linkFileList.get(iLoop).string("MIME_TYPE"); +// if (Arrays.asList(Sprt.VIDEO_MIME_TYPE).contains(mimeType)) { +// dataObject.set("videoExist", "Y"); +// } +// } +// } +// } + + return dataObject; + } + + @Override + public String updateCrdnImageFile(Map nonQueryRequest, Crdn crdn, List newFileInfoList) { + // 변수 선언 + String retMessage = ""; // 처리 결과 메시지 + + // 첨부파일 등록 + if (newFileInfoList != null && !newFileInfoList.isEmpty()) { + // 파일 등록 + int fileInsertEffected = fileBean.create(newFileInfoList); + + // 단속 ID로 파일(TB_FILE) 정보 조회 + List infoFileList = fileBean.getFileList(new FileQuery().setInfoType(Crdn.INF_TYPE) + .setInfoKeys(crdn.getCrdnId()).setOrderBy("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() + fileInsertEffected); + + retMessage = sprt02Bean.updateCrdnAtchFileCnt(crdn); + } + + return retMessage; } } diff --git a/src/main/java/cokr/xit/fims/sprt/web/Sprt02Controller.java b/src/main/java/cokr/xit/fims/sprt/web/Sprt02Controller.java index 0d04e4dc..1df9390d 100644 --- a/src/main/java/cokr/xit/fims/sprt/web/Sprt02Controller.java +++ b/src/main/java/cokr/xit/fims/sprt/web/Sprt02Controller.java @@ -1,17 +1,28 @@ package cokr.xit.fims.sprt.web; +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.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; +import cokr.xit.base.file.FileInfo; +import cokr.xit.base.file.FileInfo.Relation; +import cokr.xit.base.file.web.FileInfoFactory; import cokr.xit.base.web.ApplicationController; import cokr.xit.fims.cmmn.CrdnPayerHstryQuery; import cokr.xit.fims.cmmn.CrdnSttsHstryQuery; import cokr.xit.fims.cmmn.service.CrdnPayerHstryService; import cokr.xit.fims.cmmn.service.CrdnSttsHstryService; +import cokr.xit.fims.crdn.Crdn; +import cokr.xit.fims.cvlc.CrdnCvlcpt; import cokr.xit.fims.excl.ExclQuery; import cokr.xit.fims.excl.service.Excl01Service; import cokr.xit.fims.excl.service.Excl02Service; @@ -119,6 +130,61 @@ public class Sprt02Controller extends ApplicationController { ; } + /**단속 정보, 이미지 파일 정보를 수정한다. + * @param crdn 단속 정보, 추가한 이미지 파일 newFileList, modifyFileList 편집한 이미지 파일 + * @return jsonView + *
 {
+	 *     "affected": 저장된 정보수
+	 *     "saved": 저장되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + @RequestMapping(name="단속 이미지 파일 저장", value="/020/update.do") + public ModelAndView updateCrdnImageFile(HttpServletRequest hReq, Crdn crdn, MultipartFile[] newFileList, MultipartFile[] modifyFileList) { + boolean saved = false; + String retMessage = "[F] "; + + String[] deleteFileKeyList = hReq.getParameterValues("deleteFileKeyList"); + String[] modifyFileKeyList = hReq.getParameterValues("modifyFileKeyList"); + + List newFileInfoList = new ArrayList(); + 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 nonQueryRequest = new HashMap(); + + nonQueryRequest.put("deleteFileKeyList", deleteFileKeyList); + + retMessage = sprt02Service.updateCrdnImageFile(nonQueryRequest, crdn, newFileInfoList); + if (retMessage.contains("[S]")) { + saved = true; + } else { + saved = false; + } + + return new ModelAndView("jsonView") + .addObject("saved", saved) + .addObject("retMessage", retMessage); + } + /**지정하는 단속 ID의 의견제출 정보를 반환한다. * @param crdnId 단속ID * @return fims/sprt/sprt02030-main 또는 jsonView @@ -139,6 +205,7 @@ public class Sprt02Controller extends ApplicationController { exclQuery.setCrdnId(req.getCrdnId()); exclQuery.setDelYn(req.getDelYn()); + // 의견 제출(TB_OPNN_SBMSN) 대장 조회 DataObject opnnSbmsn = excl02Service.getOpnnSbmsnInfo(exclQuery); // 단속(TB_CRDN) 대장 조회 diff --git a/src/main/resources/sql/mapper/fims/sprt/totalInfo-mapper.xml b/src/main/resources/sql/mapper/fims/sprt/totalInfo-mapper.xml index 50470162..9b32c37a 100644 --- a/src/main/resources/sql/mapper/fims/sprt/totalInfo-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sprt/totalInfo-mapper.xml @@ -170,4 +170,13 @@ + /* 단속 첨부 파일갯수 수정 (sprt02Mapper.updateCrdnAtchFileCnt) */ + UPDATE TB_CRDN + SET ATCH_FILE_CNT = #{crdn.atchFileCnt} /* 첨부 파일 수 */ + , MDFCN_DT = #{crdn.lastModified} /* 수정 일시 */ + , MDFR = #{crdn.modifiedBy} /* 수정자 */ + WHERE CRDN_ID = #{crdn.crdnId} /* 단속 ID */ + AND DEL_YN = 'N' /* 삭제 여부 */ + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/fims/excl/excl01010-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/excl/excl01010-main.jsp index 73794109..d877ac07 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/excl/excl01010-main.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/excl/excl01010-main.jsp @@ -5,7 +5,7 @@
- 부과제외 + 부과제외 관리
diff --git a/src/main/webapp/WEB-INF/jsp/fims/excl/excl02010-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/excl/excl02010-main.jsp index 8961ef12..e2e654ee 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/excl/excl02010-main.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/excl/excl02010-main.jsp @@ -5,7 +5,7 @@
- 의견제출 + 의견제출 관리
@@ -350,9 +350,14 @@ return; } + let params = { + callControlName : "${pageName}Control" + , crdnId : crdnId + } + ajax.get({ url : ${pageName}Control.urls.getInfo - , data : { crdnId : crdnId } + , data : params , success : resp => { dialog.open({ id : "totalInfoMainDialog" diff --git a/src/main/webapp/WEB-INF/jsp/fims/excl/excl02020-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/excl/excl02020-info.jsp index 97e196e8..835e3689 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/excl/excl02020-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/excl/excl02020-info.jsp @@ -233,7 +233,7 @@ formData.append("uploadFiles" , $fileListArr[iLoop]); } - for(let key in info) { + for (let key in info) { let value = info[key]; formData.append(key, value); diff --git a/src/main/webapp/WEB-INF/jsp/fims/excl/excl02030-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/excl/excl02030-info.jsp index 754323ab..63d165be 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/excl/excl02030-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/excl/excl02030-info.jsp @@ -1,123 +1,136 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%> <%@ include file="/WEB-INF/jsp/include/taglib.jsp"%> - -
- -
- - - - - - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - - -
- -
- - -
- -
- - -
+ +
+ +
+ 단속 재등록 관리 + + +
+ + + + + + + + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + + +
+ +
+ + +
+ +
+ + +
+
+ +
- - -
- - - -
- - - - + +
+ + + +
+ + + + + - +
+ + + + +
-