FAISP/src/main/java/com/dbnt/faisp/fipTarget/service/FipTargetService.java

206 lines
7.9 KiB
Java
Raw Normal View History

2022-09-28 07:56:31 +00:00
package com.dbnt.faisp.fipTarget.service;
import com.dbnt.faisp.config.BaseService;
import com.dbnt.faisp.equip.model.Equip;
import com.dbnt.faisp.equip.model.Equip.EquipId;
2022-09-28 07:56:31 +00:00
import com.dbnt.faisp.fipTarget.mapper.FipTargetMapper;
import com.dbnt.faisp.fipTarget.model.PartInfo;
import com.dbnt.faisp.fipTarget.model.PartInfo.PartInfoId;
2022-09-28 07:56:31 +00:00
import com.dbnt.faisp.fipTarget.model.PartInfoFile;
import com.dbnt.faisp.fipTarget.model.PartInfoFile.PartInfoFileId;
2022-09-28 07:56:31 +00:00
import com.dbnt.faisp.fipTarget.repository.PartInfoFileRepository;
import com.dbnt.faisp.fipTarget.repository.PartInfoRepository;
import com.dbnt.faisp.publicBoard.model.PublicFile;
2022-09-28 07:56:31 +00:00
import com.dbnt.faisp.util.ParamMap;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.time.LocalDateTime;
import java.util.*;
@Service
@RequiredArgsConstructor
public class FipTargetService extends BaseService {
@Value("${spring.servlet.multipart.location}")
protected String locationPath;
private final PartInfoRepository partInfoRepository;
private final PartInfoFileRepository partInfoFileRepository;
private final FipTargetMapper fipTargetMapper;
public List<ParamMap> selectPartInfoManagerList(ParamMap param) {
return fipTargetMapper.selectPartInfoManagerList(param);
}
@Transactional
public void savePartInfo(PartInfo partInfo) {
PartInfo dbPart = partInfoRepository.findFirstByOrderByPiSeqDesc();
if(dbPart == null) {
partInfo.setPiSeq(1);
partInfo.setVersionNo(1);
partInfoRepository.save(partInfo);
} else {
partInfo.setPiSeq(dbPart.getPiSeq()+1);
partInfo.setVersionNo(1);
partInfoRepository.save(partInfo);
}
saveUploadFiles(partInfo.getPiSeq(),partInfo.getVersionNo(), partInfo.getMultipartFileList());
}
private void saveUploadFiles(Integer piSeq,Integer versionNo, List<MultipartFile> multipartFileList) {
PartInfoFile lastFileInfo = partInfoFileRepository.findTopByPiSeqAndVersionNoOrderByFileSeqDesc(piSeq,versionNo);
2022-09-28 07:56:31 +00:00
int fileSeq = lastFileInfo==null?1:(lastFileInfo.getFileSeq()+1);
if(multipartFileList == null || multipartFileList.isEmpty()) {
if(lastFileInfo == null || lastFileInfo.getOrigNm() == null ) {
PartInfoFile fileInfo = new PartInfoFile();
fileInfo.setFileSeq(fileSeq);
fileInfo.setPiSeq(piSeq);
fileInfo.setVersionNo(versionNo);
partInfoFileRepository.save(fileInfo);
}
2022-09-28 07:56:31 +00:00
} else {
for(MultipartFile file : multipartFileList){
String saveName = UUID.randomUUID().toString();
String path = locationPath+File.separator+"publicFile"+File.separator;
saveFile(file, new File(path+File.separator+saveName));
String originalFilename = file.getOriginalFilename();
int extnIdx = originalFilename.lastIndexOf(".");
PartInfoFile fileInfo = new PartInfoFile();
fileInfo.setFileSeq(fileSeq++);
fileInfo.setPiSeq(piSeq);
fileInfo.setVersionNo(versionNo);
fileInfo.setOrigNm(originalFilename.substring(0, extnIdx));
fileInfo.setFileExtn(originalFilename.substring(extnIdx+1));
fileInfo.setConvNm(saveName);
fileInfo.setFileSize(calculationSize(file.getSize()));
fileInfo.setFilePath(path);
partInfoFileRepository.save(fileInfo);
}
}
}
public List<PartInfo> selectPartInfoList(PartInfo partInfo) {
return fipTargetMapper.selectPartInfoList(partInfo);
}
public Integer selectPartInfoListCnt(PartInfo partInfo) {
return fipTargetMapper.selectPartInfoListCnt(partInfo);
}
2022-09-29 08:55:12 +00:00
public ParamMap selectWorkTypeTotal(PartInfo partInfo) {
return fipTargetMapper.selectWorkTypeTotal(partInfo);
}
public PartInfo selectPartInfo(PartInfo partInfo) {
return fipTargetMapper.selectPartInfo(partInfo);
}
public List<PartInfoFile> selectPartInfoFile(PartInfo partInfo) {
return fipTargetMapper.selectPartInfoFile(partInfo);
}
@Transactional
public void updatePartInfo(PartInfo partInfo, List<Integer> deleteFileSeq) {
PartInfo dbPart = partInfoRepository.findById(new PartInfoId(partInfo.getPiSeq(), partInfo.getVersionNo())).orElse(null);
PartInfo partTmp = new PartInfo();
partTmp.setPiSeq(dbPart.getPiSeq());
partTmp.setVersionNo(dbPart.getVersionNo()+1);
partTmp.setMgtOrgan(partInfo.getMgtOrgan());
partTmp.setLandPolice(partInfo.getLandPolice());
partTmp.setPiUserSeq(partInfo.getPiUserSeq());
partTmp.setRentType(partInfo.getRentType());
partTmp.setRentPrice(partInfo.getRentPrice());
partTmp.setUtilityType(partInfo.getUtilityType());
partTmp.setUtilityPrice(partInfo.getUtilityPrice());
partTmp.setTerminalNm(partInfo.getTerminalNm());
partTmp.setMpWorkType(partInfo.getMpWorkType());
partTmp.setMpPeopleCnt(partInfo.getMpPeopleCnt());
partTmp.setMpDescription(partInfo.getMpDescription());
partTmp.setPlWorkType(partInfo.getPlWorkType());
partTmp.setPlPeopleCnt(partInfo.getPlPeopleCnt());
partTmp.setPlDescription(partInfo.getPlDescription());
partTmp.setWrtUserSeq(partInfo.getWrtUserSeq());
partTmp.setWrtNm(partInfo.getWrtNm());
partTmp.setWrtPart(partInfo.getWrtPart());
//첫번째 작성자 관서그대로입력
partTmp.setWrtOrgan(dbPart.getWrtOrgan());
partTmp.setWrtDt(partInfo.getWrtDt());
partInfoRepository.save(partTmp);
//업데이트하는 버전 파일조회
List<PartInfoFile> fileList = partInfoFileRepository.findByPiSeqAndVersionNoOrderByFileSeqAsc(partInfo.getPiSeq(),partInfo.getVersionNo());
if(fileList.get(0).getOrigNm() != null) {
for(PartInfoFile fileInfo : fileList){
PartInfoFile tmpFile = new PartInfoFile();
tmpFile.setFileSeq(fileInfo.getFileSeq());
tmpFile.setPiSeq(fileInfo.getPiSeq());
tmpFile.setVersionNo(partTmp.getVersionNo());
tmpFile.setOrigNm(fileInfo.getOrigNm());
tmpFile.setConvNm(fileInfo.getConvNm());
tmpFile.setFileExtn(fileInfo.getFileExtn());
tmpFile.setFileSize(fileInfo.getFileSize());
tmpFile.setFilePath(fileInfo.getFilePath());
partInfoFileRepository.save(tmpFile);
}
}
//수정시 삭제한 파일삭제
if(deleteFileSeq!=null && deleteFileSeq.size()>0){
deletePartInfoFile(partTmp.getPiSeq(),partTmp.getVersionNo(), deleteFileSeq);
}
//파일업로드
saveUploadFiles(partTmp.getPiSeq(),partTmp.getVersionNo(), partInfo.getMultipartFileList());
}
private void deletePartInfoFile(Integer piSeq,Integer versionNo, List<Integer> deleteFileSeq) {
List<PartInfoFile> partInfoFileList = partInfoFileRepository.findByPiSeqAndVersionNoOrderByFileSeqAsc(piSeq,versionNo);
for(PartInfoFile file: partInfoFileList){
if(deleteFileSeq.contains(file.getFileSeq())){
deleteStoredFile(new File(file.getFilePath(), file.getConvNm()));
partInfoFileRepository.deleteById(new PartInfoFileId(file.getFileSeq(),piSeq,versionNo));
}
}
}
public List<PartInfo> selectPartInfoSeq(PartInfo partInfo) {
return fipTargetMapper.selectPartInfoSeq(partInfo);
}
public PartInfo selectPartInfoHistoryView(PartInfo partInfo) {
return fipTargetMapper.selectPartInfoHistoryView(partInfo);
}
public List<PartInfoFile> selectPartInfoFileHistoryView(PartInfo partInfo) {
return fipTargetMapper.selectPartInfoFileHistoryView(partInfo);
}
@Transactional
public void deletePartInfo(PartInfo partInfo) {
//파일삭제
List<PartInfoFile> partInfoFileList= selectPartInfoFile(partInfo);
for(PartInfoFile file: partInfoFileList){
if(file.getOrigNm() != null){
deleteStoredFile(new File(file.getFilePath(), file.getConvNm()));
}
}
partInfoFileRepository.deleteByPiSeq(partInfo.getPiSeq());
partInfoRepository.deleteByPiSeq(partInfo.getPiSeq());
2022-09-29 08:55:12 +00:00
}
2022-09-28 07:56:31 +00:00
}