2022-12-22 17:14 재 단권화 , 단권화 스케쥴러 수정

This commit is contained in:
myname 2022-12-22 17:15:16 +09:00
parent 420e0ee2a0
commit a452a9a32a
5 changed files with 274 additions and 24 deletions

View File

@ -24,9 +24,11 @@ import kcc.com.cmm.service.EgovFileMngService;
import kcc.com.cmm.service.InnorixFileService;
import kcc.com.cmm.util.StreamDocsUtil;
import kcc.com.utl.fcc.service.EgovStringUtil;
import kcc.kccadr.accdnt.ars.service.AdjstReqStatusService;
import kcc.kccadr.adjPgrMgr.cmm.service.PgrCmmService;
import kcc.kccadr.adjPgrMgr.cmm.service.PgrCmmVO;
import kcc.kccadr.adjst.service.AdjstReqService;
import kcc.kccadr.advc.service.AdrHstryMgrService;
import kcc.kccadr.cmm.KccadrPdfConversion;
import kcc.kccadr.cmm.RestResponse;
import kcc.kccadr.cmm.service.PdfConversionService;
@ -57,6 +59,9 @@ public class StreamDocsController {
@Resource(name="PdfConversionService")
private PdfConversionService pdfConversionService;
@Resource(name="adrHstryMgrService")
private AdrHstryMgrService adrHstryMgrService;
/** EgovPropertyService */
@Resource(name = "InnorixFileService")
protected InnorixFileService innorixService;
@ -76,6 +81,12 @@ public class StreamDocsController {
@Resource(name = "EgovFileMngService")
private EgovFileMngService fileService;
@Resource(name="adjstReqStatusService")
private AdjstReqStatusService adjstReqStatusService;
//암복호화 유틸
@Resource(name = "EgovFileMngService")
EgovFileMngService egovFileMngService;
private static String pdfMakepathOut; //c:/usr/local/tomcat/file/sht/out
@Value("#{globalSettings['Globals.pdf.makepath.out']}")
@ -131,14 +142,12 @@ public class StreamDocsController {
*/
@RequestMapping(value = {"/kccadr/common/regStreamDocsAjax.do"}, method = RequestMethod.POST)
public ResponseEntity<RestResponse> regStreamDocsAjax(@RequestBody PdfConversionVO pdfConversionVO) throws Exception {
PdfConversionVO tmpPdfConversionVO = pdfConversionService.selectConversionPdf(pdfConversionVO);
//PdfConversionVO tmpPdfConversionVO = pdfConversionService.selectConversionPdf(pdfConversionVO);
try {
// make 파일 경로
String filePath = pdfMakepathOut + tmpPdfConversionVO.getAdrSeq() +"/result/bookmark.pdf";
//String filePath = pdfMakepathOut + tmpPdfConversionVO.getAdrSeq() +"/result/bookmark.pdf";
String filePath = pdfMakepathOut + pdfConversionVO.getAdrSeq() +"/result/bookmark.pdf";
// pdf 파일 등록
HttpResponse<String> responseInfo = StreamDocsUtil.regPdfDoc(filePath, streamdocsURL);
@ -150,7 +159,7 @@ public class StreamDocsController {
}
// 실패 return value
return ResponseEntity.ok(new RestResponse(HttpStatus.BAD_REQUEST, "pdf 로드에 실패하였습니다.", LocalDateTime.now()));
return ResponseEntity.ok(new RestResponse(HttpStatus.BAD_REQUEST, "pdf 로드에 실패하였습니다.\n단권화 파일이 없습니다.", LocalDateTime.now()));
}
/**
@ -235,10 +244,20 @@ public class StreamDocsController {
public ResponseEntity<RestResponse> remakeStreamDocPdfAjax(
@RequestBody PdfConversionVO pdfConversionVO
) throws Exception {
KccadrPdfConversion kpc = new KccadrPdfConversion();
kpc.newPdfConversionPrcs(pdfConversionVO.getAdrSeq());
try {
KccadrPdfConversion kpc = new KccadrPdfConversion();
String s_result = kpc.newPdfConversionPrcs(
pdfConversionVO.getAdrSeq()
, adjstReqStatusService
, egovFileMngService
, pdfConversionService
, adrHstryMgrService
);
}catch(Exception ex) {
return ResponseEntity.ok(new RestResponse(HttpStatus.EXPECTATION_FAILED, "생성 중 오류가 발생하였습니다.", LocalDateTime.now()));
}
return ResponseEntity.ok(new RestResponse(HttpStatus.OK, "등록 되었습니다.", LocalDateTime.now()));
}

View File

@ -55,6 +55,8 @@ public class AdrHstryMgrVO extends ComDefaultVO implements Serializable {
private String userNm;
private String isRemake; //재단권화 쿼리 필터 여부 - Y
public String getAdrSeq() {
return adrSeq;
}
@ -217,5 +219,11 @@ public class AdrHstryMgrVO extends ComDefaultVO implements Serializable {
}
public void setUserNm(String userNm) {
this.userNm = userNm;
}
public String getIsRemake() {
return isRemake;
}
public void setIsRemake(String isRemake) {
this.isRemake = isRemake;
}
}

View File

@ -34,6 +34,8 @@ import kcc.com.cmm.service.FileVO;
import kcc.kccadr.accdnt.ars.service.AdjstReqStatusService;
import kcc.kccadr.accdnt.ars.service.AdjstReqStatusVO;
import kcc.kccadr.adjst.service.AdjstReqService;
import kcc.kccadr.advc.service.AdrHstryMgrService;
import kcc.kccadr.advc.service.AdrHstryMgrVO;
import kcc.kccadr.cmm.service.PdfConversionService;
import kcc.kccadr.cmm.service.PdfConversionVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
@ -63,6 +65,10 @@ public class KccadrPdfConversion extends EgovAbstractServiceImpl {
@Resource(name="PdfConversionService")
private PdfConversionService pdfConversionService;
@Resource(name="adrHstryMgrService")
private AdrHstryMgrService adrHstryMgrService;
//pdf 변환 서버 관련 설정
private static String pdfServerUrl; //192.168.0.200
@Value("#{globalSettings['Globals.pdf.serverUrl']}")
@ -148,10 +154,12 @@ public class KccadrPdfConversion extends EgovAbstractServiceImpl {
//2. (adr_pdf_batch)테이블의 is_pdf_tran이 'N'이고 pdf_tran_cnt이 5 이하인 조정사건의 adrseq select limit 5 -> PdfConversionVO
pdfConversionVOList = pdfConversionService.selectConversionPdfList();
} catch (Exception e) {
System.out.println(e.getMessage());
}
//3. for문을 통해 pdf 변환
int cnt = 1;
@ -164,8 +172,18 @@ public class KccadrPdfConversion extends EgovAbstractServiceImpl {
//update service 호출
pdfConversionService.updateIsProcessing(tmpUpdateVO);
String result = pdfTranCall(tmpPdfConversionVO.getAdrSeq());
//old batch 스케쥴러
//String result = pdfTranCall(tmpPdfConversionVO.getAdrSeq());
//고도화 배치 스케쥴러
String result = this.newPdfConversionPrcs(
tmpPdfConversionVO.getAdrSeq()
, adjstReqStatusService
, egovFileMngService
, pdfConversionService
, adrHstryMgrService
);
if("success".equals(result)) {
System.out.println("Success!!!");
} else if("tranFail".equals(result)) {
@ -204,15 +222,29 @@ public class KccadrPdfConversion extends EgovAbstractServiceImpl {
}
}
public void newPdfConversionPrcs(
public String newPdfConversionPrcs(
String p_adrSeq
) {
, AdjstReqStatusService p_adjstReqStatusService
, EgovFileMngService p_egovFileMngService
, PdfConversionService p_pdfConversionService
, AdrHstryMgrService p_adrHstryMgrService
) {
String s_ret = "";
try {
this.newPdfTranCall(p_adrSeq);
s_ret = this.newPdfTranCall(
p_adrSeq
, p_adjstReqStatusService
, p_egovFileMngService
, p_pdfConversionService
, p_adrHstryMgrService
);
} catch (Exception e) {
System.out.println(e.getMessage());
}
return s_ret;
}
@SuppressWarnings("unused")
@ -862,7 +894,13 @@ public class KccadrPdfConversion extends EgovAbstractServiceImpl {
* @throws ParseException
* @throws InterruptedException
*/
private String newPdfTranCall(String adrSeq)
private String newPdfTranCall(
String p_adrSeq
, AdjstReqStatusService p_adjstReqStatusService
, EgovFileMngService p_egovFileMngService
, PdfConversionService p_pdfConversionService
, AdrHstryMgrService p_adrHstryMgrService
)
throws UnirestException, ParseException, InterruptedException {
boolean isSuccess = false; // 전체 성공여부
@ -875,14 +913,15 @@ public class KccadrPdfConversion extends EgovAbstractServiceImpl {
String pdfGatewayStatusUrl = "http://" + pdfServerUrl + ":8888/pdf-gateway/api/task/status"; // Pdf Gateway 상태 URL
/*String bookmarkUri = "file:/c:/Temp/Result/Last/pdf200_Bookmark.pdf"; // 북마크 후 파일명 */
String conversionBeforeUri = pdfMakepathOut + adrSeq + "/conversionbefore/"; //pdf 변환 작업 파일경로
String ozfileUri = pdfMakepathOut + adrSeq + "/ozFile/"; // oz파일 export uri
String conversionBeforeUri = pdfMakepathOut + p_adrSeq + "/conversionbefore/"; //pdf 변환 작업 파일경로
String ozfileUri = pdfMakepathOut + p_adrSeq + "/ozFile/"; // oz파일 export uri
String conversionPdfUri = pdfFilepathOut + adrSeq + "/conversionafter/"; // pdf 변환 작업 파일경로
String bookmarkUri = pdfFilepathOut + adrSeq +"/result/bookmark.pdf"; // 북마크 파일명
String conversionPdfUri = pdfFilepathOut + p_adrSeq + "/conversionafter/"; // pdf 변환 작업 파일경로
String bookmarkUri = pdfFilepathOut + p_adrSeq +"/result/bookmark.pdf"; // 북마크 파일명
int conversionNo = 0; //pdf 변환 파일명 순번
System.out.println("====newPdfTranCall====");
System.out.println("");
System.out.println("pdfGatewayBuildUrl");
@ -909,7 +948,15 @@ public class KccadrPdfConversion extends EgovAbstractServiceImpl {
System.out.println(bookmarkUri);
//step1.이력 테이블에서 해당 조정의 진행 정보를 가져온다.
AdrHstryMgrVO adrHstryMgrVO = new AdrHstryMgrVO();
adrHstryMgrVO.setAdrSeq(p_adrSeq);
adrHstryMgrVO.setIsRemake("Y"); //remake 대상만 가져오기
List<AdrHstryMgrVO> adrHstryMgrVOList = p_adrHstryMgrService.selectList(adrHstryMgrVO);
//step2.
//오즈리포트 export된 파일 -> conversionbefore폴더로 이동
File ozFile = new File(ozfileUri);
//폴더가 없다면 생성
@ -923,6 +970,13 @@ public class KccadrPdfConversion extends EgovAbstractServiceImpl {
destFile.mkdirs();
}
//step3.진행된 oz pdf 변환 파일을 배열에 넣는다.
// 1. 변환할 문서 불러오기
List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
if(ozFileList.length > 0) {
for(File tmpFile : ozFileList) {
conversionNo++; //변환 파일명 순번
@ -933,17 +987,175 @@ public class KccadrPdfConversion extends EgovAbstractServiceImpl {
String fileExt = fileNm.substring(fileNm.lastIndexOf("."));
File toDestFile = new File(conversionBeforeUri + conversionNo + fileExt);
FileUtils.copyFile(fromFile, toDestFile);
//System.out.println();
//해당 파일이 대상 파일인지 이력 테이블 정보로 확인 한다.
String s_isUse = "N";
//실제 처리된 파일만 작업한다.
if (fileNm.indexOf("A250")>-1) {
s_isUse = "Y";
}else {
for(AdrHstryMgrVO f_adrHstryMgrVO : adrHstryMgrVOList) {
if (fileNm.indexOf(f_adrHstryMgrVO.getMenuId())>-1) {
s_isUse = "Y";
System.out.println("2.conversionBeforeUri + conversionNo + fileExt");
System.out.println(conversionBeforeUri + fileNm);
break;
}
}
}
//대상 파일이 맞으면 진행상황에 맞는 북마크 이름을 매칭하고, 배열에 저장한다.
if ("Y".equals(s_isUse)) {
String s_bookmakrNm = fileNm.substring(0, tmpFile.getName().lastIndexOf("."));
switch(s_bookmakrNm) {
case"201050":
s_bookmakrNm="조정신청서";
break;
case"205050":
s_bookmakrNm="기일통지서";
break;
case"302050":
s_bookmakrNm="기일조서";
break;
case"304050":
s_bookmakrNm="조정조서";
break;
case"307050":
s_bookmakrNm="불성립 종결 통보서";
break;
case"306050":
s_bookmakrNm="직권조정결정서";
break;
case"A500":
s_bookmakrNm="확정증명원";
break;
case"305050":
s_bookmakrNm="취하종결통보서";
break;
case"303050":
s_bookmakrNm="조정권고안";
break;
case"A250":
s_bookmakrNm="경정신청서";
break;
}
map = new HashMap<String, Object>();
map.put("INURI", pdfFilepathOut + p_adrSeq + "/conversionbefore/" + conversionNo + fileExt); // 변환대상 파일
map.put("OUTURI", conversionPdfUri+"conversionAfter_"+ Integer.toString(conversionNo) + ".pdf"); // 변환후 파일
map.put("ISWEB", "0"); // 웹문서 여부
map.put("ISEXIST", "0"); // 기존 PDF파일 존재 여부 => 기존파일일경우 INURI, OUTURI 동일
map.put("BOOKMARKNAME", s_bookmakrNm); // 북마크에 삽입될 실제 파일명
mapList.add(map);
}
}
}
//step4.첨부파일을 추가로 배열에 넣는다.
AdjstReqStatusVO adjstReqStatusVO = new AdjstReqStatusVO();
adjstReqStatusVO.setAdrSeq(p_adrSeq);
/*adjstReqStatusVO.setAdrSeq("ADR_0000000000002440");*/
List<AdjstReqStatusVO> adrFileList = p_adjstReqStatusService.selectAdjstDocs20211020List(adjstReqStatusVO);
// /usr/local/tomcat/file/sht/
// if(true) {
// return "breakpoint";
// }
for(AdjstReqStatusVO tmpAdjstReqStatusVO : adrFileList) {
if(!"0".equals(tmpAdjstReqStatusVO.getAdrDocCn2())) {
conversionNo++; //변환 파일명 순번
//step1.파일위치 변경
//sht => out/adrseq
FileVO fileVO = new FileVO();
fileVO.setAtchFileId(tmpAdjstReqStatusVO.getAtchFileId());
fileVO.setFileSn(tmpAdjstReqStatusVO.getFileSn());
FileVO nfile = p_egovFileMngService.selectFileInf(fileVO);
//step1.copy and rename
String s_src_file_name = nfile.streFileNm;
String oriFileName = nfile.orignlFileNm;
String fileExt = nfile.fileExtsn;
//pdf 변환솔루션에서 변환가능 확장자
//pdf, ppt, pptx, xls, xlsx, doc, docx, docm, dotx, txt, hwp, hwpx, jpg, jpe, jpeg, gif, png, bmp
String possibleExt = "PDF,PPT,PPTX,XLS,XLSX,DOC,DOCX,DOCM,DOTX,TXT,HWP,HWPX,JPG,JPE,JPEG,GIF,PNG,BMP";
if(possibleExt.contains(fileExt.toUpperCase()))
{
File tmpSrcFile = new File(pdfMakepath + s_src_file_name);
File tmpDestFile = new File(conversionBeforeUri + conversionNo + "." + fileExt);
FileUtils.copyFile(tmpSrcFile, tmpDestFile);
map = new HashMap<String, Object>();
map.put("INURI", pdfFilepathOut + p_adrSeq + "/conversionbefore/" + conversionNo + "." + fileExt); // 변환대상 파일
map.put("OUTURI", conversionPdfUri+"conversionAfter_"+ Integer.toString(conversionNo) + ".pdf"); // 변환후 파일
map.put("ISWEB", "0"); // 웹문서 여부
map.put("ISEXIST", "0"); // 기존 PDF파일 존재 여부 => 기존파일일경우 INURI, OUTURI 동일
map.put("BOOKMARKNAME", oriFileName); // 북마크에 삽입될 실제 파일명
mapList.add(map);
}
}
}
//대상 파일 내용 확인
for(Map<String, Object> tmpMap : mapList) {
System.out.println("INURI : "+tmpMap.get("INURI"));
System.out.println("OUTURI : "+tmpMap.get("OUTURI"));
}
//step5.
// 2. Pdf 문서변환 Start
isSuccess = pdfTranStart(mapList, pdfGatewayBuildUrl, pdfGatewayStatusUrl, bookmarkUri, p_adrSeq);
if (isSuccess == true) {
// 성공
// 1. DB 처리
// Update
// IsPdfTran = Y; (N: 미변환, Y: 변환완료)
// Update
// atch_file_path(최종생성파일 저장) => bookmarkUri
//adrSeq + /result/
//bookmark.pdf
PdfConversionVO tmpPdfConversionVO = new PdfConversionVO();
tmpPdfConversionVO.setAdrSeq(p_adrSeq);
tmpPdfConversionVO.setAtchFilePath(pdfMakepath + p_adrSeq + "/result/bookmark.pdf");
tmpPdfConversionVO.setIsPdfTran("Y");
p_pdfConversionService.updatePdfConversionSuccess(tmpPdfConversionVO);
result = "success";
}
else {
// 실패
// 1. DB 처리
// Update
// IsPdfTran = 0; (0: 미변환, 1: 변환완료)
// PdfTranCnt = PdfTranCnt + 1; (배치시도 횟수)
result = "tranFail";
}
}
catch (Exception ex) {
ex.printStackTrace();
System.out.println(ex.getMessage());
result = "exceptionFail";
}

View File

@ -195,7 +195,9 @@ public class OzSchdExportUtil {
if(p_devServerCheckString.indexOf(p_serverNm)>-1) {
System.out.println(p_islocal + "환경입니다.-inner");
//저장파일 경로 - dev 서버의 경우는 oz report가linux 서버에서 작동되어 하기와 같이 경로 설정해야함(IP 불필요)
savePath = p_ozDevPath + "/" + p_adrSeq + "/" + p_savePdfFileName;
savePath = p_ozDevPath + "/" + p_adrSeq + "/ozFile/" + p_savePdfFileName;
//savePath = p_ozDevPath + "\\" + p_adrSeq + "\\" + p_savePdfFileName;
//savePath = p_ozDevPath + "/" + p_savePdfFileName;
//oz scheduler 개발서버
p_ozSchedulerServerIp = p_devOzSchedulerServerIp;

View File

@ -140,8 +140,17 @@
</isNotEmpty><isNotEmpty property="adrHstryMgrSeq">
AND a.adr_hstry_mgr_seq = #adrHstryMgrSeq#
</isNotEmpty>
<isEqual prepend="AND" property="isRemake" compareValue="Y">
(LENGTH(a.menu_id)=6
OR a.menu_id='A500'
)
</isEqual>
ORDER BY a.frst_regist_pnttm