From 20bde725ee48533a424591eb0cab77a0f4d66e31 Mon Sep 17 00:00:00 2001 From: jjh Date: Wed, 16 Aug 2023 17:32:04 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=98=EA=B2=AC=EC=A0=9C=EC=B6=9C=20?= =?UTF-8?q?=EC=8B=AC=EC=9D=98=EA=B2=B0=EA=B3=BC(=EB=8B=B5=EB=B3=80)=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20=EC=88=98=EC=A0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cokr/xit/fims/excl/dao/Excl02Mapper.java | 20 +++ .../xit/fims/excl/service/Excl02Service.java | 16 +- .../fims/excl/service/bean/Excl02Bean.java | 11 ++ .../excl/service/bean/Excl02ServiceBean.java | 121 +++++++++++-- .../excl/service/bean/Excl03ServiceBean.java | 14 +- .../xit/fims/excl/web/Excl01Controller.java | 2 +- .../xit/fims/excl/web/Excl02Controller.java | 86 +++++++-- .../sql/mapper/fims/excl/excl02-mapper.xml | 18 +- .../WEB-INF/jsp/fims/excl/excl01010-main.jsp | 2 +- .../WEB-INF/jsp/fims/excl/excl01020-info.jsp | 10 +- .../WEB-INF/jsp/fims/excl/excl02010-main.jsp | 8 +- .../WEB-INF/jsp/fims/excl/excl02020-info.jsp | 163 ++++++++++++------ .../WEB-INF/jsp/fims/excl/excl02030-info.jsp | 41 ++--- .../WEB-INF/jsp/fims/excl/excl03010-main.jsp | 2 +- 14 files changed, 370 insertions(+), 144 deletions(-) diff --git a/src/main/java/cokr/xit/fims/excl/dao/Excl02Mapper.java b/src/main/java/cokr/xit/fims/excl/dao/Excl02Mapper.java index a41afdaf..cd428a9b 100644 --- a/src/main/java/cokr/xit/fims/excl/dao/Excl02Mapper.java +++ b/src/main/java/cokr/xit/fims/excl/dao/Excl02Mapper.java @@ -137,4 +137,24 @@ public interface Excl02Mapper extends AbstractMapper { return excl02 != null && updateOpnnSbmsnYn(params().set("excl02", excl02)) == 1; } + /**의견제출 대장 정보를 수정한다. + * @param params 파라미터 + * + * @return 저장된 정보수 + */ + int updateAnsSttsCd(Map params); + + /**의견제출 대장 정보를 수정한다. + * @param opnnSbmsn 의견제출 대장 + * @return 저장 여부 + * + */ + default boolean updateOpnnSbmsnAnswer(Excl02 excl02) { + return excl02 != null && updateAnsSttsCd(params().set("excl02", excl02)) == 1; + } + } diff --git a/src/main/java/cokr/xit/fims/excl/service/Excl02Service.java b/src/main/java/cokr/xit/fims/excl/service/Excl02Service.java index 5dbb20b9..b7cc286c 100644 --- a/src/main/java/cokr/xit/fims/excl/service/Excl02Service.java +++ b/src/main/java/cokr/xit/fims/excl/service/Excl02Service.java @@ -2,8 +2,7 @@ package cokr.xit.fims.excl.service; import java.util.List; -import org.springframework.web.multipart.MultipartFile; - +import cokr.xit.base.file.FileInfo; import cokr.xit.fims.excl.Excl02; import cokr.xit.fims.excl.Excl02Query; import cokr.xit.foundation.data.DataObject; @@ -45,7 +44,7 @@ public interface Excl02Service { *
  • 그렇지 않으면 false
  • * */ - boolean createOpnnSbmsn(Excl02 excl02, MultipartFile[] uploadFileList); + boolean createOpnnSbmsn(Excl02 excl02, List fileInfoList); /**의견제출 대장 정보를 수정한다. * @param opnnSbmsn 의견제출 대장 @@ -54,7 +53,7 @@ public interface Excl02Service { *
  • 그렇지 않으면 false
  • * */ - boolean updateOpnnSbmsn(Excl02 excl02, MultipartFile[] uploadFileList); + boolean updateOpnnSbmsn(Excl02 excl02, List fileInfoList); /**의견제출 대장 정보를 삭제한다. * @param opnnSbmsn 의견제출 대장 @@ -74,4 +73,13 @@ public interface Excl02Service { */ boolean removeOpnnSbmsnList(Excl02Query req); + /**의견제출 대장 답변(상태) 정보를 수정한다. + * @param opnnSbmsn 의견제출 대장 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + boolean updateOpnnSbmsnAnswer(Excl02 excl02); + } diff --git a/src/main/java/cokr/xit/fims/excl/service/bean/Excl02Bean.java b/src/main/java/cokr/xit/fims/excl/service/bean/Excl02Bean.java index a864df21..c2b74ea8 100644 --- a/src/main/java/cokr/xit/fims/excl/service/bean/Excl02Bean.java +++ b/src/main/java/cokr/xit/fims/excl/service/bean/Excl02Bean.java @@ -117,4 +117,15 @@ public class Excl02Bean extends AbstractComponent { return excl02Mapper.updateCrdn(excl02); } + /**의견제출 대장 답변(상태) 정보를 수정한다. + * @param excl02 의견제출 대장 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + public boolean updateOpnnSbmsnAnswer(Excl02 excl02) { + return excl02Mapper.updateOpnnSbmsnAnswer(excl02); + } + } diff --git a/src/main/java/cokr/xit/fims/excl/service/bean/Excl02ServiceBean.java b/src/main/java/cokr/xit/fims/excl/service/bean/Excl02ServiceBean.java index 7fd98dcd..5bd4b56c 100644 --- a/src/main/java/cokr/xit/fims/excl/service/bean/Excl02ServiceBean.java +++ b/src/main/java/cokr/xit/fims/excl/service/bean/Excl02ServiceBean.java @@ -5,13 +5,13 @@ import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; import cokr.xit.base.file.FileInfo; +import cokr.xit.base.file.service.FileQuery; import cokr.xit.base.file.service.bean.FileBean; -import cokr.xit.base.file.web.FileInfoFactory; import cokr.xit.fims.cmmn.CrdnSttsHstry; import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean; +import cokr.xit.fims.excl.Excl01Query; import cokr.xit.fims.excl.Excl02; import cokr.xit.fims.excl.Excl02Query; import cokr.xit.fims.excl.service.Excl02Service; @@ -57,19 +57,11 @@ public class Excl02ServiceBean extends AbstractServiceBean implements Excl02Serv public DataObject getOpnnSbmsnInfo(Excl02Query req) { DataObject opnnSbmsn = excl02Bean.getOpnnSbmsnInfo(req); - // 등록으로 실행했는데 의견제출 ID가 존재한다면 이미 등록되었으므로 오류로 처리.. - if (req.getOpnnId() == null) { - if (!opnnSbmsn.string("OPNN_ID").equals("")) { - // 예외를 발생시켜서 오류메세지를 보낸다.. - throw new RuntimeException("등록된 의견제출 정보가 있습니다."); - } - } - return opnnSbmsn; } @Override - public boolean createOpnnSbmsn(Excl02 excl02, MultipartFile[] uploadFileList) { + public boolean createOpnnSbmsn(Excl02 excl02, List fileInfoList) { // 변수 선언 boolean retSuccess = false; // DB 처리 결과 @@ -83,8 +75,8 @@ public class Excl02ServiceBean extends AbstractServiceBean implements Excl02Serv } // 파일 갯수 입력 - if (uploadFileList != null) { - excl02.setAtchFileCnt(uploadFileList.length); + if (fileInfoList != null && !fileInfoList.isEmpty()) { + excl02.setAtchFileCnt(fileInfoList.size()); } else { excl02.setAtchFileCnt(0); } @@ -99,9 +91,7 @@ public class Excl02ServiceBean extends AbstractServiceBean implements Excl02Serv } // 의견제출 파일 첨부하기 - if (uploadFileList != null) { - List fileInfoList = new FileInfoFactory().makeFileInfos(null, uploadFileList); - + if (fileInfoList != null && !fileInfoList.isEmpty()) { fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(Excl02.INF_TYPE).setInfoKey(excl02.getOpnnId())); fileBean.create(fileInfoList); @@ -143,7 +133,7 @@ public class Excl02ServiceBean extends AbstractServiceBean implements Excl02Serv } @Override - public boolean updateOpnnSbmsn(Excl02 excl02, MultipartFile[] uploadFileList) { + public boolean updateOpnnSbmsn(Excl02 excl02, List fileInfoList) { // 변수 선언 boolean retSuccess = false; // DB 처리 결과 @@ -154,8 +144,48 @@ public class Excl02ServiceBean extends AbstractServiceBean implements Excl02Serv throw new RuntimeException("의견제출 대장 수정에 실패하였습니다."); } - // 첨부 파일 수정하는 부분 필요 /////////////////////////////////////////////////// + // 의견제출 첨부 파일 수정 하기 + boolean isRemoveFiles = false; // 파일을 삭제해야 하는지 확인 + boolean isCreateFiles = false; // 파일을 등록홰야 하는지 확인 + + // 단속 ID로 파일(TB_FILE) 정보 조회 + List infoOpnnSbmsnFileList = fileBean.getFileList(new FileQuery().setInfoType(Excl02.INF_TYPE) + .setInfoKeys(excl02.getOpnnId())); + + if (fileInfoList != null && !fileInfoList.isEmpty()) { // 의견제출 첨부파일을 등록한다면.. + if (infoOpnnSbmsnFileList == null || infoOpnnSbmsnFileList.size() == 0) { + isRemoveFiles = false; + isCreateFiles = true; + } else { + for (int iLoop = 0; iLoop < fileInfoList.size(); iLoop++) { + // 파일명 확인 + if (fileInfoList.get(iLoop).getName() != infoOpnnSbmsnFileList.get(iLoop).string("FILE_NM")) { + isRemoveFiles = true; + isCreateFiles = true; + + break; + } + } + } + } else { // 의견제출 첨부파일이 없다면.. + if (infoOpnnSbmsnFileList != null && infoOpnnSbmsnFileList.size() > 0) { + isRemoveFiles = true; + isCreateFiles = false; + } + } + // 기존 파일 삭제 + if (isRemoveFiles) { + String[] deleteList = {excl02.getOpnnId()}; + + fileBean.remove(Excl02.INF_TYPE, deleteList); + } + // 신규 파일 등록 + if (isCreateFiles) { + fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(Excl02.INF_TYPE).setInfoKey(excl02.getOpnnId())); + + fileBean.create(fileInfoList); + } return true; } @@ -227,4 +257,59 @@ public class Excl02ServiceBean extends AbstractServiceBean implements Excl02Serv return true; } + @Override + public boolean updateOpnnSbmsnAnswer(Excl02 excl02) { + // 변수 선언 + boolean retSuccess = false; // DB 처리 결과 + String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD) + String newOpnnSbmsnSttsCd = ""; // 신규 의견 제출 상태 코드(OPNN_SBMSN_STTS_CD) + + // 의견제출(TB_OPNN_SBMSN) + 단속(TB_CRDN) 자료 조회 + DataObject infoCrdnOpnnSbmsn = excl02Bean.getOpnnSbmsnInfo(new Excl02Query().setOpnnId(excl02.getOpnnId())); + + // 수납 또는 취소된 자료를 의견진술 수용할 수 없다 + if (infoCrdnOpnnSbmsn.number("CRDN_STTS_CD").intValue() >= 71) { + // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback + throw new RuntimeException(infoCrdnOpnnSbmsn.string("CRDN_STTS_NM") + " 자료는 의견진술 수용으로 처리할 수 없습니다."); + } + + // 의견제출 답변을 수정 한다. + retSuccess = excl02Bean.updateOpnnSbmsnAnswer(excl02); + if (!retSuccess) { + // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback + throw new RuntimeException("의견제출 대장의 답변 수정에 실패하였습니다."); + } + + // 의견제출 처리 결과가 과태료감경(04) 이라면.. 감경 등록이 필요하다.. 2023.08.16 JoJH + + + // 조회된 의견제출상태 코드와 수정 할 의견제출상태 코드가 다르다면.. + if (!excl02.getOpnnSbmsnSttsCd().equals(infoCrdnOpnnSbmsn.string("OPNN_SBMSN_STTS_CD"))) { + if (excl02.getOpnnSbmsnSttsCd().equals("02")) { // 수용 + newCrdnSttsCd = "82"; // 의견진술 수용으로 변경 + } else if (excl02.getOpnnSbmsnSttsCd().equals("01") || excl02.getOpnnSbmsnSttsCd().equals("03")) { // 미수용, 자진취하 + newCrdnSttsCd = infoCrdnOpnnSbmsn.string("CRDN_STTS_CD"); // 이전 단속상태코드 유지 + } + + // 단속상태이력(TB_CRDN_STTS_HSTRY) + CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); + + crdnSttsHstry.setCrdnId(infoCrdnOpnnSbmsn.string("CRDN_ID")); + crdnSttsHstry.setBfrSttsCd(infoCrdnOpnnSbmsn.string("CRDN_STTS_CD")); + crdnSttsHstry.setBfrSttsChgDt(infoCrdnOpnnSbmsn.string("CRDN_STTS_CHG_DT")); + crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); + crdnSttsHstry.setTaskDtlId(excl02.getOpnnId()); + crdnSttsHstry.setEtcCn("의견제출 답변 수정"); + + // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록 한다. + retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); + if (!retSuccess) { + // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback + throw new RuntimeException("의견제출 답변 수정 중 단속상태코드 변경에 실패하였습니다."); + } + } + + return true; + } + } diff --git a/src/main/java/cokr/xit/fims/excl/service/bean/Excl03ServiceBean.java b/src/main/java/cokr/xit/fims/excl/service/bean/Excl03ServiceBean.java index aa95baa5..ad288974 100644 --- a/src/main/java/cokr/xit/fims/excl/service/bean/Excl03ServiceBean.java +++ b/src/main/java/cokr/xit/fims/excl/service/bean/Excl03ServiceBean.java @@ -63,7 +63,7 @@ public class Excl03ServiceBean extends AbstractServiceBean implements Excl03Serv // 단속 ID로 단속(TB_CRDN) 정보 조회 DataObject infoCrdn = excl03Bean.getCrackdown(excl03.getBfrCrdnId()); // 단속 ID로 파일(TB_FILE) 정보 조회 - List infoCrdnFileList = fileBean.getFileList(new FileQuery().setInfoType(excl03.INF_TYPE) + List infoCrdnFileList = fileBean.getFileList(new FileQuery().setInfoType(Excl03.INF_TYPE) .setInfoKeys(excl03.getBfrCrdnId())); // 재등록 단속 정보(TB_CRDN) @@ -124,24 +124,24 @@ public class Excl03ServiceBean extends AbstractServiceBean implements Excl03Serv newCrdn.setVltnNmtm(infoCrdn.string("VLTN_NMTM")); // 위반 횟수 newCrdn.setOvtimeYn(infoCrdn.string("OVTIME_YN")); // 시간외 여부 - // 재등록 단속 파일 정보(TB_FILE) - List newFileInfoList = new ArrayList(); - // 현재 경로를 구한다. - String curWorkingDir = System.getProperty("user.dir"); + List fileInfoList = new ArrayList(); if (!infoCrdnFileList.isEmpty() && infoCrdnFileList.size() > 0) { + // 현재 경로를 구한다. + String curWorkingDir = System.getProperty("user.dir"); + List files = new ArrayList<>(); for (int iLoop = 0; iLoop < infoCrdnFileList.size(); iLoop++) { files.add(new File(curWorkingDir + File.separator + infoCrdnFileList.get(iLoop).string("FILE_PATH"))); } - newFileInfoList = new FileInfoFactory().createFileInfos(null, files); + fileInfoList = new FileInfoFactory().createFileInfos(null, files); } // 단속 대장 입력 - retSuccess = crdnService.create(null, newCrdn, newFileInfoList); + retSuccess = crdnService.create(null, newCrdn, fileInfoList); if (!retSuccess) { // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("재부과 등록 중 단속대장 등록에 실패하였습니다."); diff --git a/src/main/java/cokr/xit/fims/excl/web/Excl01Controller.java b/src/main/java/cokr/xit/fims/excl/web/Excl01Controller.java index 6ef762b3..4b3d6449 100644 --- a/src/main/java/cokr/xit/fims/excl/web/Excl01Controller.java +++ b/src/main/java/cokr/xit/fims/excl/web/Excl01Controller.java @@ -28,7 +28,7 @@ import cokr.xit.foundation.data.DataObject; */ public class Excl01Controller extends ApplicationController { - /**부과제외 대장 서비스*/ + /** 부과제외 대장 서비스 */ @Resource(name = "excl01Service") protected Excl01Service excl01Service; 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 1d88e17a..362d5760 100644 --- a/src/main/java/cokr/xit/fims/excl/web/Excl02Controller.java +++ b/src/main/java/cokr/xit/fims/excl/web/Excl02Controller.java @@ -1,5 +1,6 @@ package cokr.xit.fims.excl.web; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -11,6 +12,9 @@ import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import cokr.xit.base.code.CommonCode; +import cokr.xit.base.file.FileInfo; +import cokr.xit.base.file.service.FileService; +import cokr.xit.base.file.web.FileInfoFactory; import cokr.xit.base.web.ApplicationController; import cokr.xit.fims.excl.Excl02; import cokr.xit.fims.excl.Excl02Query; @@ -29,10 +33,15 @@ import cokr.xit.foundation.data.DataObject; */ public class Excl02Controller extends ApplicationController { - /**의견제출 대장 서비스*/ + /** 의견제출 대장 서비스 */ @Resource(name = "excl02Service") protected Excl02Service excl02Service; + + /** 파일 정보 서비스 서비스 */ + @Resource(name="fileService") + private FileService fileService; + /**의견제출 대장 관리 메인화면(excl/excl02/010-main)을 연다. * 조건없는 {@link #getOpnnSbmsnList(ExclQuery01) 의견제출 대장 조회 결과}를 포함시킨다. * @return /excl/excl02/010-main @@ -82,22 +91,31 @@ public class Excl02Controller extends ApplicationController { public ModelAndView getOpnnSbmsnInfo(Excl02Query req) { DataObject opnnSbmsnInfo = excl02Service.getOpnnSbmsnInfo(req); - boolean json = jsonResponse(); + // 등록으로 실행했는데 의견제출 ID가 존재한다면 이미 등록되었으므로 오류로 처리.. + if (req.getOpnnId() == null && !opnnSbmsnInfo.string("OPNN_ID").equals("")) { + ModelAndView mav = new ModelAndView("jsonView"); - ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/excl/excl02020-info"); + mav.addObject("message", "등록된 의견제출 정보가 있습니다."); - // View(jsp)에서 사용할 공통코드를 조회 - Map> commonCodes = getCodesOf("FIM029", "FIM030", "FIM032", "FIM033", "FIM054"); + return mav; + } else { + boolean json = jsonResponse(); - return mav - .addObject("pageName", "excl02020") - .addObject("FIM029List", commonCodes.get("FIM029")) // 접수 구분 코드(RCPT_SE_CD) - .addObject("FIM030List", commonCodes.get("FIM030")) // 통보 구분 코드(NTFCTN_SE_CD) - .addObject("FIM032List", commonCodes.get("FIM032")) // 소유주 관계 구분 코드(OWNR_REL_CD) - .addObject("FIM033List", commonCodes.get("FIM033")) // 의견 제출 구분 코드(OPNN_SBMSN_SE_CD) - .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) - .addObject("opnnSbmsnInfo", json ? opnnSbmsnInfo : toJson(opnnSbmsnInfo)) - ; + ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/excl/excl02020-info"); + + // View(jsp)에서 사용할 공통코드를 조회 + Map> commonCodes = getCodesOf("FIM029", "FIM030", "FIM032", "FIM033", "FIM054"); + + return mav + .addObject("pageName", "excl02020") + .addObject("FIM029List", commonCodes.get("FIM029")) // 접수 구분 코드(RCPT_SE_CD) + .addObject("FIM030List", commonCodes.get("FIM030")) // 통보 구분 코드(NTFCTN_SE_CD) + .addObject("FIM032List", commonCodes.get("FIM032")) // 소유주 관계 구분 코드(OWNR_REL_CD) + .addObject("FIM033List", commonCodes.get("FIM033")) // 의견 제출 구분 코드(OPNN_SBMSN_SE_CD) + .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) + .addObject("opnnSbmsnInfo", json ? opnnSbmsnInfo : toJson(opnnSbmsnInfo)) // 의견제출 정보 + ; + } } /**의견제출 대장를 등록한다. @@ -108,12 +126,19 @@ public class Excl02Controller extends ApplicationController { * } */ @PostMapping(name="의견제출 대장 등록", value="/020/create.do") - public ModelAndView createOpnnSbmsn(Excl02 excl02, MultipartFile[] uploadFileList) { - boolean saved = excl02Service.createOpnnSbmsn(excl02, uploadFileList); + public ModelAndView createOpnnSbmsn(Excl02 excl02, MultipartFile[] uploadFiles) { + // 파일 + List fileInfoList = new ArrayList(); + + if (uploadFiles != null && uploadFiles.length > 0) { + fileInfoList = new FileInfoFactory().makeFileInfos(null, uploadFiles); + } + + boolean saved = excl02Service.createOpnnSbmsn(excl02, fileInfoList); return new ModelAndView("jsonView") .addObject("saved", saved); - } + } /**의견제출 대장 정보를 수정한다. * @param opnnSbmsn 의견제출 대장 정보 @@ -123,8 +148,15 @@ public class Excl02Controller extends ApplicationController { * } */ @PostMapping(name="의견제출 대장 수정", value="/020/update.do") - public ModelAndView updateOpnnSbmsn(Excl02 excl02, MultipartFile[] uploadFileList) { - boolean saved = excl02Service.updateOpnnSbmsn(excl02, uploadFileList); + public ModelAndView updateOpnnSbmsn(Excl02 excl02, MultipartFile[] uploadFiles) { + // 파일 + List fileInfoList = new ArrayList(); + + if (uploadFiles != null && uploadFiles.length > 0) { + fileInfoList = new FileInfoFactory().makeFileInfos(null, uploadFiles); + } + + boolean saved = excl02Service.updateOpnnSbmsn(excl02, fileInfoList); return new ModelAndView("jsonView") .addObject("saved", saved); @@ -189,4 +221,20 @@ public class Excl02Controller extends ApplicationController { .addObject("opnnSbmsnInfo", json ? opnnSbmsnInfo : toJson(opnnSbmsnInfo)) ; } + + /**의견제출 대장 답변(상태) 정보를 수정한다. + * @param opnnSbmsn 의견제출 대장 정보 + * @return jsonView + *
     {
    +	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
    +	 * }
    + */ + @PostMapping(name="의견제출 대장 답변 수정", value="/030/updateAnswer.do") + public ModelAndView updateOpnnSbmsnAnswer(Excl02 excl02) { + boolean saved = excl02Service.updateOpnnSbmsnAnswer(excl02); + + return new ModelAndView("jsonView") + .addObject("saved", saved); + } + } diff --git a/src/main/resources/sql/mapper/fims/excl/excl02-mapper.xml b/src/main/resources/sql/mapper/fims/excl/excl02-mapper.xml index 4792161d..4fa7254a 100644 --- a/src/main/resources/sql/mapper/fims/excl/excl02-mapper.xml +++ b/src/main/resources/sql/mapper/fims/excl/excl02-mapper.xml @@ -421,10 +421,6 @@ , DOC_NO = #{excl02.docNo} /* 문서 번호 */ , NTFCTN_SE_CD = #{excl02.ntfctnSeCd} /* 통보 구분 코드 */ , PIC_RVW_OPNN = #{excl02.picRvwOpnn} /* 담당자 검토 의견 */ - , ANS_CN = #{excl02.ansCn} /* 답변 내용 */ - , ANS_YMD = #{excl02.ansYmd} /* 답변 일자 */ - , ANS_TM = #{excl02.ansTm} /* 답변 시각 */ - , OPNN_SBMSN_STTS_CD = #{excl02.opnnSbmsnSttsCd} /* 의견 제출 상태 코드 */ , MDFCN_DT = #{excl02.lastModified} /* 수정 일시 */ , MDFR = #{excl02.modifiedBy} /* 수정자 */ WHERE OPNN_ID = #{excl02.opnnId} /* 의견 ID */ @@ -448,4 +444,18 @@ WHERE CRDN_ID = #{excl02.crdnId} /* 단속 ID */ + /* 의견제출 대장 답변 수정(excl02Mapper.updateAnsSttsCd) */ + UPDATE TB_OPNN_SBMSN + SET OPNN_SBMSN_GIST = #{excl02.opnnSbmsnGist} /* 의견 제출 요지 */ + , PIC_RVW_OPNN = #{excl02.picRvwOpnn} /* 담당자 검토 의견 */ + , NTFCTN_SE_CD = #{excl02.ntfctnSeCd} /* 통보 구분 코드 */ + , OPNN_SBMSN_STTS_CD = #{excl02.opnnSbmsnSttsCd} /* 의견 제출 상태 코드 */ + , ANS_YMD = #{excl02.ansYmd} /* 답변 일자 */ + , ANS_TM = #{excl02.ansTm} /* 답변 시각 */ + , ANS_CN = #{excl02.ansCn} /* 답변 내용 */ + , MDFCN_DT = #{excl02.lastModified} /* 수정 일시 */ + , MDFR = #{excl02.modifiedBy} /* 수정자 */ + WHERE OPNN_ID = #{excl02.opnnId} /* 의견 ID */ + + \ 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 75f41995..85e646f9 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 @@ -186,7 +186,7 @@
    +
    @@ -167,7 +182,7 @@ // var ${pageName}Fields = new FormFields("#frmEdit--${pageName}"); // 파일 업로드 - var ${pageName}UploadFile = uploadSupport("#uploadFileList--${pageName}"); + var ${pageName}UploadFiles = uploadSupport("#uploadFiles--${pageName}"); /************************************************************************** * DatasetControl @@ -182,12 +197,17 @@ , update : wctx.url(prefixUrl + "/020/update.do") // 수정 } , formats : { - RCPT_YMD : dateFormat + CRDN_YMD : dateFormat + , RCPT_YMD : dateFormat } }); ${pageName}Control.onCurrentChange = item => { + // Dataset 셋팅 ${pageName}Fields.set(item); + + // 첨부파일 조회 + fnSearchFileList${pageName}(item.data.OPNN_ID); } /************************************************************************** @@ -196,6 +216,9 @@ // 저장 callback ${pageName}Control.onSave = (resp) => { if (resp.saved) { + // 폼을 리셋해서 uploadFiles에 출력된 선택 파일을 초기화시킨다. + document.getElementById("frmFile--${pageName}").reset(); + dialog.alert("저장됐습니다."); dialog.close(${pageName}Control.prefix + "dialog"); } @@ -216,13 +239,13 @@ formData.append(key, value); } - if (formData.get("uploadFileList").size == 0) { - formData.delete("uploadFileList"); + if (formData.get("uploadFiles").size == 0) { + formData.delete("uploadFiles"); } ajax.post({ url : !create ? ${pageName}Control.urls.update : ${pageName}Control.urls.create - , data: formData, contentType : false, processData : false + , data : formData, contentType : false, processData : false , success : resp => ${pageName}Control.onSave(resp) }); } @@ -252,7 +275,7 @@ }); }); - $("#btnAddFile--${pageName}").on('click', () => { $("#uploadFileList--${pageName}").trigger("click"); }); + $("#btnAddFile--${pageName}").on('click', () => { $("#uploadFiles--${pageName}").trigger("click"); }); } /************************************************************************** @@ -287,13 +310,13 @@ // 저장 function fnBtnSave${pageName}() { - // validate 확인 - if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; + // validate 확인 + if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; - let formFields = new FimsFormFields("#frmEdit--${pageName}"); - let data = formFields.get(); + let formFields = new FimsFormFields("#frmEdit--${pageName}"); + let data = formFields.get(); - dialog.alert({ + dialog.alert({ content : "현재 prefixName 정보를 저장하시겠습니까?" , onOK : () => { ${pageName}Control.save(formFields.get()); @@ -301,6 +324,44 @@ }); } + // 첨부파일 조회 + function fnSearchFileList${pageName}(opnnId) { + // 첨부파일 리스트 + ajax.get({ + url : "file/list.do" + , data : { + infoType : "110" + , infoKeys : opnnId + , fetchSize : 0 + } + , success : resp => { + let fileList = resp.fileList; + + fileList.forEach(function (item, index, array) { + let itemNo = index + 1; + + $("#fileList--${pageName} > tbody:last").append(""); + $("#fileList--${pageName} > tbody:last").append("" + itemNo + ""); + $("#fileList--${pageName} > tbody:last").append("" + item.FILE_ID + ""); + $("#fileList--${pageName} > tbody:last").append("" + item.FILE_NM + ""); + $("#fileList--${pageName} > tbody:last").append("" + item.FILE_SIZE + " byte"); + $("#fileList--${pageName} > tbody:last").append("" + "" + ""); + $("#fileList--${pageName} > tbody:last").append(""); + }); + } + }); + } + + // 첨부파일 다운로드 + function fnBtnFileDownload${pageName}() { + + } + + // 첨부파일 삭제 + function fnBtnFileRemove${pageName}(fileId) { + + } + /************************************************************************** * script 진입 **************************************************************************/ 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 bd41aeba..4de39ffe 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 @@ -86,10 +86,6 @@ - - - - @@ -118,16 +114,16 @@ **************************************************************************/ var ${pageName}Control = new DatasetControl({ prefix : "opnn" - , prefixName : "의견제출" + , prefixName : "의견제출 답변" , keymapper : info => info ? info.OPNN_ID : "" , dataGetter : obj => obj.opnnSbmsnInfo , urls : { - update : wctx.url(prefixUrl + "/030/update.do") // 수정 + update : wctx.url(prefixUrl + "/030/updateAnswer.do") // 답변 처리 } , formats : { RCPT_YMD : dateFormat // 접수 일자 , ANS_YMD : dateFormat // 답변 일자 - , ANS_TM : dateFormat // 답변 일자 + , ANS_TM : timeFormat // 답변 시각 } }); @@ -151,23 +147,10 @@ if (!info) return; let item = ${pageName}Control.getCurrent("item"); - let create = isEmpty(info.opnnId); - - // 첨부파일 - let formData = new FormData(document.getElementById("frmFile--${pageName}")); - for(let key in info) { - let value = info[key]; - - formData.append(key, value); - } - - if (formData.get("uploadFileList").size == 0) { - formData.delete("uploadFileList"); - } ajax.post({ - url : !create ? ${pageName}Control.urls.update : ${pageName}Control.urls.create - , data: formData, contentType : false, processData : false + url : ${pageName}Control.urls.update + , data : info , success : resp => ${pageName}Control.onSave(resp) }); } @@ -220,16 +203,16 @@ **************************************************************************/ // 저장 function fnBtnSave${pageName}() { - // validate 확인 - if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; + // validate 확인 + if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; - let formFields = new FimsFormFields("#frmEdit--${pageName}"); - let data = formFields.get(); + let formFields = new FimsFormFields("#frmEdit--${pageName}"); + let data = formFields.get(); - dialog.alert({ - content : "현재 prefixName 정보를 저장하시겠습니까?" + dialog.alert({ + content : "현재 의견제출 답변 정보를 저장하시겠습니까?" , onOK : () => { - ${pageName}Control.save(formFields.get()); + ${pageName}Control.save(data); } }); } diff --git a/src/main/webapp/WEB-INF/jsp/fims/excl/excl03010-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/excl/excl03010-main.jsp index 817a402f..22ea364f 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/excl/excl03010-main.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/excl/excl03010-main.jsp @@ -155,7 +155,7 @@