397 lines
13 KiB
Java
397 lines
13 KiB
Java
package com.dbnt.sims.equip.service;
|
|
|
|
|
|
import com.dbnt.sims.equip.mapper.EquipMapper;
|
|
import com.dbnt.sims.equip.model.CellPhone;
|
|
import com.dbnt.sims.equip.model.Equip;
|
|
import com.dbnt.sims.equip.model.Equip.EquipId;
|
|
import com.dbnt.sims.equip.model.EquipFile;
|
|
import com.dbnt.sims.equip.model.EquipFile.EquipFileId;
|
|
import com.dbnt.sims.equip.model.EquipLog;
|
|
import com.dbnt.sims.equip.model.UseList;
|
|
import com.dbnt.sims.equip.model.UseList.UseListId;
|
|
import com.dbnt.sims.equip.repository.CellPhoneRepository;
|
|
import com.dbnt.sims.equip.repository.EquipFileRepository;
|
|
import com.dbnt.sims.equip.repository.EquipLogRepository;
|
|
import com.dbnt.sims.equip.repository.EquipRepository;
|
|
import com.dbnt.sims.equip.repository.UseListRepository;
|
|
import com.dbnt.sims.userInfo.model.UserInfo;
|
|
import com.dbnt.sims.util.ParamMap;
|
|
import com.dbnt.sims.util.Utils;
|
|
|
|
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.text.SimpleDateFormat;
|
|
import java.time.LocalDateTime;
|
|
import java.util.*;
|
|
|
|
@Service
|
|
@RequiredArgsConstructor
|
|
public class EquipService {
|
|
@Value("${spring.servlet.multipart.location}")
|
|
protected String locationPath;
|
|
|
|
private final EquipRepository equipRepository;
|
|
private final EquipFileRepository equipFileRepository;
|
|
private final EquipLogRepository equipLogRepository;
|
|
private final CellPhoneRepository cellPhoneRepository;
|
|
private final UseListRepository useListRepository;
|
|
private final EquipMapper equipMapper;
|
|
|
|
SimpleDateFormat Date = new SimpleDateFormat("yyyy");
|
|
String year = Date.format(new Date());
|
|
|
|
|
|
@Transactional
|
|
public void saveEquip(Equip equip, MultipartHttpServletRequest request) {
|
|
Equip dbEquip = equipRepository.findFirstByOrderByEquKeyDesc();
|
|
try {
|
|
if(dbEquip == null) {
|
|
equip.setEquKey(1);
|
|
equip.setVersionNo(1);
|
|
equipRepository.save(equip);
|
|
} else {
|
|
equip.setEquKey(dbEquip.getEquKey()+1);
|
|
equip.setVersionNo(1);
|
|
equipRepository.save(equip);
|
|
}
|
|
saveFile(equip,request);
|
|
EquipLog equLog = new EquipLog();
|
|
equLog.setEquType(equip.getEquType());
|
|
equLog.setDetailType(equip.getDetailType());
|
|
equLog.setElContents("입력");
|
|
equLog.setWrtNm(equip.getWrtNm());
|
|
equLog.setWrtOrgan(equip.getWrtOrgan());
|
|
equLog.setWrtDt(equip.getWrtDt());
|
|
equipLogRepository.save(equLog);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public void saveFile(Equip equip, MultipartHttpServletRequest mRequest) throws Exception {
|
|
try {
|
|
String path = locationPath;
|
|
String FileSize;
|
|
File dir = new File(path);
|
|
if(!dir.exists()) dir.mkdir();
|
|
//파일등록
|
|
List<MultipartFile> mFiles = mRequest.getFiles("file");
|
|
for(int i = 0; i < mFiles.size(); i++) {
|
|
MultipartFile mFile = mFiles.get(i);
|
|
FileSize = calculationSize(mFile.getSize());
|
|
if(!"".equals(mFile.getOriginalFilename())){
|
|
String fileName = mFile.getOriginalFilename();
|
|
if(fileName.contains("\\")){
|
|
String notSecuredFileName = fileName.substring(fileName.lastIndexOf("\\") +1);
|
|
fileName = ("".equals(notSecuredFileName) || null == notSecuredFileName) ? fileName : notSecuredFileName;
|
|
};
|
|
|
|
String fileExt = Utils.getFileExtention(fileName);
|
|
String saveName = Utils.generationSaveName() + "." + fileExt;
|
|
FileCopyUtils.copy(mFile.getBytes(), new File(path, saveName));
|
|
|
|
EquipFile equipFile = new EquipFile();
|
|
equipFile.setEquKey(equip.getEquKey());
|
|
equipFile.setVersionNo(equip.getVersionNo());
|
|
equipFile.setOrigNm(fileName);
|
|
equipFile.setConvNm(saveName);
|
|
equipFile.setFileExtn(fileExt);
|
|
equipFile.setFilePath(path);
|
|
equipFile.setFileSize(FileSize);
|
|
|
|
equipFileRepository.save(equipFile);
|
|
} else {
|
|
EquipFile equipFile = new EquipFile();
|
|
equipFile.setEquKey(equip.getEquKey());
|
|
equipFile.setVersionNo(equip.getVersionNo());
|
|
equipFileRepository.save(equipFile);
|
|
}
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
|
|
private String calculationSize(double fileSize){
|
|
String[] units = {"bytes", "KB", "MB", "GB", "TB", "PB"};
|
|
double unitSelector = Math.floor(Math.log(fileSize)/Math.log(1024));
|
|
if(fileSize>0){
|
|
return Math.round((fileSize/Math.pow(1024, unitSelector))*100)/100d+" "+units[(int)unitSelector];
|
|
}else{
|
|
return "";
|
|
}
|
|
}
|
|
|
|
public List<ParamMap> selectEquipStatus(Equip equip) {
|
|
return equipMapper.selectEquipStatus(equip);
|
|
}
|
|
|
|
public List<Equip> selectEquipList(Equip equip) {
|
|
return equipMapper.selectEquipList(equip);
|
|
}
|
|
|
|
public Integer selectEquipListCnt(Equip equip) {
|
|
return equipMapper.selectEquipListCnt(equip);
|
|
}
|
|
|
|
public Equip selectEquipInfo(Equip equip) {
|
|
return equipMapper.selectEquipInfo(equip);
|
|
}
|
|
|
|
@Transactional
|
|
public int updateEquip(Equip equip, MultipartHttpServletRequest request) {
|
|
try {
|
|
Equip dbEquip = equipRepository.findById(new EquipId(equip.getEquKey(), equip.getVersionNo())).orElse(null);
|
|
Equip equipTmp = new Equip();
|
|
equipTmp.setEquKey(dbEquip.getEquKey());
|
|
equipTmp.setVersionNo(dbEquip.getVersionNo()+1);
|
|
equipTmp.setMgtOrgan(equip.getMgtOrgan());
|
|
equipTmp.setEquType(equip.getEquType());
|
|
equipTmp.setDetailType(equip.getDetailType());
|
|
equipTmp.setStoredYear(equip.getStoredYear());
|
|
equipTmp.setItemQty(equip.getItemQty());
|
|
equipTmp.setItemCondition(equip.getItemCondition());
|
|
equipTmp.setNote(equip.getNote());
|
|
equipTmp.setWrtOrgan(equip.getWrtOrgan());
|
|
equipTmp.setWrtNm(equip.getWrtNm());
|
|
equipTmp.setWrtDt(equip.getWrtDt());
|
|
equipRepository.save(equipTmp);
|
|
updateFile(equip,equipTmp,request);
|
|
EquipLog equLog = new EquipLog();
|
|
equLog.setEquType(equip.getEquType());
|
|
equLog.setDetailType(equip.getDetailType());
|
|
equLog.setElContents("수정");
|
|
equLog.setWrtNm(equip.getWrtNm());
|
|
equLog.setWrtOrgan(equip.getWrtOrgan());
|
|
equLog.setWrtDt(equip.getWrtDt());
|
|
equipLogRepository.save(equLog);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return equip.getEquKey();
|
|
}
|
|
|
|
public void updateFile(Equip equip,Equip equipTmp, MultipartHttpServletRequest mRequest) throws Exception {
|
|
try {
|
|
String path = locationPath;
|
|
String FileSize;
|
|
File dir = new File(path);
|
|
if(!dir.exists()) dir.mkdir();
|
|
|
|
//이미지 삭제했을경우
|
|
if(equip.getDeleteFileKey() != null) {
|
|
EquipFile equFile = new EquipFile();
|
|
equFile.setEquKey(equip.getDeleteFileKey());
|
|
equFile.setVersionNo(equip.getDeleteFileVnum());
|
|
EquipFile dbEquFile = equipFileRepository.findById(new EquipFileId(equFile.getEquKey(), equFile.getVersionNo())).orElse(null);
|
|
if(dbEquFile != null) {
|
|
File file = new File(dbEquFile.getFilePath(), dbEquFile.getConvNm());
|
|
|
|
if(file.exists()) {
|
|
|
|
file.delete();
|
|
}
|
|
}
|
|
}
|
|
//파일등록
|
|
List<MultipartFile> mFiles = mRequest.getFiles("file");
|
|
for(int i = 0; i < mFiles.size(); i++) {
|
|
MultipartFile mFile = mFiles.get(i);
|
|
FileSize = calculationSize(mFile.getSize());
|
|
if(!"".equals(mFile.getOriginalFilename())){
|
|
String fileName = mFile.getOriginalFilename();
|
|
if(fileName.contains("\\")){
|
|
String notSecuredFileName = fileName.substring(fileName.lastIndexOf("\\") +1);
|
|
fileName = ("".equals(notSecuredFileName) || null == notSecuredFileName) ? fileName : notSecuredFileName;
|
|
};
|
|
|
|
String fileExt = Utils.getFileExtention(fileName);
|
|
String saveName = Utils.generationSaveName() + "." + fileExt;
|
|
FileCopyUtils.copy(mFile.getBytes(), new File(path, saveName));
|
|
|
|
EquipFile equipFile = new EquipFile();
|
|
equipFile.setEquKey(equipTmp.getEquKey());
|
|
equipFile.setVersionNo(equipTmp.getVersionNo());
|
|
equipFile.setOrigNm(fileName);
|
|
equipFile.setConvNm(saveName);
|
|
equipFile.setFileExtn(fileExt);
|
|
equipFile.setFilePath(path);
|
|
equipFile.setFileSize(FileSize);
|
|
|
|
equipFileRepository.save(equipFile);
|
|
} else if(equip.getNoUpdateImg() != null) {
|
|
EquipFile equipFile = new EquipFile();
|
|
equipFile.setEquKey(equipTmp.getEquKey());
|
|
equipFile.setVersionNo(equipTmp.getVersionNo());
|
|
EquipFile dbEquFile = equipFileRepository.findById(new EquipFileId(equip.getEquKey(), equip.getVersionNo())).orElse(null);
|
|
equipFile.setOrigNm(dbEquFile.getOrigNm());
|
|
equipFile.setConvNm(dbEquFile.getConvNm());
|
|
equipFile.setFileExtn(dbEquFile.getFileExtn());
|
|
equipFile.setFilePath(dbEquFile.getFilePath());
|
|
equipFile.setFileSize(dbEquFile.getFileSize());
|
|
equipFileRepository.save(equipFile);
|
|
} else {
|
|
EquipFile equipFile = new EquipFile();
|
|
equipFile.setEquKey(equipTmp.getEquKey());
|
|
equipFile.setVersionNo(equipTmp.getVersionNo());
|
|
equipFileRepository.save(equipFile);
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
public ParamMap selectEduType(Equip equip) {
|
|
return equipMapper.selectEduType(equip);
|
|
}
|
|
|
|
public List<Equip> selectHistoryView(Equip equip) {
|
|
return equipRepository.findByEquKeyOrderByWrtDtDesc(equip.getEquKey());
|
|
}
|
|
|
|
public Equip selectHistoryDetail(Equip equip) {
|
|
return equipMapper.selectHistoryDetail(equip);
|
|
}
|
|
|
|
@Transactional
|
|
public void equipDelete(List<Equip> equip,UserInfo loginUser) {
|
|
for(Equip equ: equip) {
|
|
//파일삭제
|
|
Equip dbEquip = equipMapper.selectEquipInfo(equ);
|
|
if(dbEquip.getOrigNm() != null) {
|
|
File file = new File(dbEquip.getFilePath(), dbEquip.getConvNm());
|
|
|
|
if(file.exists()) {
|
|
|
|
file.delete();
|
|
}
|
|
}
|
|
equipRepository.deleteByEquKey(equ.getEquKey());
|
|
equipFileRepository.deleteByEquKey(equ.getEquKey());
|
|
EquipLog equLog = new EquipLog();
|
|
equLog.setEquType(dbEquip.getEquType());
|
|
equLog.setDetailType(dbEquip.getDetailType());
|
|
equLog.setElContents("삭제");
|
|
equLog.setWrtNm(loginUser.getUserId());
|
|
equLog.setWrtOrgan(loginUser.getOgCd());
|
|
equLog.setWrtDt(LocalDateTime.now());
|
|
equipLogRepository.save(equLog);
|
|
}
|
|
|
|
}
|
|
|
|
public List<EquipLog> selectEquipLogList(EquipLog equipLog) {
|
|
return equipMapper.selectEquipLogList(equipLog);
|
|
}
|
|
|
|
public Integer selectEquipLogListCnt(EquipLog equipLog) {
|
|
return equipMapper.selectEquipLogListCnt(equipLog);
|
|
}
|
|
|
|
public String selectEquipFirstId(Equip equip) {
|
|
return equipMapper.selectEquipFirstId(equip);
|
|
}
|
|
|
|
@Transactional
|
|
public Integer saveCellPhone(CellPhone cellPhone) {
|
|
return cellPhoneRepository.save(cellPhone).getPhoneKey();
|
|
}
|
|
|
|
public List<CellPhone> selectCellPhoneList(CellPhone cellPhone) {
|
|
return equipMapper.selectCellPhoneList(cellPhone);
|
|
}
|
|
|
|
public Integer selectCellPhoneListCnt(CellPhone cellPhone) {
|
|
return equipMapper.selectCellPhoneListCnt(cellPhone);
|
|
}
|
|
|
|
public CellPhone selectCellPhoneInfo(Integer phoneKey) {
|
|
return cellPhoneRepository.findById(phoneKey).orElse(null);
|
|
}
|
|
|
|
@Transactional
|
|
public void deleteCellPhone(List<CellPhone> cellPhone) {
|
|
cellPhoneRepository.deleteAll(cellPhone);
|
|
}
|
|
|
|
public List<ParamMap> selectOrganList(UseList useList) {
|
|
return equipMapper.selectOrganList(useList);
|
|
}
|
|
|
|
@Transactional
|
|
public void saveUse(UseList useList) {
|
|
useList.setYear(year);
|
|
Integer useNo = equipMapper.selectLastUseNo(useList);
|
|
if(useNo == null) {
|
|
useList.setUseNo(year+"-001");
|
|
useList.setVersionNo(1);
|
|
} else {
|
|
useList.setUseNo(year+"-"+String.format("%03d", useNo+1));
|
|
useList.setVersionNo(1);
|
|
}
|
|
useListRepository.save(useList);
|
|
|
|
}
|
|
|
|
public List<UseList> selectUseList(UseList useList) {
|
|
return equipMapper.selectUseList(useList);
|
|
}
|
|
|
|
public Integer selectUseListCnt(UseList useList) {
|
|
return equipMapper.selectUseListCnt(useList);
|
|
}
|
|
|
|
public UseList selectUseInfo(UseList useList) {
|
|
return equipMapper.selectUseInfo(useList);
|
|
}
|
|
|
|
@Transactional
|
|
public UseList updateUse(UseList useList) {
|
|
UseList dbUseList = useListRepository
|
|
.findById(new UseListId(useList.getMgtOrgan(),useList.getUseNo(),useList.getVersionNo(),useList.getUseType())).orElse(null);
|
|
UseList useTmp = new UseList();
|
|
useTmp.setMgtOrgan(dbUseList.getMgtOrgan());
|
|
useTmp.setUseNo(dbUseList.getUseNo());
|
|
useTmp.setVersionNo(dbUseList.getVersionNo()+1);
|
|
useTmp.setUseType(dbUseList.getUseType());
|
|
useTmp.setUseDt(useList.getUseDt());
|
|
useTmp.setDetailType(useList.getDetailType());
|
|
useTmp.setDetailSelf(useList.getDetailSelf());
|
|
useTmp.setPeopleCnt(useList.getPeopleCnt());
|
|
useTmp.setDescription(useList.getDescription());
|
|
useTmp.setWrtOrgan(useList.getWrtOrgan());
|
|
useTmp.setWrtPart(useList.getWrtPart());
|
|
useTmp.setWrtUserSeq(useList.getWrtUserSeq());
|
|
useTmp.setWrtNm(useList.getWrtNm());
|
|
useTmp.setWrtDt(useList.getWrtDt());
|
|
return useListRepository.save(useTmp);
|
|
|
|
}
|
|
|
|
public List<UseList> selectUseInfoList(UseList useList) {
|
|
return useListRepository.findByMgtOrganAndUseNoAndUseTypeOrderByVersionNoDesc(useList.getMgtOrgan(),useList.getUseNo(),useList.getUseType());
|
|
}
|
|
|
|
@Transactional
|
|
public void useDelete(List<UseList> useList) {
|
|
for(UseList use:useList) {
|
|
useListRepository.deleteByMgtOrganAndUseNoAndUseType(use.getMgtOrgan(),use.getUseNo(),use.getUseType());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|