diff --git a/src/main/java/com/dbnt/faisp/config/BaseService.java b/src/main/java/com/dbnt/faisp/config/BaseService.java index 6aaccf65..8921e465 100644 --- a/src/main/java/com/dbnt/faisp/config/BaseService.java +++ b/src/main/java/com/dbnt/faisp/config/BaseService.java @@ -56,6 +56,8 @@ public class BaseService { protected String intelligenceNetworkPath; @Value("${file.dir.affairTemp}") protected String affairTempPath; + @Value("${file.dir.translator}") + protected String translatorPath; protected String calculationSize(double fileSize){ String[] units = {"bytes", "KB", "MB", "GB", "TB", "PB"}; diff --git a/src/main/java/com/dbnt/faisp/config/FileController.java b/src/main/java/com/dbnt/faisp/config/FileController.java index eaf1004f..96ebdf55 100644 --- a/src/main/java/com/dbnt/faisp/config/FileController.java +++ b/src/main/java/com/dbnt/faisp/config/FileController.java @@ -13,6 +13,7 @@ import com.dbnt.faisp.main.faRpt.service.SriService; import com.dbnt.faisp.main.ivsgtMgt.boardInvestigation.service.IvsgtService; import com.dbnt.faisp.main.ivsgtMgt.majorStatus.service.MajorStatusService; import com.dbnt.faisp.main.publicBoard.service.PublicBoardService; +import com.dbnt.faisp.util.Utils; import lombok.RequiredArgsConstructor; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; @@ -114,7 +115,7 @@ public class FileController extends BaseService{ try { File file = new File(fileInfo.getSavePath(), fileInfo.getConvNm()); - setDisposition(fileInfo.getFullName(), request, response); + Utils.setDisposition(fileInfo.getFullName(), request, response); in = new BufferedInputStream(new FileInputStream(file)); out = new BufferedOutputStream(response.getOutputStream()); FileCopyUtils.copy(in, out); @@ -190,7 +191,7 @@ public class FileController extends BaseService{ zout.close(); - setDisposition(downloadFileName, request, response); + Utils.setDisposition(downloadFileName, request, response); BufferedInputStream in = new BufferedInputStream(new FileInputStream(zipFile)); BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream()); FileCopyUtils.copy(in, out); @@ -260,58 +261,4 @@ public class FileController extends BaseService{ } return downloadFile; } - private void setDisposition(String filename, HttpServletRequest request, HttpServletResponse response) throws IOException { - String browser = getBrowser(request); - - String dispositionPrefix = "attachment; filename="; - String encodedFilename = null; - - if (browser.equals("MSIE")) { - encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); - } else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지 - encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); - } else if (browser.equals("Firefox")) { - encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; - } else if (browser.equals("Opera")) { - encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; - } else if (browser.equals("Chrome")) { - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < filename.length(); i++) { - char c = filename.charAt(i); - if(c==','){ - sb.append(URLEncoder.encode(",", "UTF-8")); - } else if (c > '~') { - sb.append(URLEncoder.encode("" + c, "UTF-8")); - } else { - sb.append(c); - } - } - encodedFilename = sb.toString(); - } else { - throw new IOException("Not supported browser"); - } - - response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename); - - if ("Opera".equals(browser)) { - response.setContentType("application/octet-stream;charset=UTF-8"); - } - if(filename.contains("zip")){ - response.setContentType("application/zip"); - } - } - - private String getBrowser(HttpServletRequest request) { - String header = request.getHeader("User-Agent"); - if (header.indexOf("MSIE") > -1) { - return "MSIE"; - } else if (header.indexOf("Trident") > -1) { // IE11 문자열 깨짐 방지 - return "Trident"; - } else if (header.indexOf("Chrome") > -1) { - return "Chrome"; - } else if (header.indexOf("Opera") > -1) { - return "Opera"; - } - return "Firefox"; - } } diff --git a/src/main/java/com/dbnt/faisp/main/fipTarget/FipTargetController.java b/src/main/java/com/dbnt/faisp/main/fipTarget/FipTargetController.java index 3f257b68..5f6424b1 100644 --- a/src/main/java/com/dbnt/faisp/main/fipTarget/FipTargetController.java +++ b/src/main/java/com/dbnt/faisp/main/fipTarget/FipTargetController.java @@ -207,9 +207,9 @@ public class FipTargetController { @GetMapping("/partInfoFileDownload") public void partInfoFileDownload(HttpServletRequest request, HttpServletResponse response, - Integer fileSeq, Integer piSeq, - Integer versionNo) { + Integer versionNo, + Integer fileSeq) { PartInfoFile downloadFile = fipTargetService.selectPartInfoFileDown(fileSeq, piSeq,versionNo); BufferedInputStream in; @@ -217,7 +217,7 @@ public class FipTargetController { try { File file = new File(downloadFile.getFilePath(), downloadFile.getConvNm()); - setDisposition(downloadFile.getOrigNm()+'.'+downloadFile.getFileExtn(), request, response); + Utils.setDisposition(downloadFile.getOrigNm()+'.'+downloadFile.getFileExtn(), request, response); in = new BufferedInputStream(new FileInputStream(file)); out = new BufferedOutputStream(response.getOutputStream()); FileCopyUtils.copy(in, out); @@ -229,55 +229,6 @@ public class FipTargetController { } } - private void setDisposition(String filename, HttpServletRequest request, HttpServletResponse response) throws IOException { - String browser = getBrowser(request); - - String dispositionPrefix = "attachment; filename="; - String encodedFilename = null; - - if (browser.equals("MSIE")) { - encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); - } else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지 - encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); - } else if (browser.equals("Firefox")) { - encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; - } else if (browser.equals("Opera")) { - encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; - } else if (browser.equals("Chrome")) { - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < filename.length(); i++) { - char c = filename.charAt(i); - if (c > '~') { - sb.append(URLEncoder.encode("" + c, "UTF-8")); - } else { - sb.append(c); - } - } - encodedFilename = sb.toString(); - } else { - throw new IOException("Not supported browser"); - } - - response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename); - - if ("Opera".equals(browser)) { - response.setContentType("application/octet-stream;charset=UTF-8"); - } - } - - private String getBrowser(HttpServletRequest request) { - String header = request.getHeader("User-Agent"); - if (header.indexOf("MSIE") > -1) { - return "MSIE"; - } else if (header.indexOf("Trident") > -1) { // IE11 문자열 깨짐 방지 - return "Trident"; - } else if (header.indexOf("Chrome") > -1) { - return "Chrome"; - } else if (header.indexOf("Opera") > -1) { - return "Opera"; - } - return "Firefox"; - } //외사분실 운영현황 끝 //외사분실실적 시작 @GetMapping("/partWorkList") @@ -395,7 +346,7 @@ public class FipTargetController { try { File file = new File(downloadFile.getFilePath(), downloadFile.getConvNm()); - setDisposition(downloadFile.getOrigNm()+'.'+downloadFile.getFileExtn(), request, response); + Utils.setDisposition(downloadFile.getOrigNm()+'.'+downloadFile.getFileExtn(), request, response); in = new BufferedInputStream(new FileInputStream(file)); out = new BufferedOutputStream(response.getOutputStream()); FileCopyUtils.copy(in, out); @@ -492,7 +443,7 @@ public class FipTargetController { try { File file = new File(downloadFile.getFilePath(), downloadFile.getConvNm()); - setDisposition(downloadFile.getOrigNm()+'.'+downloadFile.getFileExtn(), request, response); + Utils.setDisposition(downloadFile.getOrigNm()+'.'+downloadFile.getFileExtn(), request, response); in = new BufferedInputStream(new FileInputStream(file)); out = new BufferedOutputStream(response.getOutputStream()); FileCopyUtils.copy(in, out); diff --git a/src/main/java/com/dbnt/faisp/main/translator/TranslatorController.java b/src/main/java/com/dbnt/faisp/main/translator/TranslatorController.java index a0308cb9..8c850fbb 100644 --- a/src/main/java/com/dbnt/faisp/main/translator/TranslatorController.java +++ b/src/main/java/com/dbnt/faisp/main/translator/TranslatorController.java @@ -3,6 +3,7 @@ package com.dbnt.faisp.main.translator; import com.dbnt.faisp.main.authMgt.service.AuthMgtService; import com.dbnt.faisp.main.translator.model.Translator; import com.dbnt.faisp.main.translator.model.TranslatorCrr; +import com.dbnt.faisp.main.translator.model.TranslatorFile; import com.dbnt.faisp.main.translator.service.TranslatorService; import com.dbnt.faisp.main.userInfo.model.UserInfo; import com.dbnt.faisp.util.ParamMap; @@ -10,15 +11,18 @@ import com.dbnt.faisp.util.Utils; import lombok.RequiredArgsConstructor; -import java.io.IOException; +import java.io.*; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.util.FileCopyUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; @@ -32,14 +36,10 @@ public class TranslatorController { @GetMapping("/info") - public ModelAndView translatorInfo(@AuthenticationPrincipal UserInfo loginUser,Translator translator,HttpServletResponse response) { - ModelAndView mav; - if (translator.getDashboardFlag()){ - mav = new ModelAndView("translator/translatorDashboard"); - translator.setRowCnt(5); - }else{ - mav = new ModelAndView("translator/translator"); - } + public ModelAndView translatorInfo(@AuthenticationPrincipal UserInfo loginUser, + Translator translator, + HttpServletResponse response) { + ModelAndView mav = new ModelAndView("translator/translator"); translator.setDownOrganCdList(loginUser.getDownOrganCdList()); //엑셀다운 if(translator.getExcel() != null && translator.getExcel().equals("Y")){ @@ -72,7 +72,10 @@ public class TranslatorController { } @PostMapping("/saveTranslatorInfo") - public void saveTranslatorInfo(@AuthenticationPrincipal UserInfo loginUser,Translator translator) { + public void saveTranslatorInfo(@AuthenticationPrincipal UserInfo loginUser, + Translator translator, + MultipartHttpServletRequest request) { + translator.setMultipartFileList(request.getMultiFileMap().get("uploadFiles")); translator.setWrtUserSeq(loginUser.getUserSeq()); translator.setWrtNm(loginUser.getUserNm()); translator.setWrtOrgan(loginUser.getOgCd()); @@ -139,19 +142,36 @@ public class TranslatorController { return trKey; } - @PostMapping("/deleteCareer") - @ResponseBody - public int deleteCareer(@RequestBody TranslatorCrr translatorCrr) { - int trKey = translatorSevice.deleteCareer(translatorCrr); - return trKey; - } - @PostMapping("/deleteTranslatorInfo") @ResponseBody public void deleteTranslatorInfo(@RequestBody int trKey) { translatorSevice.deleteTranslatorInfo(trKey); } - + @GetMapping("/translatorFileDownload") + public void translatorFileDownload(HttpServletRequest request, + HttpServletResponse response, + Integer translatorKey, + Integer versionNo, + Integer fileSeq){ + TranslatorFile translatorFile = translatorSevice.selectTranslatorFile(translatorKey, versionNo, fileSeq); + BufferedInputStream in; + BufferedOutputStream out; + try { + File file = new File(translatorFile.getSavePath(), translatorFile.getConvNm()); + + Utils.setDisposition(translatorFile.getOrigNm()+'.'+translatorFile.getFileExtn(), request, response); + in = new BufferedInputStream(new FileInputStream(file)); + out = new BufferedOutputStream(response.getOutputStream()); + FileCopyUtils.copy(in, out); + out.flush(); + if(out!=null) out.close(); + if(in!=null )in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @GetMapping("/statisticsLang") public ModelAndView statisticsLang() { ModelAndView mav = new ModelAndView("translator/translatorStatisticsLang"); diff --git a/src/main/java/com/dbnt/faisp/main/translator/model/Translator.java b/src/main/java/com/dbnt/faisp/main/translator/model/Translator.java index 10ee9a90..04bc0f6e 100644 --- a/src/main/java/com/dbnt/faisp/main/translator/model/Translator.java +++ b/src/main/java/com/dbnt/faisp/main/translator/model/Translator.java @@ -10,13 +10,16 @@ import lombok.Setter; import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicUpdate; import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.web.multipart.MultipartFile; import javax.persistence.*; import java.io.Serializable; import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.Date; +import java.util.List; @Getter @@ -77,12 +80,23 @@ public class Translator extends BaseModel implements Serializable{ private LocalDateTime wrtDt; @Column(name = "naturalization") private String naturalization; + @Column(name = "info_share_chk") + private String infoShareChk; + @Transient + private List translatorFileList = new ArrayList<>(); + @Transient + private String photoFileState; + @Transient + private String infoShareFileState; @Transient private String excel; + @Transient + private List multipartFileList; + @Embeddable @Data @NoArgsConstructor @@ -93,24 +107,4 @@ public class Translator extends BaseModel implements Serializable{ private Integer versionNo; } - public Date getInt(String string) { - return null; - } - - public Date getString(String string) { - return null; - } - - @Override - public String toString() { - return "Translator [translatorKey=" + translatorKey + ", versionNo=" + versionNo + ", ogdp1=" + ogdp1 + ", trLang=" - + trLang + ", trCareer=" + trCareer + ", trName=" + trName + ", trSex=" + trSex + ", trPhone=" + trPhone - + ", trNny=" + trNny + ", trAge=" + trAge + ", trEdu=" + trEdu + ", trCft=" + trCft + ", trVisa=" + trVisa - + ", aptDt=" + aptDt + ", dmlYn=" + dmlYn + ", remark=" + remark + ", wrtNm=" + wrtNm + ", wrtDt=" + wrtDt - + ", wrtOrgan=" + wrtOrgan + ", excel=" + excel + "]"; - } - - - - } diff --git a/src/main/java/com/dbnt/faisp/main/translator/repository/TranslatorFileRepository.java b/src/main/java/com/dbnt/faisp/main/translator/repository/TranslatorFileRepository.java index 196a37c1..33d85d26 100644 --- a/src/main/java/com/dbnt/faisp/main/translator/repository/TranslatorFileRepository.java +++ b/src/main/java/com/dbnt/faisp/main/translator/repository/TranslatorFileRepository.java @@ -3,8 +3,13 @@ package com.dbnt.faisp.main.translator.repository; import com.dbnt.faisp.main.translator.model.TranslatorFile; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; +import java.util.Optional; public interface TranslatorFileRepository extends JpaRepository { + List findByTranslatorKey(Integer translatorKey); + List findByTranslatorKeyAndVersionNo(Integer translatorKey, Integer versionNo); + Optional findByTranslatorKeyAndVersionNoAndFileSeq(Integer translatorKey, Integer versionNo, Integer fileSeq); } diff --git a/src/main/java/com/dbnt/faisp/main/translator/service/TranslatorService.java b/src/main/java/com/dbnt/faisp/main/translator/service/TranslatorService.java index 9f8665ae..550fdc6f 100644 --- a/src/main/java/com/dbnt/faisp/main/translator/service/TranslatorService.java +++ b/src/main/java/com/dbnt/faisp/main/translator/service/TranslatorService.java @@ -1,28 +1,35 @@ package com.dbnt.faisp.main.translator.service; +import com.dbnt.faisp.config.BaseService; import com.dbnt.faisp.main.translator.mapper.TranslatorMapper; import com.dbnt.faisp.main.translator.model.Translator; import com.dbnt.faisp.main.translator.model.Translator.TranslatorId; import com.dbnt.faisp.main.translator.model.TranslatorCrr; +import com.dbnt.faisp.main.translator.model.TranslatorFile; import com.dbnt.faisp.main.translator.repository.TranslatorCareerRepository; +import com.dbnt.faisp.main.translator.repository.TranslatorFileRepository; import com.dbnt.faisp.main.translator.repository.TranslatorRepository; import com.dbnt.faisp.util.ParamMap; import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.File; import java.time.LocalDateTime; import java.util.*; @Service @RequiredArgsConstructor -public class TranslatorService { +public class TranslatorService extends BaseService { private final TranslatorRepository translatorRepository; private final TranslatorCareerRepository translatorCareerRepository; + private final TranslatorFileRepository translatorFileRepository; private final TranslatorMapper translatorMapper; @Transactional @@ -35,7 +42,62 @@ public class TranslatorService { translator.setVersionNo(translator.getVersionNo()+1); } translatorRepository.save(translator); + + if(translator.getVersionNo()!=1){ + savePrevVersionFileInfo(translator); + } + if(translator.getMultipartFileList()!=null && translator.getMultipartFileList().size()>0){ + saveUploadFiles(translator.getTranslatorKey(), translator.getVersionNo(), translator.getMultipartFileList()); + } } + private void savePrevVersionFileInfo(Translator translator){ + List fileList = translatorFileRepository.findByTranslatorKeyAndVersionNo(translator.getTranslatorKey(), translator.getVersionNo()-1); + if(translator.getPhotoFileState()!=null + && !translator.getPhotoFileState().equals("deleted")){ + for(TranslatorFile file: fileList){ + if(file.getFileSeq().equals(1)){ + TranslatorFile temp = new TranslatorFile(); + BeanUtils.copyProperties(file, temp); + temp.setVersionNo(file.getVersionNo()+1); + translatorFileRepository.save(temp); + } + } + } + if(translator.getInfoShareFileState() != null + && !translator.getInfoShareFileState().equals("deleted")){ + for(TranslatorFile file: fileList){ + if(file.getFileSeq().equals(2)){ + TranslatorFile temp = new TranslatorFile(); + BeanUtils.copyProperties(file, temp); + temp.setVersionNo(file.getVersionNo()+1); + translatorFileRepository.save(temp); + } + } + } + } + private void saveUploadFiles(Integer translatorKey, Integer versionNo, List fileList){ + for(MultipartFile file : fileList){ + String saveName = UUID.randomUUID().toString(); + String path = locationPath+translatorPath; + saveFile(file, new File(path+File.separator+saveName)); + + String[] originalName = file.getOriginalFilename().split("\\|"); + int extnIdx = originalName[1].lastIndexOf("."); + TranslatorFile fileInfo = new TranslatorFile(); + fileInfo.setTranslatorKey(translatorKey); + fileInfo.setVersionNo(versionNo); + switch (originalName[0]){ + case "photo": fileInfo.setFileSeq(1); break; + case "infoShare": fileInfo.setFileSeq(2); break; + } + fileInfo.setOrigNm(originalName[1].substring(0, extnIdx)); + fileInfo.setFileExtn(originalName[1].substring(extnIdx+1)); + fileInfo.setConvNm(saveName); + fileInfo.setFileSize(calculationSize(file.getSize())); + fileInfo.setSavePath(path); + translatorFileRepository.save(fileInfo); + } + } public List selectTranslatorList(Translator translator) { return translatorMapper.selectTranslatorList(translator); @@ -46,11 +108,22 @@ public class TranslatorService { } public Translator selectTranslator(Integer translatorKey, Integer versionNo) { - return translatorRepository.findById(new TranslatorId(translatorKey, versionNo)).orElse(null); + Translator translator = translatorRepository.findById(new TranslatorId(translatorKey, versionNo)).orElse(null); + translator.setTranslatorFileList(translatorFileRepository.findByTranslatorKeyAndVersionNo(translatorKey, versionNo)); + return translator; } public List selectHistoryList(Integer translatorKey) { - return translatorRepository.findByTranslatorKeyOrderByVersionNoDesc(translatorKey); + List historyList = translatorRepository.findByTranslatorKeyOrderByVersionNoDesc(translatorKey); + List fileList = translatorFileRepository.findByTranslatorKey(translatorKey); + for(Translator history: historyList){ + for(TranslatorFile file: fileList){ + if(history.getVersionNo().equals(file.getVersionNo())){ + history.getTranslatorFileList().add(file); + } + } + } + return historyList; } public List selectCareerList(Integer translatorKey) { @@ -81,22 +154,6 @@ public class TranslatorService { return trKey; } - public List selectMaritimePoliceCareer(TranslatorCrr translatorCrr) { - translatorCrr.setHisGubun("Y"); - return translatorMapper.selectCareerList(translatorCrr); - } - - public List selectAnotherOrganizationCareer(TranslatorCrr translatorCrr) { - translatorCrr.setHisGubun("N"); - return translatorMapper.selectCareerList(translatorCrr); - } - - @Transactional - public int deleteCareer(TranslatorCrr translatorCrr) { - TranslatorCrr dbCareer = translatorCareerRepository.findByCareerSeqAndTranslatorKey(translatorCrr.getCareerSeq(),translatorCrr.getTranslatorKey()).orElse(null); - translatorCareerRepository.delete(dbCareer); - return translatorCrr.getTranslatorKey(); - } @Transactional public void deleteTranslatorInfo(int trKey) { @@ -104,6 +161,10 @@ public class TranslatorService { translatorRepository.deleteByTranslatorKey(trKey); } + public TranslatorFile selectTranslatorFile(Integer translatorKey, Integer versionNo, Integer fileSeq) { + return translatorFileRepository.findByTranslatorKeyAndVersionNoAndFileSeq(translatorKey, versionNo, fileSeq).orElse(null); + } + public List selectStatisticsLangCnt() { return translatorMapper.selectStatisticsLangCnt(); } @@ -115,5 +176,4 @@ public class TranslatorService { public List selectTranslatorListEx(Translator translator) { return translatorMapper.selectTranslatorListEx(translator); } - } diff --git a/src/main/java/com/dbnt/faisp/util/Utils.java b/src/main/java/com/dbnt/faisp/util/Utils.java index 26158dda..fbf1cbe8 100644 --- a/src/main/java/com/dbnt/faisp/util/Utils.java +++ b/src/main/java/com/dbnt/faisp/util/Utils.java @@ -4,6 +4,7 @@ package com.dbnt.faisp.util; import java.io.IOException; import java.io.PrintWriter; +import java.net.URLEncoder; import java.text.DecimalFormat; import java.time.format.DateTimeFormatter; import java.util.*; @@ -1095,4 +1096,59 @@ public class Utils { } return ""; } + + public static void setDisposition(String filename, HttpServletRequest request, HttpServletResponse response) throws IOException { + String browser = getBrowser(request); + + String dispositionPrefix = "attachment; filename="; + String encodedFilename = null; + + if (browser.equals("MSIE")) { + encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); + } else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지 + encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); + } else if (browser.equals("Firefox")) { + encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; + } else if (browser.equals("Opera")) { + encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; + } else if (browser.equals("Chrome")) { + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < filename.length(); i++) { + char c = filename.charAt(i); + if(c==','){ + sb.append(URLEncoder.encode(",", "UTF-8")); + } else if (c > '~') { + sb.append(URLEncoder.encode("" + c, "UTF-8")); + } else { + sb.append(c); + } + } + encodedFilename = sb.toString(); + } else { + throw new IOException("Not supported browser"); + } + + response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename); + + if ("Opera".equals(browser)) { + response.setContentType("application/octet-stream;charset=UTF-8"); + } + if(filename.contains("zip")){ + response.setContentType("application/zip"); + } + } + + private static String getBrowser(HttpServletRequest request) { + String header = request.getHeader("User-Agent"); + if (header.indexOf("MSIE") > -1) { + return "MSIE"; + } else if (header.indexOf("Trident") > -1) { // IE11 문자열 깨짐 방지 + return "Trident"; + } else if (header.indexOf("Chrome") > -1) { + return "Chrome"; + } else if (header.indexOf("Opera") > -1) { + return "Opera"; + } + return "Firefox"; + } } diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index 934d2dc9..ad6b9523 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -32,6 +32,7 @@ file.dir.activityCase=/activityCase file.dir.majorStatus=/majorStatus file.dir.monitoring=/monitoring file.dir.intelligenceNetwork=/intelligenceNetwork +file.dir.translator=/translator file.dir.affairTemp=/affairTemp diff --git a/src/main/resources/application-test1.properties b/src/main/resources/application-test1.properties index d370ccb9..83fcd93b 100644 --- a/src/main/resources/application-test1.properties +++ b/src/main/resources/application-test1.properties @@ -41,6 +41,7 @@ file.dir.activityCase=/activityCase file.dir.majorStatus=/majorStatus file.dir.monitoring=/monitoring file.dir.intelligenceNetwork=/intelligenceNetwork +file.dir.translator=/translator file.dir.affairTemp=/affairTemp diff --git a/src/main/resources/application-test2.properties b/src/main/resources/application-test2.properties index ed3a12b8..8c890b00 100644 --- a/src/main/resources/application-test2.properties +++ b/src/main/resources/application-test2.properties @@ -41,6 +41,7 @@ file.dir.activityCase=/activityCase file.dir.majorStatus=/majorStatus file.dir.monitoring=/monitoring file.dir.intelligenceNetwork=/intelligenceNetwork +file.dir.translator=/translator file.dir.affairTemp=/affairTemp diff --git a/src/main/resources/application-was1.properties b/src/main/resources/application-was1.properties index cfd37df1..fc281c1f 100644 --- a/src/main/resources/application-was1.properties +++ b/src/main/resources/application-was1.properties @@ -37,6 +37,7 @@ file.dir.activityCase=/activityCase file.dir.majorStatus=/majorStatus file.dir.monitoring=/monitoring file.dir.intelligenceNetwork=/intelligenceNetwork +file.dir.translator=/translator file.dir.affairTemp=/affairTemp diff --git a/src/main/resources/application-was2.properties b/src/main/resources/application-was2.properties index f2013b71..535792a8 100644 --- a/src/main/resources/application-was2.properties +++ b/src/main/resources/application-was2.properties @@ -37,6 +37,7 @@ file.dir.activityCase=/activityCase file.dir.majorStatus=/majorStatus file.dir.monitoring=/monitoring file.dir.intelligenceNetwork=/intelligenceNetwork +file.dir.translator=/translator file.dir.affairTemp=/affairTemp diff --git a/src/main/resources/static/js/faStatistics/fishingBoatMgt.js b/src/main/resources/static/js/faStatistics/fishingBoatMgt.js index a1a645b0..497b1812 100644 --- a/src/main/resources/static/js/faStatistics/fishingBoatMgt.js +++ b/src/main/resources/static/js/faStatistics/fishingBoatMgt.js @@ -230,14 +230,7 @@ $(document).on('click', '#captainPhoto', function (){ fileDownloadDiv.className="d-none" } }) -$(document).on('click', '.fileDownLink', function (){ - const target = $(this) - let url = "/file/fileDownload?" - url += "board="+target.attr("data-board"); - url += "&parentKey="+target.attr("data-parentkey"); - url += "&fileSeq="+target.attr("data-fileseq"); - window.open(encodeURI(url)); -}) + function getFishingBoatEditModal(cdsKey){ $.ajax({ url: '/faStatistics/fishingBoatEditModal', diff --git a/src/main/resources/static/js/translator/translator.js b/src/main/resources/static/js/translator/translator.js index 75e5cb81..1dc431b4 100644 --- a/src/main/resources/static/js/translator/translator.js +++ b/src/main/resources/static/js/translator/translator.js @@ -62,6 +62,14 @@ $(document).on('click', '#saveBtn,#updateBtn', function (){ const trInfoForm = $("#trInfoForm"); trInfoForm.find('select,input').removeAttr("disabled"); const formData = new FormData(trInfoForm[0]); + let file = $("#photoFile")[0].files[0]; + if(file !== undefined){ + formData.append('uploadFiles', file, "photo|"+file.name); + } + file = $("#infoShareFile")[0].files[0]; + if(file !== undefined) { + formData.append('uploadFiles', file, "infoShare|" + file.name); + } $.ajax({ type : 'POST', data : formData, @@ -112,16 +120,6 @@ $(document).on('click', '#approvalTab', function (){ document.getElementById('approvalTab').classList.add('active'); }) -$(document).on('change', '#trNny', function (){ - if($(this).val() === "NNY001"){ - $("#trVisa").attr("disabled", "disabled"); - $("#naturalization").removeAttr("disabled"); - }else{ - $("#trVisa").removeAttr("disabled"); - $("#naturalization").attr("disabled", "disabled"); - } -}); - $(document).on('change', '#eTrNny', function (){ if($(this).val() === "NNY001"){ $("#eTrVisa").attr("disabled", "disabled"); @@ -132,6 +130,16 @@ $(document).on('change', '#eTrNny', function (){ } }); +$(document).on('change', '#eInfoShareChk', function (){ + const infoShareFile = $("#infoShareFile") + if(this.checked){ + infoShareFile.removeAttr("disabled") + }else{ + infoShareFile.attr("disabled", "disabled"); + infoShareFile.val(""); + } +}) + $(document).on('click', '.addCareerBtn', function (){ const hisGubun = $(this).attr('data-hisgubun') $.ajax({ @@ -223,8 +231,28 @@ $(document).on('click', '.deleteCareerBtn', function (){ } }) +$(document).on('click', '.fileDownloadBtn', function (){ + const target = $(this) + let url = "/translator/translatorFileDownload?" + url += "translatorKey="+target.attr("data-translatorkey"); + url += "&versionNo="+target.attr("data-versionno"); + url += "&fileSeq="+target.attr("data-fileseq"); + window.open(encodeURI(url)); +}) + +$(document).on('click', '#deleteInfoShareFile', function (){ + $(this).hide() + $("#downloadInfoShareFile").hide(); + $("#infoShareFileState").val("deleted"); +}) +$(document).on('click', '#deletePhotoFile', function (){ + $(this).hide() + $("#downloadPhotoFile").hide(); + $("#photoFileState").val("deleted"); +}) + $(document).on('click', '#trDeleteBtn', function (){ - if(confirm("해임 하시겠습니까?")){ + if(confirm("삭제 하시겠습니까?")){ contentFade("in"); const trKey = Number($(".translatorKey").val()); $.ajax({ diff --git a/src/main/resources/templates/translator/translatorEditModal.html b/src/main/resources/templates/translator/translatorEditModal.html index a2fc2a82..8c21d98a 100644 --- a/src/main/resources/templates/translator/translatorEditModal.html +++ b/src/main/resources/templates/translator/translatorEditModal.html @@ -27,7 +27,7 @@
-
+
@@ -59,6 +59,21 @@
+ +
+ +
+ + + + + + + +
+
+
+ +
+ +
+ +
+ +
+ + + + + + + +
@@ -141,7 +175,7 @@
- +
diff --git a/src/main/resources/templates/translator/translatorHistory.html b/src/main/resources/templates/translator/translatorHistory.html index ee27cf1e..30e24185 100644 --- a/src/main/resources/templates/translator/translatorHistory.html +++ b/src/main/resources/templates/translator/translatorHistory.html @@ -15,6 +15,17 @@
+ + +
+
+
+ + + + +