feat: 공지사항 저장 / 삭제 반영

dev
minuk926 3 years ago
parent d2469ee7ca
commit c332031b9b

@ -1,7 +1,5 @@
package com.xit.biz.ctgy.controller; package com.xit.biz.ctgy.controller;
import com.xit.biz.cmm.dto.CmmFileDto;
import com.xit.biz.cmm.entity.CmmFileMst;
import com.xit.biz.ctgy.dto.MinInfoBoard680Dto; import com.xit.biz.ctgy.dto.MinInfoBoard680Dto;
import com.xit.biz.ctgy.entity.MinInfoBoard680; import com.xit.biz.ctgy.entity.MinInfoBoard680;
@ -18,7 +16,6 @@ import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.lang.NonNull; import org.springframework.lang.NonNull;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import java.util.List; import java.util.List;
@ -37,47 +34,27 @@ public class CtgyFileMgtController {
return RestResponse.of(fileService.findFiles(inCode)); return RestResponse.of(fileService.findFiles(inCode));
} }
//@Operation(summary = "파일 저장" , description = "파일 저장") @Operation(summary = "공지사항 저장" , description = "공지사항 저장")
//@PostMapping() @PostMapping(value="/pboard", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
// public ResponseEntity<? extends IRestResponse> saveFiles2(CmmFileMst cmmFileMst, @RequestParam("files") MultipartFile[] files) { public ResponseEntity<? extends IRestResponse> savePublicBoardFiles(@Nonnull MinInfoBoard680Dto dto) {
// AssertUtils.isTrue(!Checks.isEmpty(cmmFileMst), "파일 정보가 존재하지 않습니다.");
// AssertUtils.isTrue(!Checks.isEmpty(cmmFileMst.getFileCtgCd()), "파일 구분 코드[fileCtgCd] 정보가 존재하지 않습니다.");
// AssertUtils.isTrue(!Checks.isEmpty(cmmFileMst.getFileBizId()), "파일 업무 ID[fileBizId] 정보가 존재하지 않습니다.");
// AssertUtils.isTrue(!Checks.isEmpty(files), "대상 파일이 존재하지 않습니다.");
// return RestResponse.of(fileService.saveFiles(cmmFileMst, files));
//
// RedirectAttributes redirectAttributes
// redirectAttributes.addFlashAttribute("message",
// "You successfully uploaded " + file.getOriginalFilename() + "!");
//
// return "redirect:/";
// }
@Operation(summary = "파일 저장" , description = "파일 저장")
@PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<? extends IRestResponse> saveFiles(@Nonnull MinInfoBoard680Dto dto) {
AssertUtils.isTrue(!Checks.isEmpty(dto), "파일 정보가 존재하지 않습니다."); AssertUtils.isTrue(!Checks.isEmpty(dto), "파일 정보가 존재하지 않습니다.");
// AssertUtils.isTrue(!Checks.isEmpty(cmmFileDto.getFileCtgCd()), "파일 구분 코드[fileCtgCd] 정보가 존재하지 않습니다.");
// AssertUtils.isTrue(!Checks.isEmpty(cmmFileDto.getFileBizId()), "파일 업무 ID[fileBizId] 정보가 존재하지 않습니다.");
// AssertUtils.isTrue(!Checks.isEmpty(cmmFileDto.getFiles()), "대상 파일이 존재하지 않습니다.");
// CmmFileMst cmmFileMst = CmmFileMst.builder()
// .fileMstId(cmmFileDto.getFileMstId())
// .fileCtgCd(cmmFileDto.getFileCtgCd())
// .fileBizId(cmmFileDto.getFileBizId())
// .build();
MinInfoBoard680 minInfoBoard680 = MinInfoBoard680.builder() MinInfoBoard680 minInfoBoard680 = MinInfoBoard680.builder()
.inCode(dto.getInCode()) .inCode(dto.getInCode())
.inBgubun(dto.getInBgubun()) .inBgubun(dto.getInBgubun())
.inTitle(dto.getInTitle()) .inTitle(dto.getInTitle())
.inContents(dto.getInContents()) .inContents(dto.getInContents())
.inFilename(dto.getInFilename())
.build(); .build();
//fileService.saveFiles(minInfoBoard680, dto.getFiles());
return RestResponse.of(fileService.saveFiles(minInfoBoard680, dto.getFiles())); return RestResponse.of(fileService.saveFiles(minInfoBoard680, dto.getFiles()));
}
@Operation(summary = "공지사항 삭제" , description = "공지사항 삭제")
@PostMapping(value="/pboard/{inCode}")
public ResponseEntity<? extends IRestResponse> removePublicBoardFile(@PathVariable @Nonnull final Long inCode) {
AssertUtils.isTrue(!Checks.isEmpty(inCode), "공지 사항이 선택되지 않았습니다.");
fileService.removePublicBoardFile(inCode);
// RedirectAttributes redirectAttributes return RestResponse.of(HttpStatus.OK);
// redirectAttributes.addFlashAttribute("message",
// "You successfully uploaded " + file.getOriginalFilename() + "!");
//
// return "redirect:/";
} }
} }

