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 5bd4b56c..bc5dc77a 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 @@ -11,7 +11,6 @@ import cokr.xit.base.file.service.FileQuery; import cokr.xit.base.file.service.bean.FileBean; 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; @@ -55,9 +54,15 @@ public class Excl02ServiceBean extends AbstractServiceBean implements Excl02Serv @Override public DataObject getOpnnSbmsnInfo(Excl02Query req) { - DataObject opnnSbmsn = excl02Bean.getOpnnSbmsnInfo(req); + DataObject opnnSbmsnInfo = excl02Bean.getOpnnSbmsnInfo(req); - return opnnSbmsn; + // 등록으로 실행했는데 의견제출 ID가 존재한다면 이미 등록되었으므로 오류로 처리.. + if (req.getOpnnId() == null && !opnnSbmsnInfo.string("OPNN_ID").equals("")) { + // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback + throw new RuntimeException("의견제출 대장에 정보가 이미 존재합니다."); + } + + return opnnSbmsnInfo; } @Override @@ -74,14 +79,7 @@ public class Excl02ServiceBean extends AbstractServiceBean implements Excl02Serv throw new RuntimeException("의견제출 대장에 정보가 이미 존재합니다."); } - // 파일 갯수 입력 - if (fileInfoList != null && !fileInfoList.isEmpty()) { - excl02.setAtchFileCnt(fileInfoList.size()); - } else { - excl02.setAtchFileCnt(0); - } - - excl02.setOpnnSbmsnSttsCd("00"); // 의견 제출 상태 코드 + excl02.setOpnnSbmsnSttsCd("00"); // 의견 제출 상태 코드 00:접수 // 의견제출 대장을 등록 한다. retSuccess = excl02Bean.createOpnnSbmsn(excl02); @@ -137,54 +135,31 @@ public class Excl02ServiceBean extends AbstractServiceBean implements Excl02Serv // 변수 선언 boolean retSuccess = false; // DB 처리 결과 - // 의견제출 대장을 수정 한다. - retSuccess = excl02Bean.updateOpnnSbmsn(excl02); - if (!retSuccess) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("의견제출 대장 수정에 실패하였습니다."); - } + // 의견제출 첨부파일 등록 + if (fileInfoList != null && !fileInfoList.isEmpty()) { + fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(Excl02.INF_TYPE).setInfoKey(excl02.getOpnnId())); - // 의견제출 첨부 파일 수정 하기 - 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; - } - } + fileBean.create(fileInfoList); // 파일 등록 + + // 의견제출 ID로 파일(TB_FILE) 정보 조회 + List infoFileList = fileBean.getFileList(new FileQuery().setInfoType(Excl02.INF_TYPE).setInfoKeys(excl02.getOpnnId()).setOrderBy("FILE_ID")); - // 기존 파일 삭제 - if (isRemoveFiles) { - String[] deleteList = {excl02.getOpnnId()}; + if (infoFileList != null && infoFileList.size() > 0) { + String[] fileIDs = new String[infoFileList.size()]; - fileBean.remove(Excl02.INF_TYPE, deleteList); + for (int iLoop = 0; iLoop < infoFileList.size(); iLoop++) { + fileIDs[iLoop] = infoFileList.get(iLoop).string("FILE_ID"); + } + + fileBean.reorder(fileIDs); // 첨부파일 재 정렬 + } } - // 신규 파일 등록 - if (isCreateFiles) { - fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(Excl02.INF_TYPE).setInfoKey(excl02.getOpnnId())); - fileBean.create(fileInfoList); + // 의견제출 대장을 수정 한다. + retSuccess = excl02Bean.updateOpnnSbmsn(excl02); + if (!retSuccess) { + // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback + throw new RuntimeException("의견제출 대장 수정에 실패하였습니다."); } return true; @@ -208,6 +183,11 @@ public class Excl02ServiceBean extends AbstractServiceBean implements Excl02Serv } } + // 첨부파일 삭제 + String[] deleteFiles = {excl02.getOpnnId()}; + + fileBean.remove(Excl02.INF_TYPE, deleteFiles); + // 의견제출(TB_OPNN_SBMSN) 대장을 삭제 한다. retSuccess = excl02Bean.removeOpnnSbmsn(excl02); if (!retSuccess) { @@ -262,7 +242,6 @@ public class Excl02ServiceBean extends AbstractServiceBean implements Excl02Serv // 변수 선언 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())); 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 85e646f9..5a27e3d5 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 @@