통역인 현황 첨부파일 기능 추가.
parent
7ec8d0a5ca
commit
225a4d48f4
|
|
@ -56,6 +56,8 @@ public class BaseService {
|
||||||
protected String intelligenceNetworkPath;
|
protected String intelligenceNetworkPath;
|
||||||
@Value("${file.dir.affairTemp}")
|
@Value("${file.dir.affairTemp}")
|
||||||
protected String affairTempPath;
|
protected String affairTempPath;
|
||||||
|
@Value("${file.dir.translator}")
|
||||||
|
protected String translatorPath;
|
||||||
|
|
||||||
protected String calculationSize(double fileSize){
|
protected String calculationSize(double fileSize){
|
||||||
String[] units = {"bytes", "KB", "MB", "GB", "TB", "PB"};
|
String[] units = {"bytes", "KB", "MB", "GB", "TB", "PB"};
|
||||||
|
|
|
||||||
|
|
@ -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.boardInvestigation.service.IvsgtService;
|
||||||
import com.dbnt.faisp.main.ivsgtMgt.majorStatus.service.MajorStatusService;
|
import com.dbnt.faisp.main.ivsgtMgt.majorStatus.service.MajorStatusService;
|
||||||
import com.dbnt.faisp.main.publicBoard.service.PublicBoardService;
|
import com.dbnt.faisp.main.publicBoard.service.PublicBoardService;
|
||||||
|
import com.dbnt.faisp.util.Utils;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.core.io.FileSystemResource;
|
import org.springframework.core.io.FileSystemResource;
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
|
|
@ -114,7 +115,7 @@ public class FileController extends BaseService{
|
||||||
try {
|
try {
|
||||||
File file = new File(fileInfo.getSavePath(), fileInfo.getConvNm());
|
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));
|
in = new BufferedInputStream(new FileInputStream(file));
|
||||||
out = new BufferedOutputStream(response.getOutputStream());
|
out = new BufferedOutputStream(response.getOutputStream());
|
||||||
FileCopyUtils.copy(in, out);
|
FileCopyUtils.copy(in, out);
|
||||||
|
|
@ -190,7 +191,7 @@ public class FileController extends BaseService{
|
||||||
zout.close();
|
zout.close();
|
||||||
|
|
||||||
|
|
||||||
setDisposition(downloadFileName, request, response);
|
Utils.setDisposition(downloadFileName, request, response);
|
||||||
BufferedInputStream in = new BufferedInputStream(new FileInputStream(zipFile));
|
BufferedInputStream in = new BufferedInputStream(new FileInputStream(zipFile));
|
||||||
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
|
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
|
||||||
FileCopyUtils.copy(in, out);
|
FileCopyUtils.copy(in, out);
|
||||||
|
|
@ -260,58 +261,4 @@ public class FileController extends BaseService{
|
||||||
}
|
}
|
||||||
return downloadFile;
|
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";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -207,9 +207,9 @@ public class FipTargetController {
|
||||||
@GetMapping("/partInfoFileDownload")
|
@GetMapping("/partInfoFileDownload")
|
||||||
public void partInfoFileDownload(HttpServletRequest request,
|
public void partInfoFileDownload(HttpServletRequest request,
|
||||||
HttpServletResponse response,
|
HttpServletResponse response,
|
||||||
Integer fileSeq,
|
|
||||||
Integer piSeq,
|
Integer piSeq,
|
||||||
Integer versionNo) {
|
Integer versionNo,
|
||||||
|
Integer fileSeq) {
|
||||||
PartInfoFile downloadFile = fipTargetService.selectPartInfoFileDown(fileSeq, piSeq,versionNo);
|
PartInfoFile downloadFile = fipTargetService.selectPartInfoFileDown(fileSeq, piSeq,versionNo);
|
||||||
|
|
||||||
BufferedInputStream in;
|
BufferedInputStream in;
|
||||||
|
|
@ -217,7 +217,7 @@ public class FipTargetController {
|
||||||
try {
|
try {
|
||||||
File file = new File(downloadFile.getFilePath(), downloadFile.getConvNm());
|
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));
|
in = new BufferedInputStream(new FileInputStream(file));
|
||||||
out = new BufferedOutputStream(response.getOutputStream());
|
out = new BufferedOutputStream(response.getOutputStream());
|
||||||
FileCopyUtils.copy(in, out);
|
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")
|
@GetMapping("/partWorkList")
|
||||||
|
|
@ -395,7 +346,7 @@ public class FipTargetController {
|
||||||
try {
|
try {
|
||||||
File file = new File(downloadFile.getFilePath(), downloadFile.getConvNm());
|
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));
|
in = new BufferedInputStream(new FileInputStream(file));
|
||||||
out = new BufferedOutputStream(response.getOutputStream());
|
out = new BufferedOutputStream(response.getOutputStream());
|
||||||
FileCopyUtils.copy(in, out);
|
FileCopyUtils.copy(in, out);
|
||||||
|
|
@ -492,7 +443,7 @@ public class FipTargetController {
|
||||||
try {
|
try {
|
||||||
File file = new File(downloadFile.getFilePath(), downloadFile.getConvNm());
|
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));
|
in = new BufferedInputStream(new FileInputStream(file));
|
||||||
out = new BufferedOutputStream(response.getOutputStream());
|
out = new BufferedOutputStream(response.getOutputStream());
|
||||||
FileCopyUtils.copy(in, out);
|
FileCopyUtils.copy(in, out);
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package com.dbnt.faisp.main.translator;
|
||||||
import com.dbnt.faisp.main.authMgt.service.AuthMgtService;
|
import com.dbnt.faisp.main.authMgt.service.AuthMgtService;
|
||||||
import com.dbnt.faisp.main.translator.model.Translator;
|
import com.dbnt.faisp.main.translator.model.Translator;
|
||||||
import com.dbnt.faisp.main.translator.model.TranslatorCrr;
|
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.translator.service.TranslatorService;
|
||||||
import com.dbnt.faisp.main.userInfo.model.UserInfo;
|
import com.dbnt.faisp.main.userInfo.model.UserInfo;
|
||||||
import com.dbnt.faisp.util.ParamMap;
|
import com.dbnt.faisp.util.ParamMap;
|
||||||
|
|
@ -10,15 +11,18 @@ import com.dbnt.faisp.util.Utils;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.*;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
||||||
|
import org.springframework.util.FileCopyUtils;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -32,14 +36,10 @@ public class TranslatorController {
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("/info")
|
@GetMapping("/info")
|
||||||
public ModelAndView translatorInfo(@AuthenticationPrincipal UserInfo loginUser,Translator translator,HttpServletResponse response) {
|
public ModelAndView translatorInfo(@AuthenticationPrincipal UserInfo loginUser,
|
||||||
ModelAndView mav;
|
Translator translator,
|
||||||
if (translator.getDashboardFlag()){
|
HttpServletResponse response) {
|
||||||
mav = new ModelAndView("translator/translatorDashboard");
|
ModelAndView mav = new ModelAndView("translator/translator");
|
||||||
translator.setRowCnt(5);
|
|
||||||
}else{
|
|
||||||
mav = new ModelAndView("translator/translator");
|
|
||||||
}
|
|
||||||
translator.setDownOrganCdList(loginUser.getDownOrganCdList());
|
translator.setDownOrganCdList(loginUser.getDownOrganCdList());
|
||||||
//엑셀다운
|
//엑셀다운
|
||||||
if(translator.getExcel() != null && translator.getExcel().equals("Y")){
|
if(translator.getExcel() != null && translator.getExcel().equals("Y")){
|
||||||
|
|
@ -72,7 +72,10 @@ public class TranslatorController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/saveTranslatorInfo")
|
@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.setWrtUserSeq(loginUser.getUserSeq());
|
||||||
translator.setWrtNm(loginUser.getUserNm());
|
translator.setWrtNm(loginUser.getUserNm());
|
||||||
translator.setWrtOrgan(loginUser.getOgCd());
|
translator.setWrtOrgan(loginUser.getOgCd());
|
||||||
|
|
@ -139,18 +142,35 @@ public class TranslatorController {
|
||||||
return trKey;
|
return trKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/deleteCareer")
|
|
||||||
@ResponseBody
|
|
||||||
public int deleteCareer(@RequestBody TranslatorCrr translatorCrr) {
|
|
||||||
int trKey = translatorSevice.deleteCareer(translatorCrr);
|
|
||||||
return trKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/deleteTranslatorInfo")
|
@PostMapping("/deleteTranslatorInfo")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public void deleteTranslatorInfo(@RequestBody int trKey) {
|
public void deleteTranslatorInfo(@RequestBody int trKey) {
|
||||||
translatorSevice.deleteTranslatorInfo(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")
|
@GetMapping("/statisticsLang")
|
||||||
public ModelAndView statisticsLang() {
|
public ModelAndView statisticsLang() {
|
||||||
|
|
|
||||||
|
|
@ -10,13 +10,16 @@ import lombok.Setter;
|
||||||
import org.hibernate.annotations.DynamicInsert;
|
import org.hibernate.annotations.DynamicInsert;
|
||||||
import org.hibernate.annotations.DynamicUpdate;
|
import org.hibernate.annotations.DynamicUpdate;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
|
|
@ -77,12 +80,23 @@ public class Translator extends BaseModel implements Serializable{
|
||||||
private LocalDateTime wrtDt;
|
private LocalDateTime wrtDt;
|
||||||
@Column(name = "naturalization")
|
@Column(name = "naturalization")
|
||||||
private String naturalization;
|
private String naturalization;
|
||||||
|
@Column(name = "info_share_chk")
|
||||||
|
private String infoShareChk;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
private List<TranslatorFile> translatorFileList = new ArrayList<>();
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
private String photoFileState;
|
||||||
|
@Transient
|
||||||
|
private String infoShareFileState;
|
||||||
|
|
||||||
@Transient
|
@Transient
|
||||||
private String excel;
|
private String excel;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
private List<MultipartFile> multipartFileList;
|
||||||
|
|
||||||
@Embeddable
|
@Embeddable
|
||||||
@Data
|
@Data
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
|
@ -93,24 +107,4 @@ public class Translator extends BaseModel implements Serializable{
|
||||||
private Integer versionNo;
|
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 + "]";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,13 @@ package com.dbnt.faisp.main.translator.repository;
|
||||||
import com.dbnt.faisp.main.translator.model.TranslatorFile;
|
import com.dbnt.faisp.main.translator.model.TranslatorFile;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
|
||||||
public interface TranslatorFileRepository extends JpaRepository<TranslatorFile, TranslatorFile.TranslatorFileId> {
|
public interface TranslatorFileRepository extends JpaRepository<TranslatorFile, TranslatorFile.TranslatorFileId> {
|
||||||
|
|
||||||
|
List<TranslatorFile> findByTranslatorKey(Integer translatorKey);
|
||||||
|
List<TranslatorFile> findByTranslatorKeyAndVersionNo(Integer translatorKey, Integer versionNo);
|
||||||
|
Optional<TranslatorFile> findByTranslatorKeyAndVersionNoAndFileSeq(Integer translatorKey, Integer versionNo, Integer fileSeq);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,35 @@
|
||||||
package com.dbnt.faisp.main.translator.service;
|
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.mapper.TranslatorMapper;
|
||||||
import com.dbnt.faisp.main.translator.model.Translator;
|
import com.dbnt.faisp.main.translator.model.Translator;
|
||||||
import com.dbnt.faisp.main.translator.model.Translator.TranslatorId;
|
import com.dbnt.faisp.main.translator.model.Translator.TranslatorId;
|
||||||
import com.dbnt.faisp.main.translator.model.TranslatorCrr;
|
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.TranslatorCareerRepository;
|
||||||
|
import com.dbnt.faisp.main.translator.repository.TranslatorFileRepository;
|
||||||
import com.dbnt.faisp.main.translator.repository.TranslatorRepository;
|
import com.dbnt.faisp.main.translator.repository.TranslatorRepository;
|
||||||
import com.dbnt.faisp.util.ParamMap;
|
import com.dbnt.faisp.util.ParamMap;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class TranslatorService {
|
public class TranslatorService extends BaseService {
|
||||||
|
|
||||||
private final TranslatorRepository translatorRepository;
|
private final TranslatorRepository translatorRepository;
|
||||||
private final TranslatorCareerRepository translatorCareerRepository;
|
private final TranslatorCareerRepository translatorCareerRepository;
|
||||||
|
private final TranslatorFileRepository translatorFileRepository;
|
||||||
private final TranslatorMapper translatorMapper;
|
private final TranslatorMapper translatorMapper;
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
|
|
@ -35,7 +42,62 @@ public class TranslatorService {
|
||||||
translator.setVersionNo(translator.getVersionNo()+1);
|
translator.setVersionNo(translator.getVersionNo()+1);
|
||||||
}
|
}
|
||||||
translatorRepository.save(translator);
|
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<TranslatorFile> 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<MultipartFile> 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<Translator> selectTranslatorList(Translator translator) {
|
public List<Translator> selectTranslatorList(Translator translator) {
|
||||||
return translatorMapper.selectTranslatorList(translator);
|
return translatorMapper.selectTranslatorList(translator);
|
||||||
|
|
@ -46,11 +108,22 @@ public class TranslatorService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Translator selectTranslator(Integer translatorKey, Integer versionNo) {
|
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<Translator> selectHistoryList(Integer translatorKey) {
|
public List<Translator> selectHistoryList(Integer translatorKey) {
|
||||||
return translatorRepository.findByTranslatorKeyOrderByVersionNoDesc(translatorKey);
|
List<Translator> historyList = translatorRepository.findByTranslatorKeyOrderByVersionNoDesc(translatorKey);
|
||||||
|
List<TranslatorFile> 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<TranslatorCrr> selectCareerList(Integer translatorKey) {
|
public List<TranslatorCrr> selectCareerList(Integer translatorKey) {
|
||||||
|
|
@ -81,22 +154,6 @@ public class TranslatorService {
|
||||||
return trKey;
|
return trKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<TranslatorCrr> selectMaritimePoliceCareer(TranslatorCrr translatorCrr) {
|
|
||||||
translatorCrr.setHisGubun("Y");
|
|
||||||
return translatorMapper.selectCareerList(translatorCrr);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<TranslatorCrr> 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
|
@Transactional
|
||||||
public void deleteTranslatorInfo(int trKey) {
|
public void deleteTranslatorInfo(int trKey) {
|
||||||
|
|
@ -104,6 +161,10 @@ public class TranslatorService {
|
||||||
translatorRepository.deleteByTranslatorKey(trKey);
|
translatorRepository.deleteByTranslatorKey(trKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TranslatorFile selectTranslatorFile(Integer translatorKey, Integer versionNo, Integer fileSeq) {
|
||||||
|
return translatorFileRepository.findByTranslatorKeyAndVersionNoAndFileSeq(translatorKey, versionNo, fileSeq).orElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
public List<ParamMap> selectStatisticsLangCnt() {
|
public List<ParamMap> selectStatisticsLangCnt() {
|
||||||
return translatorMapper.selectStatisticsLangCnt();
|
return translatorMapper.selectStatisticsLangCnt();
|
||||||
}
|
}
|
||||||
|
|
@ -115,5 +176,4 @@ public class TranslatorService {
|
||||||
public List<ParamMap> selectTranslatorListEx(Translator translator) {
|
public List<ParamMap> selectTranslatorListEx(Translator translator) {
|
||||||
return translatorMapper.selectTranslatorListEx(translator);
|
return translatorMapper.selectTranslatorListEx(translator);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ package com.dbnt.faisp.util;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
|
import java.net.URLEncoder;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
@ -1095,4 +1096,59 @@ public class Utils {
|
||||||
}
|
}
|
||||||
return "";
|
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";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ file.dir.activityCase=/activityCase
|
||||||
file.dir.majorStatus=/majorStatus
|
file.dir.majorStatus=/majorStatus
|
||||||
file.dir.monitoring=/monitoring
|
file.dir.monitoring=/monitoring
|
||||||
file.dir.intelligenceNetwork=/intelligenceNetwork
|
file.dir.intelligenceNetwork=/intelligenceNetwork
|
||||||
|
file.dir.translator=/translator
|
||||||
|
|
||||||
file.dir.affairTemp=/affairTemp
|
file.dir.affairTemp=/affairTemp
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ file.dir.activityCase=/activityCase
|
||||||
file.dir.majorStatus=/majorStatus
|
file.dir.majorStatus=/majorStatus
|
||||||
file.dir.monitoring=/monitoring
|
file.dir.monitoring=/monitoring
|
||||||
file.dir.intelligenceNetwork=/intelligenceNetwork
|
file.dir.intelligenceNetwork=/intelligenceNetwork
|
||||||
|
file.dir.translator=/translator
|
||||||
|
|
||||||
file.dir.affairTemp=/affairTemp
|
file.dir.affairTemp=/affairTemp
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ file.dir.activityCase=/activityCase
|
||||||
file.dir.majorStatus=/majorStatus
|
file.dir.majorStatus=/majorStatus
|
||||||
file.dir.monitoring=/monitoring
|
file.dir.monitoring=/monitoring
|
||||||
file.dir.intelligenceNetwork=/intelligenceNetwork
|
file.dir.intelligenceNetwork=/intelligenceNetwork
|
||||||
|
file.dir.translator=/translator
|
||||||
|
|
||||||
file.dir.affairTemp=/affairTemp
|
file.dir.affairTemp=/affairTemp
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ file.dir.activityCase=/activityCase
|
||||||
file.dir.majorStatus=/majorStatus
|
file.dir.majorStatus=/majorStatus
|
||||||
file.dir.monitoring=/monitoring
|
file.dir.monitoring=/monitoring
|
||||||
file.dir.intelligenceNetwork=/intelligenceNetwork
|
file.dir.intelligenceNetwork=/intelligenceNetwork
|
||||||
|
file.dir.translator=/translator
|
||||||
|
|
||||||
file.dir.affairTemp=/affairTemp
|
file.dir.affairTemp=/affairTemp
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ file.dir.activityCase=/activityCase
|
||||||
file.dir.majorStatus=/majorStatus
|
file.dir.majorStatus=/majorStatus
|
||||||
file.dir.monitoring=/monitoring
|
file.dir.monitoring=/monitoring
|
||||||
file.dir.intelligenceNetwork=/intelligenceNetwork
|
file.dir.intelligenceNetwork=/intelligenceNetwork
|
||||||
|
file.dir.translator=/translator
|
||||||
|
|
||||||
file.dir.affairTemp=/affairTemp
|
file.dir.affairTemp=/affairTemp
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -230,14 +230,7 @@ $(document).on('click', '#captainPhoto', function (){
|
||||||
fileDownloadDiv.className="d-none"
|
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){
|
function getFishingBoatEditModal(cdsKey){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/faStatistics/fishingBoatEditModal',
|
url: '/faStatistics/fishingBoatEditModal',
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,14 @@ $(document).on('click', '#saveBtn,#updateBtn', function (){
|
||||||
const trInfoForm = $("#trInfoForm");
|
const trInfoForm = $("#trInfoForm");
|
||||||
trInfoForm.find('select,input').removeAttr("disabled");
|
trInfoForm.find('select,input').removeAttr("disabled");
|
||||||
const formData = new FormData(trInfoForm[0]);
|
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({
|
$.ajax({
|
||||||
type : 'POST',
|
type : 'POST',
|
||||||
data : formData,
|
data : formData,
|
||||||
|
|
@ -112,16 +120,6 @@ $(document).on('click', '#approvalTab', function (){
|
||||||
document.getElementById('approvalTab').classList.add('active');
|
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 (){
|
$(document).on('change', '#eTrNny', function (){
|
||||||
if($(this).val() === "NNY001"){
|
if($(this).val() === "NNY001"){
|
||||||
$("#eTrVisa").attr("disabled", "disabled");
|
$("#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 (){
|
$(document).on('click', '.addCareerBtn', function (){
|
||||||
const hisGubun = $(this).attr('data-hisgubun')
|
const hisGubun = $(this).attr('data-hisgubun')
|
||||||
$.ajax({
|
$.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 (){
|
$(document).on('click', '#trDeleteBtn', function (){
|
||||||
if(confirm("해임 하시겠습니까?")){
|
if(confirm("삭제 하시겠습니까?")){
|
||||||
contentFade("in");
|
contentFade("in");
|
||||||
const trKey = Number($(".translatorKey").val());
|
const trKey = Number($(".translatorKey").val());
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
<input type="hidden" class="versionNo" name="versionNo" th:value="${trInfo.versionNo}"/>
|
<input type="hidden" class="versionNo" name="versionNo" th:value="${trInfo.versionNo}"/>
|
||||||
<br>
|
<br>
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-8">
|
<div class="col-10">
|
||||||
<div class="row mb-1">
|
<div class="row mb-1">
|
||||||
<label for="eOgdp1" class="col-sm-1 col-form-label-sm text-center">관서</label>
|
<label for="eOgdp1" class="col-sm-1 col-form-label-sm text-center">관서</label>
|
||||||
<div class="col-sm-3">
|
<div class="col-sm-3">
|
||||||
|
|
@ -59,6 +59,21 @@
|
||||||
<div class="col-sm-3">
|
<div class="col-sm-3">
|
||||||
<input type="text" class="form-control" id="eTrEname" name="trName" th:value="${trInfo.trName}">
|
<input type="text" class="form-control" id="eTrEname" name="trName" th:value="${trInfo.trName}">
|
||||||
</div>
|
</div>
|
||||||
|
<label for="viewAptDt" class="col-sm-1 col-form-label-sm text-center">사진</label>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<input type="file" class="form-control" id="photoFile">
|
||||||
|
</div>
|
||||||
|
<th:block th:each="file:${trInfo.translatorFileList}">
|
||||||
|
<th:block th:if="${file.fileSeq eq 1}">
|
||||||
|
<input type="hidden" name="photoFileState" id="photoFileState">
|
||||||
|
<input type="button" class="btn btn-outline-primary col-auto mx-1"
|
||||||
|
id="downloadPhotoFile" value="다운로드"
|
||||||
|
th:data-translatorkey="${file.translatorKey}" th:data-versionno="${file.versionNo}" th:data-fileseq="${file.fileSeq}">
|
||||||
|
<input type="button" class="btn btn-outline-danger col-auto mx-1" id="deletePhotoFile" value="삭제">
|
||||||
|
</th:block>
|
||||||
|
</th:block>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-1">
|
||||||
<label for="eTrSex" class="col-sm-1 col-form-label-sm text-center">성별</label>
|
<label for="eTrSex" class="col-sm-1 col-form-label-sm text-center">성별</label>
|
||||||
<div class="col-sm-3">
|
<div class="col-sm-3">
|
||||||
<select class="form-select" id="eTrSex" name="trSex">
|
<select class="form-select" id="eTrSex" name="trSex">
|
||||||
|
|
@ -134,6 +149,25 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="mb-2 row">
|
||||||
|
<label for="viewAptDt" class="col-sm-2 col-form-label-sm text-center">개인정보 동의 여부</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<input type="checkbox" class="mt-2" id="eInfoShareChk" name="infoShareChk" th:checked="${trInfo.infoShareChk eq 'T'}" value="T">
|
||||||
|
</div>
|
||||||
|
<label for="viewAptDt" class="col-sm-1 col-form-label-sm text-center">동의서</label>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<input type="file" class="form-control" id="infoShareFile" th:disabled="${trInfo.infoShareChk ne 'T'}">
|
||||||
|
</div>
|
||||||
|
<th:block th:each="file:${trInfo.translatorFileList}">
|
||||||
|
<th:block th:if="${file.fileSeq eq 2}">
|
||||||
|
<input type="hidden" name="infoShareFileState" id="infoShareFileState">
|
||||||
|
<input type="button" class="btn btn-outline-primary col-auto mx-1 fileDownloadBtn"
|
||||||
|
id="downloadInfoShareFile" value="다운로드"
|
||||||
|
th:data-translatorkey="${file.translatorKey}" th:data-versionno="${file.versionNo}" th:data-fileseq="${file.fileSeq}">
|
||||||
|
<input type="button" class="btn btn-outline-danger col-auto mx-1" id="deleteInfoShareFile" value="삭제">
|
||||||
|
</th:block>
|
||||||
|
</th:block>
|
||||||
|
</div>
|
||||||
<div class="mb-2 row">
|
<div class="mb-2 row">
|
||||||
<label for="eRemark" class="col-sm-1 col-form-label-sm text-center">비고</label>
|
<label for="eRemark" class="col-sm-1 col-form-label-sm text-center">비고</label>
|
||||||
<div class="col-sm-11">
|
<div class="col-sm-11">
|
||||||
|
|
@ -141,7 +175,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row justify-content-end">
|
<div class="row justify-content-end">
|
||||||
<button type="button" class="btn btn-secondary col-auto mx-1" id="trDeleteBtn" th:if="${accessAuth eq 'ACC003' or wrtUserSeq eq userSeq}">삭제</button>
|
<button type="button" class="btn btn-danger col-auto mx-1" id="trDeleteBtn" th:if="${accessAuth eq 'ACC003' or wrtUserSeq eq userSeq}">삭제</button>
|
||||||
<button type="button" class="btn btn-warning col-auto mx-1" id="updateBtn" th:if="${accessAuth eq 'ACC003' or wrtUserSeq eq userSeq}">수정</button>
|
<button type="button" class="btn btn-warning col-auto mx-1" id="updateBtn" th:if="${accessAuth eq 'ACC003' or wrtUserSeq eq userSeq}">수정</button>
|
||||||
<button type="button" class="btn btn-primary col-auto mx-1" id="saveBtn" th:if="${accessAuth ne 'ACC001' and trInfo.translatorKey eq null}">저장</button>
|
<button type="button" class="btn btn-primary col-auto mx-1" id="saveBtn" th:if="${accessAuth ne 'ACC001' and trInfo.translatorKey eq null}">저장</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,17 @@
|
||||||
<div class="row mb-1">
|
<div class="row mb-1">
|
||||||
<label class="col-sm-1 col-form-label-sm text-center">성명</label>
|
<label class="col-sm-1 col-form-label-sm text-center">성명</label>
|
||||||
<label class="col-sm-3 col-form-label-sm text-start" th:text="${trInfo.trName}"></label>
|
<label class="col-sm-3 col-form-label-sm text-start" th:text="${trInfo.trName}"></label>
|
||||||
|
<label class="col-sm-1 col-form-label-sm text-center">사진</label>
|
||||||
|
<label class="col-sm-7 col-form-label-sm text-start">
|
||||||
|
<th:block th:each="file:${trInfo.translatorFileList}">
|
||||||
|
<th:block th:if="${file.fileSeq eq 1}">
|
||||||
|
<a href="#" class="fileDownloadBtn" th:text="${#strings.concat(file.origNm, '.', file.fileExtn)}"
|
||||||
|
th:data-translatorkey="${file.translatorKey}" th:data-versionno="${file.versionNo}" th:data-fileseq="${file.FileSeq}"></a>
|
||||||
|
</th:block>
|
||||||
|
</th:block>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-1">
|
||||||
<label class="col-sm-1 col-form-label-sm text-center">성별</label>
|
<label class="col-sm-1 col-form-label-sm text-center">성별</label>
|
||||||
<label class="col-sm-3 col-form-label-sm text-start">
|
<label class="col-sm-3 col-form-label-sm text-start">
|
||||||
<th:block th:each="code:${session.commonCode.get('SEX')}">
|
<th:block th:each="code:${session.commonCode.get('SEX')}">
|
||||||
|
|
@ -58,6 +69,19 @@
|
||||||
<label class="col-sm-1 col-form-label-sm text-center">해촉</label>
|
<label class="col-sm-1 col-form-label-sm text-center">해촉</label>
|
||||||
<label class="col-sm-3 col-form-label-sm text-start" th:text="${trInfo.dmlYn}"></label>
|
<label class="col-sm-3 col-form-label-sm text-start" th:text="${trInfo.dmlYn}"></label>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row mb-1">
|
||||||
|
<label class="col-sm-2 col-form-label-sm text-center">개인정보 동의 여부</label>
|
||||||
|
<label class="col-sm-2 col-form-label-sm text-start" th:text="${trInfo.infoShareChk eq 'T'?'O':'X'}"></label>
|
||||||
|
<label class="col-sm-1 col-form-label-sm text-center">동의서</label>
|
||||||
|
<label class="col-sm-7 col-form-label-sm text-start">
|
||||||
|
<th:block th:each="file:${trInfo.translatorFileList}">
|
||||||
|
<th:block th:if="${file.fileSeq eq 2}">
|
||||||
|
<a href="#" class="fileDownloadBtn" th:text="${#strings.concat(file.origNm, '.', file.fileExtn)}"
|
||||||
|
th:data-translatorkey="${file.translatorKey}" th:data-versionno="${file.versionNo}" th:data-fileseq="${file.FileSeq}"></a>
|
||||||
|
</th:block>
|
||||||
|
</th:block>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
<div class="row mb-1">
|
<div class="row mb-1">
|
||||||
<label class="col-sm-1 col-form-label-sm text-center">비고</label>
|
<label class="col-sm-1 col-form-label-sm text-center">비고</label>
|
||||||
<label class="col-sm-11 col-form-label-sm text-start" th:text="${trInfo.remark}"></label>
|
<label class="col-sm-11 col-form-label-sm text-start" th:text="${trInfo.remark}"></label>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue