|
|
|
@ -1,19 +1,13 @@
|
|
|
|
|
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.Tf680Recall;
|
|
|
|
|
import com.xit.biz.ctgy.repository.IPublicBoardRepository;
|
|
|
|
|
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.util.AssertUtils;
|
|
|
|
|
import com.xit.core.util.CommUtil;
|
|
|
|
|
import com.xit.core.util.Checks;
|
|
|
|
|
import com.xit.core.util.DateUtil;
|
|
|
|
|
import io.jsonwebtoken.lang.Assert;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
@ -72,61 +66,76 @@ public class CtgyFileService implements ICtgyFileService {
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional
|
|
|
|
|
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<>();
|
|
|
|
|
for(MultipartFile mf : files){
|
|
|
|
|
if(!mf.isEmpty()) {
|
|
|
|
|
String orgFileName = "";
|
|
|
|
|
try {
|
|
|
|
|
orgFileName = StringUtils.cleanPath(Objects.requireNonNull(mf.getOriginalFilename()));
|
|
|
|
|
|
|
|
|
|
// 파일 저장 && 전송
|
|
|
|
|
MinInfoBoard680 savedEntity = repository.findById(entity.getInCode()).orElseGet(MinInfoBoard680::new);
|
|
|
|
|
savedEntity.setInFilename(orgFileName);
|
|
|
|
|
savedEntity.setInFilesize(mf.getSize());
|
|
|
|
|
savedEntity.setInFileurl(serviceUrl+urlPath);
|
|
|
|
|
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));
|
|
|
|
|
|
|
|
|
|
if(files != null && files.length > 0){
|
|
|
|
|
String 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();
|
|
|
|
|
|
|
|
|
|
for(MultipartFile mf : files) {
|
|
|
|
|
if (!mf.isEmpty()) {
|
|
|
|
|
String orgFileName = "";
|
|
|
|
|
try {
|
|
|
|
|
orgFileName = StringUtils.cleanPath(Objects.requireNonNull(mf.getOriginalFilename()));
|
|
|
|
|
|
|
|
|
|
// 파일 저장 && 전송
|
|
|
|
|
MinInfoBoard680 savedEntity = repository.findById(entity.getInCode()).orElseGet(MinInfoBoard680::new);
|
|
|
|
|
savedEntity.setInFilename(orgFileName);
|
|
|
|
|
savedEntity.setInFilesize(mf.getSize());
|
|
|
|
|
savedEntity.setInFileurl(serviceUrl + urlPath);
|
|
|
|
|
savedEntity.setInBgubun(entity.getInBgubun());
|
|
|
|
|
savedEntity.setInTitle(entity.getInTitle());
|
|
|
|
|
savedEntity.setInContents(entity.getInContents());
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// @Transactional
|
|
|
|
|
// public void removeExistsUploadFile(String fileMstId, String orgFileNm){
|
|
|
|
|
// CmmFileDtl cmmFileDtl = cmmFileDtlRepository.findByFileMstIdAndOrgFileNmIgnoreCase(fileMstId, orgFileNm);
|
|
|
|
|
// if(cmmFileDtl != null){
|
|
|
|
|
// CmmFileDtlIds cmmFileDtlIds = new CmmFileDtlIds();
|
|
|
|
|
// cmmFileDtlIds.setFileMstId(fileMstId);
|
|
|
|
|
// cmmFileDtlIds.setFileId(cmmFileDtl.getFileId());
|
|
|
|
|
// cmmFileDtlRepository.deleteById(cmmFileDtlIds);
|
|
|
|
|
// new File(this.uploadPath + cmmFileDtl.getFileUpldPath() + File.separator + cmmFileDtl.getFileId()).delete();
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
@Override
|
|
|
|
|
public void removePublicBoardFile(Long inCode) {
|
|
|
|
|
|
|
|
|
|
MinInfoBoard680 savedEntity = repository.findById(inCode).orElseThrow(() -> new CustomBaseException(ErrorCode.NOT_FOUND));
|
|
|
|
|
|
|
|
|
|
File file = null;
|
|
|
|
|
if(Checks.isNotEmpty(savedEntity.getInFilename())){
|
|
|
|
|
String absFile = rootPath + savedEntity.getInFileurl().split(serviceUrl)[1]+File.separator + savedEntity.getInFilename();
|
|
|
|
|
file = new File(absFile);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 정보 삭제후 파일 삭제
|
|
|
|
|
repository.deleteById(inCode);
|
|
|
|
|
if(file.exists()) file.delete();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|