File name
Commit message
Commit date
File name
Commit message
Commit date
2024-09-10
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
2024-09-10
2024-09-10
File name
Commit message
Commit date
package itn.let.mjo.cert.web;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.HandlerMapping;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import itn.com.cmm.EgovMessageSource;
import itn.com.cmm.LoginVO;
import itn.com.cmm.service.EgovFileMngService;
import itn.com.cmm.service.FileVO;
import itn.com.cmm.util.RedirectUrlMaker;
import itn.let.mjo.cert.service.CertService;
import itn.let.mjo.cert.service.CertVO;
@Controller
public class CertController {
@Resource(name = "certService")
private CertService certService;
/** EgovMessageSource */
@Resource(name="egovMessageSource")
EgovMessageSource egovMessageSource;
@Resource(name = "EgovFileMngService")
private EgovFileMngService fileService;
/**
*
* (관리자)인증서류 목록을 조회한다. (pageing)
* /uss/ion/cert/CertSentList.do //발신번호 인증서류
* /uss/ion/cert/CertEtcList.do //기타인증 서류
* @param userSearchVO 검색조건정보
* @param model 화면모델
* @return cmm/uss/umt/EgovUserManage
* @throws Exception
*/
@RequestMapping({"/uss/ion/cert/CertSentList.do", "/uss/ion/cert/CertEtcList.do"})
public String certEtcList(@ModelAttribute("searchVO") CertVO certVO,
ModelMap model,
HttpServletRequest request,
HttpSession session) throws Exception {
if(certVO.getPageUnit() != 10) {
certVO.setPageUnit(certVO.getPageUnit());
}
/** pageing */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(certVO.getPageIndex());
paginationInfo.setRecordCountPerPage(certVO.getPageUnit());
paginationInfo.setPageSize(certVO.getPageSize());
certVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
certVO.setLastIndex(paginationInfo.getLastRecordIndex());
certVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
//userSearchVO.setAdminYn("Y");
if("".equals(certVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
certVO.setSearchSortCnd("certId");
certVO.setSearchSortOrd("desc");
}
List<CertVO> resultList = new ArrayList<CertVO>();
String pattern = (String) request.getAttribute(
HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ;
if(pattern.equals("/uss/ion/cert/CertSentList.do")){ //발신인증서류
certVO.setCertType("01");
}
if(pattern.equals("/uss/ion/cert/CertEtcList.do")){ //기타인증서류
certVO.setCertType("09");
}
resultList = certService.selectCertEtcList(certVO);
for(CertVO tempCertVO : resultList) { //첨부파일 id 와 확장자 추출
if(null != tempCertVO.getAtchFileIds()) {
if(tempCertVO.getAtchFileIds().contains("^")) {
//첨부파일 2개 이상 EX)FILE_000000000011221^FILE_000000000011221|test.jpg^test.PNG
if(tempCertVO.getAtchFileIds().split("\\|").length > 1) { //형식 맞을때
if((tempCertVO.getAtchFileIds().split("\\|")[0]).split("\\^").length > 1) { //형식체크
List<String> tempFileSn = new ArrayList<>();
for(int i = 0 ; i < (tempCertVO.getAtchFileIds().split("\\|")[0]).split("\\^").length ; i++){
tempFileSn.add((tempCertVO.getAtchFileIds().split("\\|")[0]).split("\\^")[i]) ;
}
List<String> tempOrignlFileNm = new ArrayList<>();
for(int i = 0 ; i < (tempCertVO.getAtchFileIds().split("\\|")[1]).split("\\^").length ; i++){
tempOrignlFileNm.add((tempCertVO.getAtchFileIds().split("\\|")[1]).split("\\^")[i].toUpperCase()) ;
}
tempCertVO.setFileSnList(tempFileSn);
tempCertVO.setOrignlFileNmList(tempOrignlFileNm);
}
}
}else { //첨부파일 하나일때
if(tempCertVO.getAtchFileIds().split("\\|").length > 1) { //형식 맞을때
List<String> tempFileSn = new ArrayList<>();
List<String> tempOrignlFileNm = new ArrayList<>();
tempFileSn.add(tempCertVO.getAtchFileIds().split("\\|")[0]);
tempOrignlFileNm.add(tempCertVO.getAtchFileIds().split("\\|")[1].toUpperCase());
tempCertVO.setFileSnList(tempFileSn);
tempCertVO.setOrignlFileNmList(tempOrignlFileNm);
}
}
}
}
model.addAttribute("resultList", resultList);
paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((CertVO)resultList.get(0)).getTotCnt() : 0);
model.addAttribute("paginationInfo", paginationInfo);
/*
String command = "ls -al";
shellCmd(command);
execute("ipconfig");
execute("ps ef | grep java");
*/
if(pattern.equals("/uss/ion/cert/CertSentList.do")){ //발신인증서류
return "uss/ion/cert/CertSentList";
}
return "uss/ion/cert/CertEtcList";
}
public void execute(String cmd) {
Process process = null;
Runtime runtime = Runtime.getRuntime();
StringBuffer successOutput = new StringBuffer(); // 성공 스트링 버퍼
StringBuffer errorOutput = new StringBuffer(); // 오류 스트링 버퍼
BufferedReader successBufferReader = null; // 성공 버퍼
BufferedReader errorBufferReader = null; // 오류 버퍼
String msg = null; // 메시지
List<String> cmdList = new ArrayList<String>();
// 운영체제 구분 (window, window 가 아니면 무조건 linux 로 판단)
if (System.getProperty("os.name").indexOf("Windows") > -1) {
cmdList.add("cmd");
cmdList.add("/c");
} else {
cmdList.add("/bin/sh");
cmdList.add("-c");
}
// 명령어 셋팅
cmdList.add(cmd);
String[] array = cmdList.toArray(new String[cmdList.size()]);
try {
// 명령어 실행
process = runtime.exec(array);
// shell 실행이 정상 동작했을 경우
successBufferReader = new BufferedReader(new InputStreamReader(process.getInputStream(), "EUC-KR"));
while ((msg = successBufferReader.readLine()) != null) {
successOutput.append(msg + System.getProperty("line.separator"));
}
// shell 실행시 에러가 발생했을 경우
errorBufferReader = new BufferedReader(new InputStreamReader(process.getErrorStream(), "EUC-KR"));
while ((msg = errorBufferReader.readLine()) != null) {
errorOutput.append(msg + System.getProperty("line.separator"));
}
// 프로세스의 수행이 끝날때까지 대기
process.waitFor();
// shell 실행이 정상 종료되었을 경우
if (process.exitValue() == 0) {
System.out.println("성공");
System.out.println(successOutput.toString());
} else {
// shell 실행이 비정상 종료되었을 경우
System.out.println("비정상 종료");
System.out.println(successOutput.toString());
}
// shell 실행시 에러가 발생
if ("".equals(errorOutput.toString())) {
// shell 실행이 비정상 종료되었을 경우
System.out.println("오류");
System.out.println(successOutput.toString());
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
try {
process.destroy();
if (successBufferReader != null) successBufferReader.close();
if (errorBufferReader != null) errorBufferReader.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
public void shellCmd(String command) throws Exception{
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(command);
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while((line = br.readLine()) != null) {
System.out.println(line);
}
}
/**
* 기타서류관리 등록/수정
* @param searchVO
* @param model
* @return "/uss/ion/cert/CertSentModify.do"
* @throws Exception
*/
@RequestMapping(value = {"/uss/ion/cert/CertSentModify.do" , "/uss/ion/cert/CertEtcModify.do"})
public String CashModify(
@ModelAttribute("searchVO") CertVO searchVO,
HttpServletRequest request ,
Model model) throws Exception {
String pattern = (String) request.getAttribute(
HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ;
List<CertVO> certFileList = new ArrayList<CertVO>();
if(pattern.equals("/uss/ion/cert/CertSentModify.do")){ //발신인증서류
searchVO.setCertEtcType("01");
}
if(pattern.equals("/uss/ion/cert/CertEtcModify.do")){ //기타인증서류
searchVO.setCertEtcType("09");
}
if(null != searchVO.getCertId() && !"".equals(searchVO.getCertId())) { //수정
certFileList = certService.selectCertFileList(searchVO);
}
model.addAttribute("certFileList", certFileList); //CertFile파일정보
List<CertVO> fileList = new ArrayList<>();
//첨부파일정보
if(certFileList !=null){
if(1==certFileList.size() && ((CertVO)certFileList.get(0)).getOrignlFileNm() == null) {
}else {
fileList.addAll(certFileList);
}
}
model.addAttribute("fileList", fileList);
model.addAttribute("searchVO", searchVO);
if(pattern.equals("/uss/ion/cert/CertSentModify.do")){ //발신번호 인증
searchVO.setCertEtcType("01");
return "/uss/ion/cert/CertSentModify";
}
return "/uss/ion/cert/CertEtcModify";
}
/*기타서류 삭제 */
@RequestMapping({"/uss/ion/cert/CertEtcDelete.do" , "/uss/ion/cert/CertSentDelete.do"})
public String deleteCertEtc(@RequestParam("del") String[] del,
RedirectAttributes redirectAttributes ,
HttpServletRequest request ,
Model model) throws Exception {
CertVO tempCertVO = new CertVO();
boolean delete = false;
List<CertVO> certFileList = new ArrayList<>();
String whFile = "";
for(String id:del) {
tempCertVO.setCertId(id);
List<FileVO> fileDelList = new ArrayList<>(); //파일테이블 삭제 조회
fileDelList = certService.selectCertDetailFileList(tempCertVO);
for(FileVO delCertFileVo : fileDelList){
whFile = delCertFileVo.getWhFile() ;
if(whFile !=null){
File delFile = new File(whFile);
delete = delFile.delete();
}
}
fileService.deleteFileInfs(fileDelList);
certService.deleteCertEtc(tempCertVO);
}
redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete"));
String pattern = (String) request.getAttribute(
HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ;
if(pattern.equals("/uss/ion/cert/CertSentDelete.do")){ //발신번호 인증
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/cert/CertSentList.do");
return redirectUrlMaker.getRedirectUrl();
}
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/cert/CertEtcList.do");
return redirectUrlMaker.getRedirectUrl();
}
}