@ -15,4 +15,6 @@ public interface ICtgyFileService {
MinInfoBoard680 findFiles(Long inCode); MinInfoBoard680 findFiles(Long inCode);
List<MinInfoBoard680> saveFiles(@Nonnull MinInfoBoard680 minInfoBoard680, MultipartFile[] files); List<MinInfoBoard680> saveFiles(@Nonnull MinInfoBoard680 minInfoBoard680, MultipartFile[] files);
void removePublicBoardFile(Long inCode);
} }

@ -1,19 +1,13 @@
package com.xit.biz.ctgy.service.impl; package com.xit.biz.ctgy.service.impl;
import com.xit.biz.cmm.entity.CmmFileDtl;
import com.xit.biz.cmm.entity.CmmFileMst;
import com.xit.biz.cmm.entity.ids.CmmFileDtlIds;
import com.xit.biz.cmm.repository.ICmmFileDtlRepository;
import com.xit.biz.cmm.repository.ICmmFileMstRepository;
import com.xit.biz.cmm.service.ICmmFileService;
import com.xit.biz.ctgy.CtgyConstants;
import com.xit.biz.ctgy.entity.MinInfoBoard680; import com.xit.biz.ctgy.entity.MinInfoBoard680;
import com.xit.biz.ctgy.entity.Tf680Recall;
import com.xit.biz.ctgy.repository.IPublicBoardRepository; import com.xit.biz.ctgy.repository.IPublicBoardRepository;
import com.xit.biz.ctgy.service.ICtgyFileService; import com.xit.biz.ctgy.service.ICtgyFileService;
import com.xit.core.constant.ErrorCode;
import com.xit.core.exception.CustomBaseException;
import com.xit.core.support.jpa.JpaUtil; import com.xit.core.support.jpa.JpaUtil;
import com.xit.core.util.AssertUtils; import com.xit.core.util.AssertUtils;
import com.xit.core.util.CommUtil; import com.xit.core.util.Checks;
import com.xit.core.util.DateUtil; import com.xit.core.util.DateUtil;
import io.jsonwebtoken.lang.Assert; import io.jsonwebtoken.lang.Assert;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -72,61 +66,76 @@ public class CtgyFileService implements ICtgyFileService {
@Override @Override
@Transactional @Transactional
public List<MinInfoBoard680> saveFiles(@Nonnull MinInfoBoard680 entity, MultipartFile[] files) { public List<MinInfoBoard680> saveFiles(@Nonnull MinInfoBoard680 entity, MultipartFile[] files) {
String makePath = "";
makePath = File.separator + DateUtil.getToday("");
// 파일 경로 : upload root 제외
String urlPath = this.uploadPath + makePath;
// 물리적인 파일 저장 위치
String fileUploadPath = this.rootPath + urlPath;
File file = new File(fileUploadPath);
if(!file.exists()) file.mkdirs();
List<MinInfoBoard680> entityList = new ArrayList<>(); List<MinInfoBoard680> entityList = new ArrayList<>();
for(MultipartFile mf : files){
if(!mf.isEmpty()) { if(files != null && files.length > 0){
String orgFileName = ""; String makePath = File.separator + DateUtil.getToday("");
try {
orgFileName = StringUtils.cleanPath(Objects.requireNonNull(mf.getOriginalFilename())); // 파일 경로 : upload root 제외
String urlPath = this.uploadPath + makePath;
// 파일 저장 && 전송 // 물리적인 파일 저장 위치
MinInfoBoard680 savedEntity = repository.findById(entity.getInCode()).orElseGet(MinInfoBoard680::new); String fileUploadPath = this.rootPath + urlPath;
savedEntity.setInFilename(orgFileName); File file = new File(fileUploadPath);
savedEntity.setInFilesize(mf.getSize()); if(!file.exists()) file.mkdirs();
savedEntity.setInFileurl(serviceUrl+urlPath);
JpaUtil.saveIfNullId(savedEntity.getInCode(), repository, savedEntity); for(MultipartFile mf : files) {
if (!mf.isEmpty()) {
entityList.add(savedEntity); String orgFileName = "";
mf.transferTo(new File(fileUploadPath + File.separator + orgFileName)); try {
orgFileName = StringUtils.cleanPath(Objects.requireNonNull(mf.getOriginalFilename()));
// inputStream을 가져와서
// copyOfLocation (저장위치)로 파일을 쓴다. // 파일 저장 && 전송
// copy의 옵션은 기존에 존재하면 REPLACE(대체한다), 오버라이딩 한다 MinInfoBoard680 savedEntity = repository.findById(entity.getInCode()).orElseGet(MinInfoBoard680::new);
//Files.copy(multipartFile.getInputStream(), copyOfLocation, StandardCopyOption.REPLACE_EXISTING); savedEntity.setInFilename(orgFileName);
savedEntity.setInFilesize(mf.getSize());
}catch(IOException e){ savedEntity.setInFileurl(serviceUrl + urlPath);
String errMsg = String.format("File Upload Error :: %s", orgFileName); savedEntity.setInBgubun(entity.getInBgubun());
//TODO : 에러처리 savedEntity.setInTitle(entity.getInTitle());
//return RestError.of(String.format("File Upload Error :: %s", orgFileName)); savedEntity.setInContents(entity.getInContents());
AssertUtils.isTrue(false, String.format("File Upload Error :: %s", orgFileName));
JpaUtil.saveIfNullId(savedEntity.getInCode(), repository, savedEntity);
entityList.add(savedEntity);
mf.transferTo(new File(fileUploadPath + File.separator + orgFileName));
// inputStream을 가져와서
// copyOfLocation (저장위치)로 파일을 쓴다.
// copy의 옵션은 기존에 존재하면 REPLACE(대체한다), 오버라이딩 한다
//Files.copy(multipartFile.getInputStream(), copyOfLocation, StandardCopyOption.REPLACE_EXISTING);
} catch (IOException e) {
String errMsg = String.format("File Upload Error :: %s", orgFileName);
//TODO : 에러처리
//return RestError.of(String.format("File Upload Error :: %s", orgFileName));
AssertUtils.isTrue(false, String.format("File Upload Error :: %s", orgFileName));
}
} }
} }
}else{
MinInfoBoard680 savedEntity = repository.findById(entity.getInCode()).orElseGet(MinInfoBoard680::new);
savedEntity.setInBgubun(entity.getInBgubun());
savedEntity.setInTitle(entity.getInTitle());
savedEntity.setInContents(entity.getInContents());
JpaUtil.saveIfNullId(savedEntity.getInCode(), repository, savedEntity);
} }
return entityList; return entityList;
} }
// @Transactional @Override
// public void removeExistsUploadFile(String fileMstId, String orgFileNm){ public void removePublicBoardFile(Long inCode) {
// CmmFileDtl cmmFileDtl = cmmFileDtlRepository.findByFileMstIdAndOrgFileNmIgnoreCase(fileMstId, orgFileNm);
// if(cmmFileDtl != null){ MinInfoBoard680 savedEntity = repository.findById(inCode).orElseThrow(() -> new CustomBaseException(ErrorCode.NOT_FOUND));
// CmmFileDtlIds cmmFileDtlIds = new CmmFileDtlIds();
// cmmFileDtlIds.setFileMstId(fileMstId); File file = null;
// cmmFileDtlIds.setFileId(cmmFileDtl.getFileId()); if(Checks.isNotEmpty(savedEntity.getInFilename())){
// cmmFileDtlRepository.deleteById(cmmFileDtlIds); String absFile = rootPath + savedEntity.getInFileurl().split(serviceUrl)[1]+File.separator + savedEntity.getInFilename();
// new File(this.uploadPath + cmmFileDtl.getFileUpldPath() + File.separator + cmmFileDtl.getFileId()).delete(); file = new File(absFile);
// } }
// }
// 정보 삭제후 파일 삭제
repository.deleteById(inCode);
if(file.exists()) file.delete();
}
} }
/* /*

Loading…
Cancel
Save