설정 관련 파일 제거
parent
48ae03d0b9
commit
73d6771272
@ -0,0 +1,38 @@
|
||||
package cokr.xit.app;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
|
||||
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
import cokr.xit.foundation.web.AbstractController;
|
||||
import cokr.xit.foundation.web.RequestHandlerReader;
|
||||
|
||||
@Controller
|
||||
public class MainController extends AbstractController {
|
||||
@Autowired
|
||||
private RequestMappingHandlerMapping requestHandlers;
|
||||
|
||||
@GetMapping(name="로그인", value="/login.do")
|
||||
public String loginPage() {
|
||||
return "login";
|
||||
}
|
||||
|
||||
@GetMapping(name="홈", value={"/", "/index.do"})
|
||||
public ModelAndView mainPage() {
|
||||
return new ModelAndView("index");
|
||||
}
|
||||
|
||||
@RequestMapping(name="기능 URL 선택", value="/urls.do")
|
||||
public ModelAndView getURLs(boolean multiple) {
|
||||
List<DataObject> urls = new RequestHandlerReader().read(requestHandlers);
|
||||
return new ModelAndView("select-url")
|
||||
.addObject("multiple", multiple)
|
||||
.addObject("urls", toJson(urls));
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package cokr.xit.app.base;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
|
||||
@Controller
|
||||
public class ActionGroupController extends cokr.xit.base.security.access.web.ActionGroupController {
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package cokr.xit.app.base;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
|
||||
@Controller
|
||||
public class AuthorityController extends cokr.xit.base.security.access.web.AuthorityController {
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
package cokr.xit.app.base;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
|
||||
@Controller
|
||||
public class CodeController extends cokr.xit.base.code.web.CodeController {}
|
@ -0,0 +1,8 @@
|
||||
package cokr.xit.app.base;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
|
||||
@Controller
|
||||
public class FileController extends cokr.xit.base.file.web.FileController {
|
||||
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package cokr.xit.app.base;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
|
||||
@Controller
|
||||
public class MenuController extends cokr.xit.base.menu.web.MenuController {
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package cokr.xit.app.base;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
|
||||
import cokr.xit.base.user.ManagedUser;
|
||||
|
||||
@Controller
|
||||
public class UserController extends cokr.xit.base.user.web.UserController<ManagedUser> {
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.cmm.dao;
|
||||
|
||||
import org.apache.ibatis.session.ResultHandler;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.mybatis.spring.support.SqlSessionDaoSupport;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: Select 데이터 Row단위 처리
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 3. 24. 오후 1:42:15
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public class XitExcelMapper extends SqlSessionDaoSupport{
|
||||
|
||||
public void queryWithRowHandler(String queryId, Object obj, ResultHandler<T> resultHandler){
|
||||
// if(queryId.indexOf("bcms") > -1){
|
||||
// ApplicationContext appContext = ContextLoaderListener.getCurrentWebApplicationContext();
|
||||
// SqlSessionFactory sfb = (SqlSessionFactory)appContext.getBean("sqlSessionBcms");
|
||||
// super.setSqlSessionFactory(sfb);
|
||||
// }else{
|
||||
// ApplicationContext appContext = ContextLoaderListener.getCurrentWebApplicationContext();
|
||||
// SqlSessionFactory sfb = (SqlSessionFactory)appContext.getBean("sqlSession");
|
||||
// super.setSqlSessionFactory(sfb);
|
||||
// }
|
||||
getSqlSession().select(queryId, obj, resultHandler);
|
||||
}
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch;
|
||||
|
||||
import cokr.xit.fims.framework.core.XitBaseSearchVO;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 배치작업관리 SearchVO
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 7. 13. 오후 4:49:51
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public class XitBatchRegMngSearchVO extends XitBaseSearchVO{
|
||||
|
||||
/**
|
||||
* serialVersionUID
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
}
|
@ -1,219 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch;
|
||||
|
||||
import cokr.xit.fims.framework.core.BaseVO;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 배치작업관리 VO
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 7. 13. 오후 4:50:55
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public class XitBatchRegMngVO extends BaseVO {
|
||||
|
||||
/**
|
||||
* serialVersionUID
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
/**
|
||||
* 배치작업ID
|
||||
*/
|
||||
private String batchOpertId;
|
||||
/**
|
||||
* 배치작업명
|
||||
*/
|
||||
private String batchOpertNm;
|
||||
/**
|
||||
* 배치작업구분 //2021.10.07 박민규 - 추가
|
||||
*/
|
||||
private String batchOpertSe;
|
||||
/**
|
||||
* 배치프로그램
|
||||
*/
|
||||
private String batchProgrm;
|
||||
/**
|
||||
* 최종수정자 아이디
|
||||
*/
|
||||
private String mdfr;
|
||||
/**
|
||||
* 최종수정일
|
||||
*/
|
||||
private String mdfcnDt;
|
||||
/**
|
||||
* 파라미터
|
||||
*/
|
||||
private String paramtr;
|
||||
/**
|
||||
* 사용여부
|
||||
*/
|
||||
private String useYn;
|
||||
/**
|
||||
* 최초등록자 아이디
|
||||
*/
|
||||
private String rgtr;
|
||||
/**
|
||||
* 최초등록시점
|
||||
*/
|
||||
private String regDt;
|
||||
|
||||
/**
|
||||
* 배치작업ID를 리턴한다.
|
||||
* @return the batchOpertId
|
||||
*/
|
||||
public String getBatchOpertId() {
|
||||
return batchOpertId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 배치작업ID를 설정한다.
|
||||
* @param batchOpertId 설정할 배치작업ID
|
||||
*/
|
||||
public void setBatchOpertId(String batchOpertId) {
|
||||
this.batchOpertId = batchOpertId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 배치작업명을 리턴한다.
|
||||
* @return the batchOpertNm
|
||||
*/
|
||||
public String getBatchOpertNm() {
|
||||
return batchOpertNm;
|
||||
}
|
||||
|
||||
/**
|
||||
* 배치작업명을 설정한다.
|
||||
* @param batchOpertNm 설정할 배치작업명
|
||||
*/
|
||||
public void setBatchOpertNm(String batchOpertNm) {
|
||||
this.batchOpertNm = batchOpertNm;
|
||||
}
|
||||
|
||||
/**
|
||||
* 배치작업구분을 리턴한다.
|
||||
* @return the batchOpertSe
|
||||
*/
|
||||
public String getBatchOpertSe() {
|
||||
return batchOpertSe;
|
||||
}
|
||||
|
||||
/**
|
||||
* 배치작업구분을 설정한다.
|
||||
* @param batchOpertSe 설정할 배치작업구분
|
||||
*/
|
||||
public void setBatchOpertSe(String batchOpertSe) {
|
||||
this.batchOpertSe = batchOpertSe;
|
||||
}
|
||||
|
||||
/**
|
||||
* 배치프로그램을 리턴한다.
|
||||
* @return the batchProgrm
|
||||
*/
|
||||
public String getBatchProgrm() {
|
||||
return batchProgrm;
|
||||
}
|
||||
|
||||
/**
|
||||
* 배치프로그램을 설정한다.
|
||||
* @param batchProgrm 설정할 배치프로그램
|
||||
*/
|
||||
public void setBatchProgrm(String batchProgrm) {
|
||||
this.batchProgrm = batchProgrm;
|
||||
}
|
||||
|
||||
/**
|
||||
* 최종수정자ID를 리턴한다.
|
||||
* @return the mdfr
|
||||
*/
|
||||
public String getMdfr() {
|
||||
return mdfr;
|
||||
}
|
||||
|
||||
/**
|
||||
* 최종수정자ID를 설정한다.
|
||||
* @param mdfr 설정할 최종수정자ID
|
||||
*/
|
||||
public void setMdfr(String mdfr) {
|
||||
this.mdfr = mdfr;
|
||||
}
|
||||
|
||||
/**
|
||||
* 최종수정시점을 리턴한다.
|
||||
* @return the mdfcnDt
|
||||
*/
|
||||
public String getMdfcnDt() {
|
||||
return mdfcnDt;
|
||||
}
|
||||
|
||||
/**
|
||||
* 최종수정시점을 설정한다.
|
||||
* @param mdfcnDt 설정할 최종수정시점
|
||||
*/
|
||||
public void setMdfcnDt(String mdfcnDt) {
|
||||
this.mdfcnDt = mdfcnDt;
|
||||
}
|
||||
|
||||
/**
|
||||
* 파라미터를 리턴한다.
|
||||
* @return the paramtr
|
||||
*/
|
||||
public String getParamtr() {
|
||||
return paramtr;
|
||||
}
|
||||
|
||||
/**
|
||||
* 파라미터를 설정한다.
|
||||
* @param paramtr 설정할 파라미터
|
||||
*/
|
||||
public void setParamtr(String paramtr) {
|
||||
this.paramtr = paramtr;
|
||||
}
|
||||
|
||||
/**
|
||||
* 사용여부를 리턴한다.
|
||||
* @return the useYn
|
||||
*/
|
||||
public String getUseYn() {
|
||||
return useYn;
|
||||
}
|
||||
|
||||
/**
|
||||
* 사용여부를 설정한다.
|
||||
* @param useYn 설정할 사용여부
|
||||
*/
|
||||
public void setUseYn(String useYn) {
|
||||
this.useYn = useYn;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the rgtr
|
||||
*/
|
||||
public String getRgtr() {
|
||||
return rgtr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the regDt
|
||||
*/
|
||||
public String getRegDt() {
|
||||
return regDt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param rgtr the rgtr to set
|
||||
*/
|
||||
public void setRgtr(String rgtr) {
|
||||
this.rgtr = rgtr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param regDt the regDt to set
|
||||
*/
|
||||
public void setRegDt(String regDt) {
|
||||
this.regDt = regDt;
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch;
|
||||
|
||||
import cokr.xit.fims.framework.core.XitBaseSearchVO;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 배치결과관리 SearchVO
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 7. 13. 오후 4:52:09
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public class XitBatchResultMngSearchVO extends XitBaseSearchVO{
|
||||
|
||||
/**
|
||||
* serialVersionUID
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 상태
|
||||
*/
|
||||
private String sttus;
|
||||
|
||||
|
||||
|
||||
public String getSttus() {
|
||||
return sttus;
|
||||
}
|
||||
public void setSttus(String sttus) {
|
||||
this.sttus = sttus;
|
||||
}
|
||||
|
||||
}
|
@ -1,294 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch;
|
||||
|
||||
import cokr.xit.fims.framework.core.BaseVO;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 배치결과관리 VO
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 7. 13. 오후 4:51:36
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public class XitBatchResultMngVO extends BaseVO {
|
||||
|
||||
/**
|
||||
* serialVersionUID
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
/**
|
||||
* 배치결과ID
|
||||
*/
|
||||
private String batchResultId;
|
||||
/**
|
||||
* 배치스케줄ID
|
||||
*/
|
||||
private String batchSchdulId;
|
||||
|
||||
/**
|
||||
* 배치작업ID
|
||||
*/
|
||||
private String batchOpertId;
|
||||
/**
|
||||
* 파라미터
|
||||
*/
|
||||
private String paramtr;
|
||||
/**
|
||||
* 상태
|
||||
*/
|
||||
private String sttus;
|
||||
/**
|
||||
* 실행시작시각
|
||||
*/
|
||||
private String executBeginTime;
|
||||
/**
|
||||
* 실행종료시각
|
||||
*/
|
||||
private String executEndTime;
|
||||
/**
|
||||
* 최종수정자 아이디
|
||||
*/
|
||||
private String mdfr;
|
||||
/**
|
||||
* 최종수정시점
|
||||
*/
|
||||
private String mdfcnDt;
|
||||
/**
|
||||
* 최초등록자 아이디
|
||||
*/
|
||||
private String rgtr;
|
||||
/**
|
||||
* 최초등록시점
|
||||
*/
|
||||
private String regDt;
|
||||
/**
|
||||
* 에러정보
|
||||
*/
|
||||
private String errorInfo;
|
||||
|
||||
/**
|
||||
* 배치작업명
|
||||
*/
|
||||
private String batchOpertNm;
|
||||
/**
|
||||
* 배치프로그램
|
||||
*/
|
||||
private String batchProgrm;
|
||||
/**
|
||||
* 상태명
|
||||
*/
|
||||
private String sttusNm;
|
||||
|
||||
/**
|
||||
* @return the batchResultId
|
||||
*/
|
||||
public String getBatchResultId() {
|
||||
return batchResultId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the batchOpertId
|
||||
*/
|
||||
public String getBatchOpertId() {
|
||||
return batchOpertId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the paramtr
|
||||
*/
|
||||
public String getParamtr() {
|
||||
return paramtr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the sttus
|
||||
*/
|
||||
public String getSttus() {
|
||||
return sttus;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the executBeginTime
|
||||
*/
|
||||
public String getExecutBeginTime() {
|
||||
return executBeginTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the executEndTime
|
||||
*/
|
||||
public String getExecutEndTime() {
|
||||
return executEndTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the mdfr
|
||||
*/
|
||||
public String getMdfr() {
|
||||
return mdfr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the mdfcnDt
|
||||
*/
|
||||
public String getMdfcnDt() {
|
||||
return mdfcnDt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the rgtr
|
||||
*/
|
||||
public String getRgtr() {
|
||||
return rgtr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the regDt
|
||||
*/
|
||||
public String getRegDt() {
|
||||
return regDt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the errorInfo
|
||||
*/
|
||||
public String getErrorInfo() {
|
||||
return errorInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the batchOpertNm
|
||||
*/
|
||||
public String getBatchOpertNm() {
|
||||
return batchOpertNm;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the batchProgrm
|
||||
*/
|
||||
public String getBatchProgrm() {
|
||||
return batchProgrm;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the sttusNm
|
||||
*/
|
||||
public String getSttusNm() {
|
||||
return sttusNm;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param batchResultId the batchResultId to set
|
||||
*/
|
||||
public void setBatchResultId(String batchResultId) {
|
||||
this.batchResultId = batchResultId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param batchOpertId the batchOpertId to set
|
||||
*/
|
||||
public void setBatchOpertId(String batchOpertId) {
|
||||
this.batchOpertId = batchOpertId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param paramtr the paramtr to set
|
||||
*/
|
||||
public void setParamtr(String paramtr) {
|
||||
this.paramtr = paramtr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param sttus the sttus to set
|
||||
*/
|
||||
public void setSttus(String sttus) {
|
||||
this.sttus = sttus;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param executBeginTime the executBeginTime to set
|
||||
*/
|
||||
public void setExecutBeginTime(String executBeginTime) {
|
||||
this.executBeginTime = executBeginTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param executEndTime the executEndTime to set
|
||||
*/
|
||||
public void setExecutEndTime(String executEndTime) {
|
||||
this.executEndTime = executEndTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mdfr the mdfr to set
|
||||
*/
|
||||
public void setMdfr(String mdfr) {
|
||||
this.mdfr = mdfr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mdfcnDt the mdfcnDt to set
|
||||
*/
|
||||
public void setMdfcnDt(String mdfcnDt) {
|
||||
this.mdfcnDt = mdfcnDt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param rgtr the rgtr to set
|
||||
*/
|
||||
public void setRgtr(String rgtr) {
|
||||
this.rgtr = rgtr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param regDt the regDt to set
|
||||
*/
|
||||
public void setRegDt(String regDt) {
|
||||
this.regDt = regDt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param errorInfo the errorInfo to set
|
||||
*/
|
||||
public void setErrorInfo(String errorInfo) {
|
||||
this.errorInfo = errorInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param batchOpertNm the batchOpertNm to set
|
||||
*/
|
||||
public void setBatchOpertNm(String batchOpertNm) {
|
||||
this.batchOpertNm = batchOpertNm;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param batchProgrm the batchProgrm to set
|
||||
*/
|
||||
public void setBatchProgrm(String batchProgrm) {
|
||||
this.batchProgrm = batchProgrm;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param sttusNm the sttusNm to set
|
||||
*/
|
||||
public void setSttusNm(String sttusNm) {
|
||||
this.sttusNm = sttusNm;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the batchSchdulId
|
||||
*/
|
||||
public String getBatchSchdulId() {
|
||||
return batchSchdulId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param batchSchdulId the batchSchdulId to set
|
||||
*/
|
||||
public void setBatchSchdulId(String batchSchdulId) {
|
||||
this.batchSchdulId = batchSchdulId;
|
||||
}
|
||||
|
||||
}
|
@ -1,77 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch;
|
||||
|
||||
import cokr.xit.fims.framework.core.BaseVO;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 배치작업스케줄요일 VO
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 7. 14. 오후 4:08:55
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public class XitBatchScheduleDayOfWeekVO extends BaseVO {
|
||||
|
||||
|
||||
/**
|
||||
* serialVersionUID
|
||||
*/
|
||||
private static final long serialVersionUID = 393393635146750800L;
|
||||
|
||||
/**
|
||||
* 배치스케줄ID
|
||||
*/
|
||||
private String batchSchdulId;
|
||||
|
||||
/**
|
||||
* 실행스케줄요일
|
||||
*/
|
||||
private String executSchdulDfkSe;
|
||||
|
||||
/**
|
||||
* 실행스케줄요일명
|
||||
*/
|
||||
private String executSchdulDfkSeNm;
|
||||
|
||||
|
||||
/**
|
||||
* @return the batchSchdulId
|
||||
*/
|
||||
public String getBatchSchdulId() {
|
||||
return batchSchdulId;
|
||||
}
|
||||
/**
|
||||
* @return the executSchdulDfkSe
|
||||
*/
|
||||
public String getExecutSchdulDfkSe() {
|
||||
return executSchdulDfkSe;
|
||||
}
|
||||
/**
|
||||
* @param batchSchdulId the batchSchdulId to set
|
||||
*/
|
||||
public void setBatchSchdulId(String batchSchdulId) {
|
||||
this.batchSchdulId = batchSchdulId;
|
||||
}
|
||||
/**
|
||||
* @param executSchdulDfkSe the executSchdulDfkSe to set
|
||||
*/
|
||||
public void setExecutSchdulDfkSe(String executSchdulDfkSe) {
|
||||
this.executSchdulDfkSe = executSchdulDfkSe;
|
||||
}
|
||||
/**
|
||||
* @return the executSchdulDfkSeNm
|
||||
*/
|
||||
public String getExecutSchdulDfkSeNm() {
|
||||
return executSchdulDfkSeNm;
|
||||
}
|
||||
/**
|
||||
* @param executSchdulDfkSeNm the executSchdulDfkSeNm to set
|
||||
*/
|
||||
public void setExecutSchdulDfkSeNm(String executSchdulDfkSeNm) {
|
||||
this.executSchdulDfkSeNm = executSchdulDfkSeNm;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch;
|
||||
|
||||
import cokr.xit.fims.framework.core.XitBaseSearchVO;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 배치스케줄관리 SearchVO
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 7. 13. 오후 4:52:45
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public class XitBatchScheduleMngSearchVO extends XitBaseSearchVO{
|
||||
|
||||
/**
|
||||
* serialVersionUID
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
}
|
@ -1,468 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch;
|
||||
|
||||
import cokr.xit.fims.framework.core.BaseVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 배치스케줄관리 VO
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 7. 13. 오후 4:53:11
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public class XitBatchScheduleMngVO extends BaseVO {
|
||||
|
||||
/**
|
||||
* serialVersionUID
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 배치스케줄ID
|
||||
*/
|
||||
private String batchSchdulId;
|
||||
|
||||
/**
|
||||
* 배치작업ID
|
||||
*/
|
||||
private String batchOpertId;
|
||||
|
||||
/**
|
||||
* 실행주기
|
||||
*/
|
||||
private String executCycle;
|
||||
/**
|
||||
* 실행스케줄일자
|
||||
*/
|
||||
private String executSchdulDe;
|
||||
/**
|
||||
* 실행스케줄시
|
||||
*/
|
||||
private String executSchdulHour;
|
||||
/**
|
||||
* 실행스케줄분
|
||||
*/
|
||||
private String executSchdulMnt;
|
||||
/**
|
||||
* 실행스케줄초
|
||||
*/
|
||||
private String executSchdulSecnd;
|
||||
/**
|
||||
* 실행스케줄요일
|
||||
*/
|
||||
private String[] executSchdulDfkSes;
|
||||
|
||||
/**
|
||||
* 최종수정자 아이디
|
||||
*/
|
||||
private String mdfr;
|
||||
/**
|
||||
* 최종수정시점
|
||||
*/
|
||||
private String mdfcnDt;
|
||||
/**
|
||||
* 최초등록자 아이디
|
||||
*/
|
||||
private String rgtr;
|
||||
/**
|
||||
* 최초등록시점
|
||||
*/
|
||||
private String regDt;
|
||||
|
||||
/**
|
||||
* 배치작업명
|
||||
*/
|
||||
private String batchOpertNm;
|
||||
/**
|
||||
* 배치프로그램
|
||||
*/
|
||||
private String batchProgrm;
|
||||
/**
|
||||
* 파라미터
|
||||
*/
|
||||
private String paramtr;
|
||||
/**
|
||||
* 실행주기명
|
||||
*/
|
||||
private String executCycleNm;
|
||||
/**
|
||||
* 실행스케줄
|
||||
*/
|
||||
private String executSchdul;
|
||||
|
||||
/**
|
||||
* @return the batchSchdulId
|
||||
*/
|
||||
public String getBatchSchdulId() {
|
||||
return batchSchdulId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the batchOpertId
|
||||
*/
|
||||
public String getBatchOpertId() {
|
||||
return batchOpertId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the executCycle
|
||||
*/
|
||||
public String getExecutCycle() {
|
||||
return executCycle;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the executSchdulDe
|
||||
*/
|
||||
public String getExecutSchdulDe() {
|
||||
return executSchdulDe;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the executSchdulHour
|
||||
*/
|
||||
public String getExecutSchdulHour() {
|
||||
return executSchdulHour;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the executSchdulMnt
|
||||
*/
|
||||
public String getExecutSchdulMnt() {
|
||||
return executSchdulMnt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the executSchdulSecnd
|
||||
*/
|
||||
public String getExecutSchdulSecnd() {
|
||||
return executSchdulSecnd;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the executSchdulDfkSes
|
||||
*/
|
||||
public String[] getExecutSchdulDfkSes() {
|
||||
//return executSchdulDfkSes;
|
||||
String[] ret = null;
|
||||
if (this.executSchdulDfkSes != null) {
|
||||
ret = new String[executSchdulDfkSes.length];
|
||||
for (int i = 0; i < executSchdulDfkSes.length; i++) {
|
||||
ret[i] = this.executSchdulDfkSes[i];
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the mdfr
|
||||
*/
|
||||
public String getMdfr() {
|
||||
return mdfr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the mdfcnDt
|
||||
*/
|
||||
public String getMdfcnDt() {
|
||||
return mdfcnDt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the rgtr
|
||||
*/
|
||||
public String getRgtr() {
|
||||
return rgtr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the regDt
|
||||
*/
|
||||
public String getRegDt() {
|
||||
return regDt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the batchOpertNm
|
||||
*/
|
||||
public String getBatchOpertNm() {
|
||||
return batchOpertNm;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the batchProgrm
|
||||
*/
|
||||
public String getBatchProgrm() {
|
||||
return batchProgrm;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the executCycleNm
|
||||
*/
|
||||
public String getExecutCycleNm() {
|
||||
return executCycleNm;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param batchSchdulId the batchSchdulId to set
|
||||
*/
|
||||
public void setBatchSchdulId(String batchSchdulId) {
|
||||
this.batchSchdulId = batchSchdulId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param batchOpertId the batchOpertId to set
|
||||
*/
|
||||
public void setBatchOpertId(String batchOpertId) {
|
||||
this.batchOpertId = batchOpertId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param executCycle the executCycle to set
|
||||
*/
|
||||
public void setExecutCycle(String executCycle) {
|
||||
this.executCycle = executCycle;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param executSchdulDe the executSchdulDe to set
|
||||
*/
|
||||
public void setExecutSchdulDe(String executSchdulDe) {
|
||||
this.executSchdulDe = executSchdulDe;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param executSchdulHour the executSchdulHour to set
|
||||
*/
|
||||
public void setExecutSchdulHour(String executSchdulHour) {
|
||||
this.executSchdulHour = executSchdulHour;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param executSchdulMnt the executSchdulMnt to set
|
||||
*/
|
||||
public void setExecutSchdulMnt(String executSchdulMnt) {
|
||||
this.executSchdulMnt = executSchdulMnt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param executSchdulSecnd the executSchdulSecnd to set
|
||||
*/
|
||||
public void setExecutSchdulSecnd(String executSchdulSecnd) {
|
||||
this.executSchdulSecnd = executSchdulSecnd;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param executSchdulDfkSes the executSchdulDfkSes to set
|
||||
*/
|
||||
public void setExecutSchdulDfkSes(String[] executSchdulDfkSes) {
|
||||
//this.executSchdulDfkSes = executSchdulDfkSes;
|
||||
this.executSchdulDfkSes = new String[executSchdulDfkSes.length];
|
||||
for (int i = 0; i < executSchdulDfkSes.length; ++i) {
|
||||
this.executSchdulDfkSes[i] = executSchdulDfkSes[i];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mdfr the mdfr to set
|
||||
*/
|
||||
public void setMdfr(String mdfr) {
|
||||
this.mdfr = mdfr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mdfcnDt the mdfcnDt to set
|
||||
*/
|
||||
public void setMdfcnDt(String mdfcnDt) {
|
||||
this.mdfcnDt = mdfcnDt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param rgtr the rgtr to set
|
||||
*/
|
||||
public void setRgtr(String rgtr) {
|
||||
this.rgtr = rgtr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param regDt the regDt to set
|
||||
*/
|
||||
public void setRegDt(String regDt) {
|
||||
this.regDt = regDt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param batchOpertNm the batchOpertNm to set
|
||||
*/
|
||||
public void setBatchOpertNm(String batchOpertNm) {
|
||||
this.batchOpertNm = batchOpertNm;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param batchProgrm the batchProgrm to set
|
||||
*/
|
||||
public void setBatchProgrm(String batchProgrm) {
|
||||
this.batchProgrm = batchProgrm;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param executCycleNm the executCycleNm to set
|
||||
*/
|
||||
public void setExecutCycleNm(String executCycleNm) {
|
||||
this.executCycleNm = executCycleNm;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the executSchdul
|
||||
*/
|
||||
public String getExecutSchdul() {
|
||||
return executSchdul;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param executSchdul the executSchdul to set
|
||||
*/
|
||||
public void setExecutSchdul(String executSchdul) {
|
||||
this.executSchdul = executSchdul;
|
||||
}
|
||||
|
||||
/**
|
||||
* 리스트, 상세화면 화면표시용 실행스케줄속성을 만들어 executSchdul 필드에 저장한다.
|
||||
*
|
||||
* @param dfkSeList List<BatchSchdulDfk>형의 요일구분코드정보리스트
|
||||
*/
|
||||
public void makeExecutSchdul(List<XitBatchScheduleDayOfWeekVO> dfkSeList) {
|
||||
String executSchdul = "";
|
||||
String executSchdulDeNm = "";
|
||||
|
||||
// 날짜 출력
|
||||
if (this.executCycle.equals("02") || this.executCycle.equals("01")) {
|
||||
// 매주, 매일인 경우는 스케줄일자를 사용하지 않는다.
|
||||
executSchdulDeNm = "";
|
||||
} else if (this.executCycle.equals("03")) {
|
||||
// 매월 처리
|
||||
if (!"".equals(this.executSchdulDe)) {
|
||||
executSchdulDeNm = executSchdulDeNm + this.executSchdulDe.substring(6, 8) + "일 ";
|
||||
}
|
||||
} else if (this.executCycle.equals("04")) {
|
||||
// 매년의경우 처리
|
||||
if (!"".equals(this.executSchdulDe)) {
|
||||
executSchdulDeNm = executSchdulDeNm + this.executSchdulDe.substring(4, 6) + "-" + this.executSchdulDe.substring(6, 8) + " ";
|
||||
}
|
||||
} else {
|
||||
// 이외의경우 처리
|
||||
if (!"".equals(this.executSchdulDe)) {
|
||||
executSchdulDeNm = executSchdulDeNm + this.executSchdulDe.substring(0, 4) + "-" + this.executSchdulDe.substring(4, 6) + "-" + this.executSchdulDe.substring(6, 8)
|
||||
+ " ";
|
||||
}
|
||||
}
|
||||
|
||||
// 날짜 출력
|
||||
executSchdul = executSchdul + executSchdulDeNm;
|
||||
|
||||
// 요일출력
|
||||
if (this.executCycle.equals("02")) {
|
||||
// 실행주기가 매주인 경우에만 출력한다.
|
||||
if (dfkSeList.size() != 0) {
|
||||
for (int i = 0; i < dfkSeList.size(); i++) {
|
||||
if (i != 0) {
|
||||
executSchdul = executSchdul + ",";
|
||||
}
|
||||
executSchdul = executSchdul + dfkSeList.get(i).getExecutSchdulDfkSeNm();
|
||||
}
|
||||
executSchdul = executSchdul + " ";
|
||||
}
|
||||
}
|
||||
|
||||
// 시, 분, 초 출력
|
||||
// 시분초는 항상출력한다.
|
||||
executSchdul = executSchdul + this.executSchdulHour + ":" + this.executSchdulMnt + ":" + this.executSchdulSecnd;
|
||||
|
||||
// 값지정.
|
||||
this.executSchdul = executSchdul;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 실행스케줄을 CronExpression으로 바꿔서 리턴한다.
|
||||
**/
|
||||
public String toCronExpression() {
|
||||
String cronExpression = "";
|
||||
|
||||
// 초변환
|
||||
cronExpression = cronExpression + this.executSchdulSecnd;
|
||||
|
||||
// 분변환
|
||||
cronExpression = cronExpression + " " + this.executSchdulMnt;
|
||||
|
||||
// 시변환
|
||||
cronExpression = cronExpression + " " + this.executSchdulHour;
|
||||
|
||||
// 일변환
|
||||
if (this.executCycle.equals("01")) {
|
||||
// 매일인경우 "*" 출력
|
||||
cronExpression = cronExpression + " " + "*";
|
||||
} else if (this.executCycle.equals("02")) {
|
||||
// 매주인 경우 "?" 출력
|
||||
cronExpression = cronExpression + " " + "?";
|
||||
} else {
|
||||
// 이외의 경우 그대로 출력
|
||||
cronExpression = cronExpression + " " + this.executSchdulDe.substring(6, 8);
|
||||
}
|
||||
|
||||
// 월변환
|
||||
if (this.executCycle.equals("01") || this.executCycle.equals("02") || this.executCycle.equals("03")) {
|
||||
// 매일,매월,매주인경우 "*" 출력
|
||||
cronExpression = cronExpression + " " + "*";
|
||||
} else {
|
||||
// 이외의 경우 그대로 출력
|
||||
cronExpression = cronExpression + " " + this.executSchdulDe.substring(4, 6);
|
||||
}
|
||||
|
||||
// 주 변환
|
||||
if (this.executCycle.equals("02")) {
|
||||
// 매주인경우 day of week를 출력
|
||||
String dayOfWeek = "";
|
||||
for (int i = 0; i < this.executSchdulDfkSes.length; i++) {
|
||||
if (i != 0) {
|
||||
dayOfWeek = dayOfWeek + ",";
|
||||
}
|
||||
dayOfWeek = dayOfWeek + this.executSchdulDfkSes[i];
|
||||
}
|
||||
cronExpression = cronExpression + " " + dayOfWeek;
|
||||
} else {
|
||||
// 이외의 경우 "?" 출력
|
||||
cronExpression = cronExpression + " " + "?";
|
||||
}
|
||||
|
||||
// 년변환
|
||||
if (this.executCycle.equals("05")) {
|
||||
// 한번만인경우 년도 출력
|
||||
cronExpression = cronExpression + " " + this.executSchdulDe.substring(0, 4);
|
||||
}
|
||||
return cronExpression;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the paramtr
|
||||
*/
|
||||
public String getParamtr() {
|
||||
return paramtr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param paramtr the paramtr to set
|
||||
*/
|
||||
public void setParamtr(String paramtr) {
|
||||
this.paramtr = paramtr;
|
||||
}
|
||||
}
|
@ -1,51 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch.dao;
|
||||
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchRegMngSearchVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchRegMngVO;
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 배치작업관리 Mapper
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 7. 13. 오후 5:03:39
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
@Mapper
|
||||
public interface XitBatchRegMngMapper {
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치작업관리 목록 조회</pre>
|
||||
* @param searchVO
|
||||
* @return List<XitBatchRegMngVO> 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public List<XitBatchRegMngVO> findList(XitBatchRegMngSearchVO searchVO) throws SQLException;
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치작업관리 목록 총건수 조회</pre>
|
||||
* @param searchVO
|
||||
* @return int 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public int findListTotCnt(XitBatchRegMngSearchVO searchVO) throws SQLException;
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치작업관리 상세정보 조회</pre>
|
||||
* @param vo
|
||||
* @return XitBatchRegMngVO 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public XitBatchRegMngVO findView(XitBatchRegMngVO vo) throws SQLException;
|
||||
|
||||
}
|
@ -1,51 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch.dao;
|
||||
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchResultMngSearchVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchResultMngVO;
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 배치결과관리 Mapper
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 7. 13. 오후 5:04:40
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
@Mapper
|
||||
public interface XitBatchResultMngMapper {
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치결과관리 목록 조회</pre>
|
||||
* @param searchVO
|
||||
* @return List<XitBatchResultMngVO> 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public List<XitBatchResultMngVO> findList(XitBatchResultMngSearchVO searchVO) throws SQLException;
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치결과관리 목록 총건수 조회</pre>
|
||||
* @param searchVO
|
||||
* @return int 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public int findListTotCnt(XitBatchResultMngSearchVO searchVO) throws SQLException;
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치결과관리 상세정보 조회</pre>
|
||||
* @param vo
|
||||
* @return XitBatchResultMngVO 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public XitBatchResultMngVO findView(XitBatchResultMngVO vo) throws SQLException;
|
||||
|
||||
}
|
@ -1,61 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch.dao;
|
||||
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchScheduleDayOfWeekVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchScheduleMngSearchVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchScheduleMngVO;
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 배치스케줄관리 Mapper
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 7. 13. 오후 5:05:26
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
@Mapper
|
||||
public interface XitBatchScheduleMngMapper {
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치스케줄관리 목록 조회</pre>
|
||||
* @param searchVO
|
||||
* @return List<XitBatchScheduleMngVO> 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public List<XitBatchScheduleMngVO> findList(XitBatchScheduleMngSearchVO searchVO) throws SQLException;
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치스케줄관리 목록 총건수 조회</pre>
|
||||
* @param searchVO
|
||||
* @return int 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public int findListTotCnt(XitBatchScheduleMngSearchVO searchVO) throws SQLException;
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치스케줄관리 상세정보 조회</pre>
|
||||
* @param vo
|
||||
* @return XitBatchScheduleMngVO 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public XitBatchScheduleMngVO findView(XitBatchScheduleMngVO vo) throws SQLException;
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치스케줄 요일 목록 조회</pre>
|
||||
* @param vo
|
||||
* @return List<XitBatchScheduleDayOfWeekVO>
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public List<XitBatchScheduleDayOfWeekVO> findsBatchSchedule(XitBatchScheduleMngVO vo);
|
||||
|
||||
}
|
@ -1,228 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch.service;
|
||||
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchResultMngVO;
|
||||
import org.egovframe.rte.fdl.cmmn.exception.FdlException;
|
||||
import org.egovframe.rte.fdl.idgnr.EgovIdGnrService;
|
||||
import org.quartz.JobDataMap;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobExecutionException;
|
||||
import org.quartz.JobListener;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* 배치작업의 실행시작, 완료를 저장하는 Quartz JobListener 클래스를 정의한다.
|
||||
*
|
||||
* @author 김진만
|
||||
* @see
|
||||
* <pre>
|
||||
* == 개정이력(Modification Information) ==
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2010-08-30 김진만 최초 생성
|
||||
* 2017-02-06 이정은 시큐어코딩(ES) - 시큐어코딩 부적절한 예외 처리[CWE-253, CWE-440, CWE-756]
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
public class BatchJobListener implements JobListener {
|
||||
|
||||
/** egovBatchSchdulService */
|
||||
private XitBatchScheduleMngService xitBatchScheduleMngService;
|
||||
|
||||
/** ID Generation */
|
||||
private EgovIdGnrService idgenService;
|
||||
|
||||
/** logger */
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(BatchJobListener.class);
|
||||
|
||||
/**
|
||||
* 배치스케줄 서비스를 설정한다.
|
||||
*
|
||||
* @param egovBatchSchdulService the egovBatchSchdulService to set
|
||||
*/
|
||||
public void setXitBatchScheduleMngService(XitBatchScheduleMngService egovBatchSchdulService) {
|
||||
this.xitBatchScheduleMngService = egovBatchSchdulService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 배치결과ID 생성서비스
|
||||
* @param idgenService the idgenService to set
|
||||
*/
|
||||
public void setIdgenService(EgovIdGnrService idgenService) {
|
||||
this.idgenService = idgenService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Job Listener 이름을 리턴한다.
|
||||
* @see JobListener#getName()
|
||||
*/
|
||||
@Override
|
||||
public String getName() {
|
||||
return this.getClass().getName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Batch 작업을 실행하기전에 Batch결과 '수행중'상태로 저장한다.
|
||||
*
|
||||
* @param jobContext JobExecutionContext
|
||||
* @see JobListener#jobToBeExecuted(JobExecutionContext jobContext)
|
||||
*/
|
||||
@Override
|
||||
public void jobToBeExecuted(JobExecutionContext jobContext) {
|
||||
LOGGER.debug("job[{}] jobToBeExecuted ", jobContext.getJobDetail().getKey().getName());
|
||||
XitBatchResultMngVO batchResult = new XitBatchResultMngVO();
|
||||
JobDataMap dataMap = jobContext.getJobDetail().getJobDataMap();
|
||||
try {
|
||||
// 결과 값 세팅.
|
||||
batchResult.setBatchResultId(idgenService.getNextStringId());
|
||||
batchResult.setBatchSchdulId(dataMap.getString("batchSchdulId"));
|
||||
batchResult.setBatchOpertId(dataMap.getString("batchOpertId"));
|
||||
batchResult.setParamtr(dataMap.getString("paramtr"));
|
||||
batchResult.setSttus("03"); // 상태는 수행중
|
||||
batchResult.setErrorInfo("");
|
||||
|
||||
String executBeginTimeStr = null;
|
||||
Date executBeginTime = new Date();
|
||||
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss", Locale.getDefault());
|
||||
executBeginTimeStr = formatter.format(executBeginTime);
|
||||
batchResult.setExecutBeginTime(executBeginTimeStr);
|
||||
|
||||
batchResult.setMdfr("SYSTEM");
|
||||
batchResult.setRgtr("SYSTEM");
|
||||
|
||||
xitBatchScheduleMngService.addBatchResult(batchResult);
|
||||
|
||||
// 저장이 이상없이 완료되면 datamap에 배치결과ID를 저장한다.
|
||||
dataMap.put("batchResultId", batchResult.getBatchResultId());
|
||||
//2017.02.06 이정은 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754]
|
||||
} catch (FdlException e) {
|
||||
LOGGER.error("[FdlException] 배치스케줄ID : {}, 배치작업ID : {}, 배치결과저장(insert) 에러 : {}", batchResult.getBatchSchdulId(), batchResult.getBatchOpertId(), e.getMessage());
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("(Ko) 배치스케줄ID : {}, 배치작업ID : {}, 배치결과저장(insert) 에러 : {}", batchResult.getBatchSchdulId(), batchResult.getBatchOpertId(), e.getMessage());
|
||||
LOGGER.error("(En) [" + e.getClass() + "] BatchScheduleID : {}, BatchJobID : {}, BatchResult(insert) Error : {}", batchResult.getBatchSchdulId(), batchResult.getBatchOpertId(), e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Batch 작업을 완료한후 Batch결과 '완료'상태로 저장한다.
|
||||
*
|
||||
* @param jobContext JobExecutionContext
|
||||
* @see JobListener#jobWasExecuted(JobExecutionContext jobContext)
|
||||
*/
|
||||
@Override
|
||||
public void jobWasExecuted(JobExecutionContext jobContext, JobExecutionException jee) {
|
||||
LOGGER.debug("job[{}] jobWasExecuted", jobContext.getJobDetail().getKey().getName());
|
||||
LOGGER.debug("job[{}] 수행시간 : {}, {}", jobContext.getJobDetail().getKey().getName(), jobContext.getFireTime(), jobContext.getJobRunTime());
|
||||
|
||||
int jobResult = 99;
|
||||
XitBatchResultMngVO batchResult = new XitBatchResultMngVO();
|
||||
JobDataMap dataMap = jobContext.getJobDetail().getJobDataMap();
|
||||
try {
|
||||
// 결과 값 세팅.
|
||||
batchResult.setBatchResultId(dataMap.getString("batchResultId"));
|
||||
batchResult.setBatchSchdulId(dataMap.getString("batchSchdulId"));
|
||||
batchResult.setBatchOpertId(dataMap.getString("batchOpertId"));
|
||||
batchResult.setParamtr(dataMap.getString("paramtr"));
|
||||
if (jobContext.getResult() != null) {
|
||||
jobResult = (Integer) jobContext.getResult();
|
||||
}
|
||||
if (jobResult == 0) {
|
||||
// 배치작업 성공.
|
||||
batchResult.setSttus("01");
|
||||
batchResult.setErrorInfo("");
|
||||
} else {
|
||||
// 배치작업이 0이 아닌값을 리턴하면 에러 상황임.
|
||||
batchResult.setSttus("02");
|
||||
batchResult.setErrorInfo("배치작업이 결과값 [" + jobResult + "]를 리턴했습니다. \n" + "배치프로그램 [" + dataMap.getString("batchProgrm") + "]의 로그를 확인하세요");
|
||||
}
|
||||
// 수행중 exception이 발생한 경우
|
||||
if (jee != null) {
|
||||
LOGGER.error("JobExecutionException 발생 : {}", jee);
|
||||
batchResult.setSttus("02");
|
||||
String errorInfo = batchResult.getErrorInfo();
|
||||
batchResult.setErrorInfo(errorInfo + "\n" + "JobExecutionException 발생 : " + jee);
|
||||
}
|
||||
|
||||
String executEndTimeStr = null;
|
||||
Date executEndTime = new Date();
|
||||
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss", Locale.getDefault());
|
||||
executEndTimeStr = formatter.format(executEndTime);
|
||||
batchResult.setExecutEndTime(executEndTimeStr);
|
||||
|
||||
batchResult.setMdfr("SYSTEM");
|
||||
|
||||
xitBatchScheduleMngService.modifyBatchResult(batchResult);
|
||||
|
||||
// 저장이 이상없이 완료되면 datamap에 배치결과ID를 저장한다.
|
||||
dataMap.put("batchResultId", batchResult.getBatchResultId());
|
||||
} catch (ClassCastException e) {//KISA 보안약점 조치 (2018-10-29, 윤창원)
|
||||
LOGGER.error("[ClassCastException] 배치결과ID : {}, 배치스케줄ID : {}, 배치작업ID : {}, 배치결과저장(update) 에러 : {}", batchResult.getBatchResultId(), batchResult.getBatchSchdulId(),
|
||||
batchResult.getBatchOpertId(), e.getMessage());
|
||||
LOGGER.error("[ClassCastException] ["+ e.getClass() + "] BatchResultID : {}, BatchScheduleID : {}, BatchJobID : {}, BatchResult(update) Error : {}", batchResult.getBatchResultId(), batchResult.getBatchSchdulId(),
|
||||
batchResult.getBatchOpertId(), e.getMessage());
|
||||
} catch (Exception e) {
|
||||
//2017.02.06 이정은 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754]
|
||||
LOGGER.error("(Ko) 배치결과ID : {}, 배치스케줄ID : {}, 배치작업ID : {}, 배치결과저장(update) 에러 : {}", batchResult.getBatchResultId(), batchResult.getBatchSchdulId(),
|
||||
batchResult.getBatchOpertId(), e.getMessage());
|
||||
LOGGER.error("(En) ["+ e.getClass() + "] BatchResultID : {}, BatchScheduleID : {}, BatchJobID : {}, BatchResult(update) Error : {}", batchResult.getBatchResultId(), batchResult.getBatchSchdulId(),
|
||||
batchResult.getBatchOpertId(), e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Batch 작업을 실행한 후에 Batch결과 '에러'상태로 저장한다.
|
||||
*
|
||||
* @param jobContext JobExecutionContext
|
||||
*
|
||||
* @see JobListener#jobExecutionVetoed(JobExecutionContext jobContext)
|
||||
*/
|
||||
@Override
|
||||
public void jobExecutionVetoed(JobExecutionContext jobContext) {
|
||||
LOGGER.debug("job[{}] jobExecutionVetoed", jobContext.getJobDetail().getKey().getName());
|
||||
|
||||
XitBatchResultMngVO batchResult = new XitBatchResultMngVO();
|
||||
JobDataMap dataMap = jobContext.getJobDetail().getJobDataMap();
|
||||
try {
|
||||
// 결과 값 세팅.
|
||||
batchResult.setBatchResultId(dataMap.getString("batchResultId"));
|
||||
batchResult.setBatchSchdulId(dataMap.getString("batchSchdulId"));
|
||||
batchResult.setBatchOpertId(dataMap.getString("batchOpertId"));
|
||||
batchResult.setParamtr(dataMap.getString("paramtr"));
|
||||
// 스케줄러가 배치작업을 실행하지 않음.
|
||||
batchResult.setSttus("02");
|
||||
batchResult.setErrorInfo("스케줄러가 배치작업을 실행하지 않았습니다(jobExecutionVetoed 이벤트). 스케줄러 로그를 확인하세요");
|
||||
|
||||
String executEndTimeStr = null;
|
||||
Date executEndTime = new Date();
|
||||
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss", Locale.getDefault());
|
||||
executEndTimeStr = formatter.format(executEndTime);
|
||||
batchResult.setExecutEndTime(executEndTimeStr);
|
||||
|
||||
batchResult.setMdfr("SYSTEM");
|
||||
|
||||
xitBatchScheduleMngService.modifyBatchResult(batchResult);
|
||||
|
||||
// 저장이 이상없이 완료되면 datamap에 배치결과ID를 저장한다.
|
||||
dataMap.put("batchResultId", batchResult.getBatchResultId());
|
||||
} catch (ClassCastException e) {//KISA 보안약점 조치 (2018-10-29, 윤창원)
|
||||
LOGGER.error("[ClassCastException] 배치결과ID : {}, 배치스케줄ID : {}, 배치작업ID : {}, 배치결과저장(update) 에러 : {}", batchResult.getBatchResultId(), batchResult.getBatchSchdulId(),
|
||||
batchResult.getBatchOpertId(), e.getMessage());
|
||||
LOGGER.error("[ClassCastException] ["+ e.getClass() + "] BatchResultID : {}, BatchScheduleID : {}, BatchJobID : {}, BatchResult(update) Error : {}", batchResult.getBatchResultId(), batchResult.getBatchSchdulId(),
|
||||
batchResult.getBatchOpertId(), e.getMessage());
|
||||
} catch (Exception e) {
|
||||
//2017.02.06 이정은 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754]
|
||||
LOGGER.error("(Ko) 배치결과ID : {}, 배치스케줄ID : {}, 배치작업ID : {}, 배치결과저장(update) 에러 : {}", batchResult.getBatchResultId(), batchResult.getBatchSchdulId(),
|
||||
batchResult.getBatchOpertId(), e.getMessage());
|
||||
LOGGER.error("(En) ["+ e.getClass() +"] BachResultID : {}, BatchScheduleID : {}, 배치작업ID : {}, 배치결과저장(update) 에러 : {}", batchResult.getBatchResultId(), batchResult.getBatchSchdulId(),
|
||||
batchResult.getBatchOpertId(), e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -1,110 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch.service;
|
||||
|
||||
import org.quartz.Job;
|
||||
import org.quartz.JobDataMap;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobExecutionException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
/**
|
||||
* 배치서비스메소드를 실행하는 Quartz Job 클래스를 정의한다.
|
||||
*
|
||||
* @author 박민규
|
||||
* @see
|
||||
* <pre>
|
||||
* == 개정이력(Modification Information) ==
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2021.10.07 박민규 최초 생성
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
public class BatchMethodExecuteJob implements Job {
|
||||
|
||||
/** logger */
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(BatchMethodExecuteJob.class);
|
||||
|
||||
/**
|
||||
* (non-Javadoc)
|
||||
* @see Job#execute(JobExecutionContext)
|
||||
*/
|
||||
public void execute(JobExecutionContext jobContext) throws JobExecutionException {
|
||||
|
||||
JobDataMap dataMap = jobContext.getJobDetail().getJobDataMap();
|
||||
|
||||
LOGGER.debug("job[{}] Trigger이름 : ", jobContext.getJobDetail().getKey().getName(), jobContext.getTrigger().getKey().getName());
|
||||
LOGGER.debug("job[{}] BatchOpert이름 : ", jobContext.getJobDetail().getKey().getName(), dataMap.getString("batchOpertId"));
|
||||
LOGGER.debug("job[{}] BatchProgram이름 : ", jobContext.getJobDetail().getKey().getName(), dataMap.getString("batchProgrm"));
|
||||
LOGGER.debug("job[{}] Parameter이름 : ", jobContext.getJobDetail().getKey().getName(), dataMap.getString("paramtr"));
|
||||
|
||||
int result = executeProgram(dataMap.getString("batchProgrm"), dataMap.getString("paramtr"));
|
||||
|
||||
// jobContext에 결과값을 저장한다.
|
||||
jobContext.setResult(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 시스템에서 특정 배치서비스메소드를 실행한다.
|
||||
* @param batchProgrm 배치서비스메소드 경로(ex. [패키지].[클래스].[메소드] )
|
||||
* @param paramtr 배치실행화일에 전달될 파라미터
|
||||
* @return 배치실행화일리턴값(integer)
|
||||
* @exception Exception
|
||||
*/
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
private int executeProgram(String batchProgrm, String paramtr) {
|
||||
|
||||
int result = 0;
|
||||
|
||||
String clzName = null;
|
||||
String mthName = null;
|
||||
try {
|
||||
String cmdStr = batchProgrm + " " + paramtr;
|
||||
|
||||
int lastIdx = batchProgrm.lastIndexOf(".");
|
||||
clzName = batchProgrm.substring(0, lastIdx);
|
||||
mthName = batchProgrm.substring(lastIdx+1);
|
||||
|
||||
Class cls = Class.forName(clzName);
|
||||
Object obj = cls.newInstance();
|
||||
Method method = null;
|
||||
if(paramtr == null || "".equals(paramtr)) {
|
||||
method = cls.getDeclaredMethod(mthName, null);
|
||||
method.invoke(obj);
|
||||
} else {
|
||||
method = cls.getDeclaredMethod(mthName, String.class);
|
||||
method.invoke(obj, paramtr);
|
||||
}
|
||||
|
||||
LOGGER.debug("배치서비스메소드 - {} 실행완료, 결과값: {}", cmdStr, result);
|
||||
|
||||
} catch (ClassNotFoundException e) {
|
||||
result = 1;
|
||||
LOGGER.error("배치서비스클래스 notfound 에러 : {}", e.getMessage());
|
||||
LOGGER.debug(e.getMessage(), e);
|
||||
} catch (InstantiationException | IllegalAccessException e) {
|
||||
result = 1;
|
||||
LOGGER.error("배치서비스클래스 인스턴스 에러 : {}", e.getMessage());
|
||||
LOGGER.debug(e.getMessage(), e);
|
||||
} catch (NoSuchMethodException e) {
|
||||
result = 1;
|
||||
LOGGER.error("배치서비스메소드 notfound 에러 : {}", e.getMessage());
|
||||
LOGGER.debug(e.getMessage(), e);
|
||||
} catch (IllegalArgumentException e) {
|
||||
result = 1;
|
||||
LOGGER.error("배치서비스메소드 실행 에러 : {}", e.getMessage());
|
||||
LOGGER.debug(e.getMessage(), e);
|
||||
} catch (InvocationTargetException e) {
|
||||
result = 1;
|
||||
LOGGER.error("배치서비스메소드 실행 에러 : {}", e.getMessage());
|
||||
LOGGER.debug(e.getMessage(), e);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
@ -1,269 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch.service;
|
||||
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchRegMngVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchScheduleMngSearchVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchScheduleMngVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.validator.BatchOpertSe;
|
||||
import org.egovframe.rte.fdl.idgnr.EgovIdGnrService;
|
||||
import org.quartz.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.quartz.CronScheduleBuilder.cronSchedule;
|
||||
import static org.quartz.JobBuilder.newJob;
|
||||
import static org.quartz.TriggerBuilder.newTrigger;
|
||||
|
||||
/**
|
||||
* Quartz Scheduler를 실행하는 스케줄러 클래스를 정의한다.
|
||||
*
|
||||
* @author 김진만
|
||||
* @see
|
||||
* <pre>
|
||||
* == 개정이력(Modification Information) ==
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2010.08.30 김진만 최초 생성
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
public class BatchScheduler {
|
||||
|
||||
private XitBatchScheduleMngService xitBatchScheduleMngService;
|
||||
private XitBatchRegMngService xitBatchRegMngService;
|
||||
|
||||
/** ID Generation */
|
||||
private EgovIdGnrService idgenService;
|
||||
|
||||
/** Quartz 스케줄러 */
|
||||
private Scheduler sched;
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(BatchScheduler.class);
|
||||
|
||||
// 실행 대상을 읽기위한 페이지 크기
|
||||
private static final int RECORD_COUNT_PER_PAGE = 10000;
|
||||
|
||||
/**
|
||||
* 배치스케줄러에 batchSchdul 파라미터를 이용하여 Job , Trigger를 Add 한다.
|
||||
*
|
||||
* @param batchSchdul 배치스케줄러에 등록할 스케줄정보
|
||||
* @exception Exception Exception
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public void insertBatchSchdul(XitBatchScheduleMngVO batchSchdul) throws Exception {
|
||||
// Job 만들기
|
||||
// JobDetail jobDetail = newJob(BatchShellScriptJob.class).withIdentity(batchSchdul.getBatchSchdulId()).build();
|
||||
JobDetail jobDetail = newJob(getJobClass(batchSchdul.getBatchOpertId())).withIdentity(batchSchdul.getBatchSchdulId()).build();
|
||||
|
||||
// Trigger 만들기
|
||||
CronTrigger trigger = newTrigger().withIdentity(batchSchdul.getBatchSchdulId()).withSchedule(cronSchedule(batchSchdul.toCronExpression())).forJob(jobDetail.getKey().getName()).build();
|
||||
|
||||
LOGGER.debug("배치스케줄을 등록합니다. 배치스케줄ID : {}", batchSchdul.getBatchSchdulId());
|
||||
LOGGER.debug("{} - cronexpression : {}", batchSchdul.getBatchSchdulId(), trigger.getCronExpression());
|
||||
BatchJobListener listener = new BatchJobListener();
|
||||
|
||||
listener.setXitBatchScheduleMngService(xitBatchScheduleMngService);
|
||||
listener.setIdgenService(idgenService);
|
||||
|
||||
sched.getListenerManager().addJobListener(listener);
|
||||
|
||||
// 데이터 전달
|
||||
jobDetail.getJobDataMap().put("batchOpertId", batchSchdul.getBatchOpertId());
|
||||
jobDetail.getJobDataMap().put("batchSchdulId", batchSchdul.getBatchSchdulId());
|
||||
jobDetail.getJobDataMap().put("batchProgrm", batchSchdul.getBatchProgrm());
|
||||
jobDetail.getJobDataMap().put("paramtr", batchSchdul.getParamtr());
|
||||
|
||||
try {
|
||||
// 스케줄러에 추가하기
|
||||
sched.scheduleJob(jobDetail, trigger);
|
||||
} catch (SchedulerException e) {
|
||||
// SchedulerException 이 발생하면 로그를 출력하고 다음 배치작업으로 넘어간다.
|
||||
// 트리거의 실행시각이 현재 시각보다 이전이면 SchedulerException이 발생한다.
|
||||
LOGGER.error("스케줄러에 배치작업추가할때 에러가 발생했습니다. 배치스케줄ID : {}, 배치작업ID : {}", batchSchdul.getBatchSchdulId(), batchSchdul.getBatchOpertId());
|
||||
LOGGER.error("에러내용 : {}", e.getMessage());
|
||||
LOGGER.debug(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 배치스케줄러에 batchSchdul 파라미터를 이용하여 Job , Trigger를 갱신 한다.
|
||||
*
|
||||
* @param batchSchdul 배치스케줄러에 갱신할 스케줄정보
|
||||
* @exception Exception Exception
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public void updateBatchSchdul(XitBatchScheduleMngVO batchSchdul) throws Exception {
|
||||
// Job 만들기
|
||||
// JobDetail jobDetail = newJob(BatchShellScriptJob.class)
|
||||
JobDetail jobDetail = newJob(getJobClass(batchSchdul.getBatchOpertId()))
|
||||
.withIdentity(batchSchdul.getBatchSchdulId())
|
||||
.build();
|
||||
// Trigger 만들기
|
||||
CronTrigger trigger = newTrigger()
|
||||
.withIdentity(batchSchdul.getBatchSchdulId())
|
||||
.withSchedule(cronSchedule(batchSchdul.toCronExpression()))
|
||||
.forJob(jobDetail.getKey().getName())
|
||||
.build();
|
||||
|
||||
LOGGER.debug("배치스케줄을 갱신합니다. 배치스케줄ID : {}", batchSchdul.getBatchSchdulId());
|
||||
LOGGER.debug("{} - cronexpression : {}", batchSchdul.getBatchSchdulId(), trigger.getCronExpression());
|
||||
|
||||
BatchJobListener listener = new BatchJobListener();
|
||||
|
||||
listener.setXitBatchScheduleMngService(xitBatchScheduleMngService);
|
||||
listener.setIdgenService(idgenService);
|
||||
|
||||
sched.getListenerManager().addJobListener(listener);
|
||||
|
||||
// 데이터 전달
|
||||
jobDetail.getJobDataMap().put("batchOpertId", batchSchdul.getBatchOpertId());
|
||||
jobDetail.getJobDataMap().put("batchSchdulId", batchSchdul.getBatchSchdulId());
|
||||
jobDetail.getJobDataMap().put("batchProgrm", batchSchdul.getBatchProgrm());
|
||||
jobDetail.getJobDataMap().put("paramtr", batchSchdul.getParamtr());
|
||||
|
||||
try {
|
||||
// 스케줄러에서 기존Job, Trigger 삭제하기
|
||||
sched.deleteJob(JobKey.jobKey(batchSchdul.getBatchSchdulId()));
|
||||
// 스케줄러에 추가하기
|
||||
sched.scheduleJob(jobDetail, trigger);
|
||||
} catch (SchedulerException e) {
|
||||
// SchedulerException 이 발생하면 로그를 출력하고 다음 배치작업으로 넘어간다.
|
||||
// 트리거의 실행시각이 현재 시각보다 이전이면 SchedulerException이 발생한다.
|
||||
LOGGER.error("스케줄러에 배치작업갱신할때 에러가 발생했습니다. 배치스케줄ID : {}, 배치작업ID : {}", batchSchdul.getBatchSchdulId(), batchSchdul.getBatchOpertId());
|
||||
LOGGER.error("에러내용 : {}", e.getMessage());
|
||||
LOGGER.debug(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 배치스케줄러에 batchSchdul 파라미터를 이용하여 Job , Trigger를 삭제한다.
|
||||
*
|
||||
* @param batchSchdul 배치스케줄러에 삭제할 스케줄정보
|
||||
* @exception Exception Exception
|
||||
*/
|
||||
public void deleteBatchSchdul(XitBatchScheduleMngVO batchSchdul) throws Exception {
|
||||
|
||||
try {
|
||||
// 스케줄러에서 기존Job, Trigger 삭제하기
|
||||
LOGGER.debug("배치스케줄을 삭제합니다. 배치스케줄ID : {}", batchSchdul.getBatchSchdulId());
|
||||
sched.deleteJob(JobKey.jobKey(batchSchdul.getBatchSchdulId()));
|
||||
} catch (SchedulerException e) {
|
||||
// SchedulerException 이 발생하면 로그를 출력하고 다음 배치작업으로 넘어간다.
|
||||
// 트리거의 실행시각이 현재 시각보다 이전이면 SchedulerException이 발생한다.
|
||||
LOGGER.error("스케줄러에 배치작업을 삭제할때 에러가 발생했습니다. 배치스케줄ID : {}, 배치작업ID : ", batchSchdul.getBatchSchdulId(), batchSchdul.getBatchOpertId());
|
||||
LOGGER.error("에러내용 : {}", e.getMessage());
|
||||
LOGGER.debug(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 클래스 초기화메소드.
|
||||
* 배치스케줄테이블을 읽어서 Quartz 스케줄러를 초기화한다.
|
||||
*
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public void init() throws Exception {
|
||||
// 모니터링 대상 정보 읽어들이기~~~
|
||||
List<XitBatchScheduleMngVO> targetList = null;
|
||||
XitBatchScheduleMngSearchVO searchVO = new XitBatchScheduleMngSearchVO();
|
||||
// 모니터링 대상 검색 조건 초기화
|
||||
searchVO.setPageIndex(1);
|
||||
searchVO.setFirstIndex(0);
|
||||
searchVO.setRecordCountPerPage(RECORD_COUNT_PER_PAGE);
|
||||
targetList = (List<XitBatchScheduleMngVO>) xitBatchScheduleMngService.findList(searchVO);
|
||||
LOGGER.debug("조회조건 {}", searchVO);
|
||||
LOGGER.debug("Result 건수 : {}", targetList.size());
|
||||
|
||||
// 스케줄러 생성하기
|
||||
SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
|
||||
sched = schedFact.getScheduler();
|
||||
|
||||
// Set up the listener
|
||||
BatchJobListener listener = new BatchJobListener();
|
||||
|
||||
listener.setXitBatchScheduleMngService(xitBatchScheduleMngService);
|
||||
listener.setIdgenService(idgenService);
|
||||
|
||||
//sched.addGlobalJobListener(listener);
|
||||
sched.getListenerManager().addJobListener(listener);
|
||||
|
||||
// 스케줄러에 Job, Trigger 등록하기
|
||||
XitBatchScheduleMngVO target = null;
|
||||
for (int i = 0; i < targetList.size(); i++) {
|
||||
target = targetList.get(i);
|
||||
LOGGER.debug("Data : {}", target);
|
||||
|
||||
insertBatchSchdul(target);
|
||||
}
|
||||
|
||||
sched.start();
|
||||
}
|
||||
|
||||
/**
|
||||
* 클래스 destroy메소드.
|
||||
* Quartz 스케줄러를 shutdown한다.
|
||||
*
|
||||
*/
|
||||
public void destroy() throws Exception {
|
||||
sched.shutdown();
|
||||
}
|
||||
|
||||
/**
|
||||
* 배치스케줄 서비스 리턴
|
||||
* @return the egovBatchSchdulService
|
||||
*/
|
||||
public XitBatchScheduleMngService getXitBatchScheduleMngService() {
|
||||
return xitBatchScheduleMngService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 배치스케줄 서비스 저장.
|
||||
* @param egovBatchSchdulService the egovBatchSchdulService to set
|
||||
*/
|
||||
public void setXitBatchScheduleMngService(XitBatchScheduleMngService egovBatchSchdulService) {
|
||||
this.xitBatchScheduleMngService = egovBatchSchdulService;
|
||||
}
|
||||
|
||||
public XitBatchRegMngService getXitBatchRegMngService() {
|
||||
return xitBatchRegMngService;
|
||||
}
|
||||
|
||||
public void setXitBatchRegMngService(XitBatchRegMngService xitBatchRegMngService) {
|
||||
this.xitBatchRegMngService = xitBatchRegMngService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 배치결과ID 생성서비스 리턴
|
||||
* @return the idgenService
|
||||
*/
|
||||
public EgovIdGnrService getIdgenService() {
|
||||
return idgenService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 배치결과ID 생성서비스 저장.
|
||||
* @param idgenService the idgenService to set
|
||||
*/
|
||||
public void setIdgenService(EgovIdGnrService idgenService) {
|
||||
this.idgenService = idgenService;
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
private Class getJobClass(String batchOpertId) {
|
||||
XitBatchRegMngVO vo = new XitBatchRegMngVO();
|
||||
vo.setBatchOpertId(batchOpertId);
|
||||
vo = xitBatchRegMngService.findView(vo);
|
||||
|
||||
switch (BatchOpertSe.valueOf(vo.getBatchOpertSe())) {
|
||||
case prm:
|
||||
return BatchMethodExecuteJob.class;
|
||||
case mtd:
|
||||
return BatchMethodExecuteJob.class;
|
||||
default:
|
||||
throw new RuntimeException(String.format("유효하지 않은 코드구분(%s) 입니다.", vo.getBatchOpertSe()));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,79 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch.service;
|
||||
|
||||
import org.quartz.Job;
|
||||
import org.quartz.JobDataMap;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobExecutionException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* 배치쉘스크립트를 실행하는 Quartz Job 클래스를 정의한다.
|
||||
*
|
||||
* @author 김진만
|
||||
* @see
|
||||
* <pre>
|
||||
* == 개정이력(Modification Information) ==
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2010.08.30 김진만 최초 생성
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
public class BatchShellScriptJob implements Job {
|
||||
|
||||
/** logger */
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(BatchShellScriptJob.class);
|
||||
|
||||
/**
|
||||
* (non-Javadoc)
|
||||
* @see Job#execute(JobExecutionContext)
|
||||
*/
|
||||
public void execute(JobExecutionContext jobContext) throws JobExecutionException {
|
||||
|
||||
JobDataMap dataMap = jobContext.getJobDetail().getJobDataMap();
|
||||
|
||||
LOGGER.debug("job[{}] Trigger이름 : ", jobContext.getJobDetail().getKey().getName(), jobContext.getTrigger().getKey().getName());
|
||||
LOGGER.debug("job[{}] BatchOpert이름 : ", jobContext.getJobDetail().getKey().getName(), dataMap.getString("batchOpertId"));
|
||||
LOGGER.debug("job[{}] BatchProgram이름 : ", jobContext.getJobDetail().getKey().getName(), dataMap.getString("batchProgrm"));
|
||||
LOGGER.debug("job[{}] Parameter이름 : ", jobContext.getJobDetail().getKey().getName(), dataMap.getString("paramtr"));
|
||||
|
||||
int result = executeProgram(dataMap.getString("batchProgrm"), dataMap.getString("paramtr"));
|
||||
|
||||
// jobContext에 결과값을 저장한다.
|
||||
jobContext.setResult(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 시스템에서 특정 쉘프로그램을 실행한다.
|
||||
* @param batchProgrm 배치실행화일
|
||||
* @param paramtr 배치실행화일에 전달될 파라미터
|
||||
* @return 배치실행화일리턴값(integer)
|
||||
* @exception Exception
|
||||
*/
|
||||
private int executeProgram(String batchProgrm, String paramtr) {
|
||||
|
||||
int result = 0;
|
||||
try {
|
||||
Process p = null;
|
||||
String cmdStr = batchProgrm + " " + paramtr;
|
||||
p = Runtime.getRuntime().exec(cmdStr);
|
||||
p.waitFor();
|
||||
result = p.exitValue();
|
||||
LOGGER.debug("배치실행화일 - {} 실행완료, 결과값: {}", cmdStr, result);
|
||||
|
||||
} catch (IOException e) {
|
||||
LOGGER.error("배치스크립트 실행 에러 : {}", e.getMessage());
|
||||
LOGGER.debug(e.getMessage(), e);
|
||||
} catch (InterruptedException e) {
|
||||
LOGGER.error("배치스크립트 실행 에러 : {}", e.getMessage());
|
||||
LOGGER.debug(e.getMessage(), e);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
@ -1,81 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch.service;
|
||||
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchRegMngSearchVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchRegMngVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 배치작업관리 Service
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 7. 13. 오후 5:03:22
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public interface XitBatchRegMngService {
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치작업관리 목록 조회</pre>
|
||||
* @param searchVO
|
||||
* @return List<XitBatchRegMngVO> 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public List<XitBatchRegMngVO> findList(XitBatchRegMngSearchVO searchVO);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치작업관리 목록 총건수 조회</pre>
|
||||
* @param searchVO
|
||||
* @return int 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public int findListTotCnt(XitBatchRegMngSearchVO searchVO);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치작업관리 상세정보 조회</pre>
|
||||
* @param vo
|
||||
* @return XitBatchRegMngVO 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public XitBatchRegMngVO findView(XitBatchRegMngVO vo);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치작업관리 등록</pre>
|
||||
* @param vo void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public void addProc(XitBatchRegMngVO vo);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치작업관리 수정</pre>
|
||||
* @param vo void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public void modifyProc(XitBatchRegMngVO vo);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치작업관리 삭제</pre>
|
||||
* @param vo void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public void removeProc(XitBatchRegMngVO vo);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치작업관리 다건 삭제</pre>
|
||||
* @param ids void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public void removesProc(String ids);
|
||||
|
||||
|
||||
}
|
@ -1,80 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch.service;
|
||||
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchResultMngSearchVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchResultMngVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 배치결과관리 Service
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 7. 13. 오후 5:04:26
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public interface XitBatchResultMngService {
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치결과관리 목록 조회</pre>
|
||||
* @param searchVO
|
||||
* @return List<XitBatchResultMngVO> 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public List<XitBatchResultMngVO> findList(XitBatchResultMngSearchVO searchVO);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치결과관리 목록 총건수 조회</pre>
|
||||
* @param searchVO
|
||||
* @return int 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public int findListTotCnt(XitBatchResultMngSearchVO searchVO);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치결과관리 상세정보 조회</pre>
|
||||
* @param vo
|
||||
* @return XitBatchResultMngVO 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public XitBatchResultMngVO findView(XitBatchResultMngVO vo);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치결과관리 등록</pre>
|
||||
* @param vo void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public void addProc(XitBatchResultMngVO vo);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치결과관리 수정</pre>
|
||||
* @param vo void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public void modifyProc(XitBatchResultMngVO vo);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치결과관리 삭제</pre>
|
||||
* @param vo void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public void removeProc(XitBatchResultMngVO vo);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치결과관리 다건 삭제</pre>
|
||||
* @param ids void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public void removesProc(String ids);
|
||||
|
||||
}
|
@ -1,100 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch.service;
|
||||
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchResultMngVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchScheduleMngSearchVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchScheduleMngVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 배치스케줄관리 Service
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 7. 13. 오후 5:05:14
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public interface XitBatchScheduleMngService {
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치스케줄관리 목록 조회</pre>
|
||||
* @param searchVO
|
||||
* @return List<XitBatchScheduleMngVO> 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public List<XitBatchScheduleMngVO> findList(XitBatchScheduleMngSearchVO searchVO);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치스케줄관리 목록 총건수 조회</pre>
|
||||
* @param searchVO
|
||||
* @return int 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public int findListTotCnt(XitBatchScheduleMngSearchVO searchVO);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치스케줄관리 상세정보 조회</pre>
|
||||
* @param vo
|
||||
* @return XitBatchScheduleMngVO 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public XitBatchScheduleMngVO findView(XitBatchScheduleMngVO vo);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치스케줄관리 등록</pre>
|
||||
* @param vo void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public void addProc(XitBatchScheduleMngVO vo);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치스케줄관리 수정</pre>
|
||||
* @param vo void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public void modifyProc(XitBatchScheduleMngVO vo);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치스케줄관리 삭제</pre>
|
||||
* @param vo void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public void removeProc(XitBatchScheduleMngVO vo);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치스케줄관리 다건 삭제</pre>
|
||||
* @param ids void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public void removesProc(String ids);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치결과 등록</pre>
|
||||
* @param ids void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public void addBatchResult(XitBatchResultMngVO vo);
|
||||
/**
|
||||
* <pre>메소드 설명: 배치결과 수정</pre>
|
||||
* @param ids void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
public void modifyBatchResult(XitBatchResultMngVO vo);
|
||||
|
||||
}
|
@ -1,157 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch.service.bean;
|
||||
|
||||
import cokr.xit.foundation.component.AbstractServiceBean;
|
||||
import cokr.xit.fims.framework.biz.cmm.XitComtnbatchopertVO;
|
||||
import cokr.xit.fims.framework.biz.cmm.service.XitFrameCrudService;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.dao.XitBatchRegMngMapper;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchRegMngSearchVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchRegMngVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.service.XitBatchRegMngService;
|
||||
import cokr.xit.fims.framework.core.message.XitMessageSource;
|
||||
import org.egovframe.rte.fdl.cmmn.exception.FdlException;
|
||||
import org.egovframe.rte.fdl.idgnr.EgovIdGnrService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class XitBatchRegMngServiceBean extends AbstractServiceBean implements XitBatchRegMngService {
|
||||
|
||||
@Resource
|
||||
private XitBatchRegMngMapper xitBatchRegMngMapper;
|
||||
@Resource
|
||||
private XitFrameCrudService xitFrameCrudService;
|
||||
@Autowired
|
||||
@Qualifier("xitBatchOpertIdGnrService")
|
||||
private EgovIdGnrService xitBatchOpertIdGnrService;
|
||||
@Resource
|
||||
private XitMessageSource xitMessageSource;
|
||||
|
||||
@Override
|
||||
public List<XitBatchRegMngVO> findList(XitBatchRegMngSearchVO searchVO) {
|
||||
List<XitBatchRegMngVO> result = null;
|
||||
try {
|
||||
result = xitBatchRegMngMapper.findList(searchVO);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException("배치작업관리 목록 조회 FAIL::", e);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int findListTotCnt(XitBatchRegMngSearchVO searchVO) {
|
||||
int result = 0;
|
||||
try {
|
||||
result = xitBatchRegMngMapper.findListTotCnt(searchVO);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException("배치작업관리 목록 총건수 조회 FAIL::", e);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public XitBatchRegMngVO findView(XitBatchRegMngVO vo) {
|
||||
XitBatchRegMngVO result = null;
|
||||
try {
|
||||
result = xitBatchRegMngMapper.findView(vo);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException("배치작업관리 상세정보 조회 FAIL::", e);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addProc(XitBatchRegMngVO vo) {
|
||||
/**
|
||||
* 필수값 설정
|
||||
*/
|
||||
try {
|
||||
vo.setBatchOpertId(xitBatchOpertIdGnrService.getNextStringId());
|
||||
} catch (FdlException e) {
|
||||
throw new RuntimeException(String.format("%s %s", xitMessageSource.getMessage("fail.common.insert"), e.getMessage()));
|
||||
}
|
||||
XitComtnbatchopertVO crudVO = convertToCrudVO(vo);
|
||||
crudVO.setUseYn("Y");
|
||||
crudVO.setRgtr (vo.getRgtr());
|
||||
crudVO.setMdfr (vo.getMdfr());
|
||||
|
||||
|
||||
/**
|
||||
* 처리
|
||||
*/
|
||||
xitFrameCrudService.addComtnbatchopert(crudVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void modifyProc(XitBatchRegMngVO vo) {
|
||||
/**
|
||||
* 필수값 설정
|
||||
*/
|
||||
XitComtnbatchopertVO crudVO = convertToCrudVO(vo);
|
||||
crudVO.setMdfr (vo.getMdfr());
|
||||
|
||||
|
||||
/**
|
||||
* 처리
|
||||
*/
|
||||
xitFrameCrudService.modifyComtnbatchopert(crudVO);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeProc(XitBatchRegMngVO vo) {
|
||||
/**
|
||||
* 필수값 설정
|
||||
*/
|
||||
XitComtnbatchopertVO crudVO = convertToCrudVO(vo);
|
||||
crudVO.setMdfr (vo.getMdfr());
|
||||
crudVO.setUseYn("N");
|
||||
|
||||
/**
|
||||
* 처리
|
||||
*/
|
||||
xitFrameCrudService.modifyComtnbatchopert(crudVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removesProc(String ids) {
|
||||
/**
|
||||
* 처리
|
||||
*/
|
||||
String [] primaryKey = ids.split(";");
|
||||
for(int i=0; i<primaryKey.length;i++) {
|
||||
XitBatchRegMngVO vo = new XitBatchRegMngVO();
|
||||
vo.setBatchOpertId(primaryKey[i]);
|
||||
this.removeProc(vo);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 메소드 설명: 메뉴VO를 CRUD Service의 VO로 변환 한다.
|
||||
* </pre>
|
||||
*
|
||||
* @return XitComtnbatchopertVO 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
private XitComtnbatchopertVO convertToCrudVO(XitBatchRegMngVO vo) {
|
||||
XitComtnbatchopertVO crudVO = new XitComtnbatchopertVO();
|
||||
crudVO.setBatchOpertId (vo.getBatchOpertId()); //배치작업ID
|
||||
crudVO.setBatchOpertNm (vo.getBatchOpertNm()); //배치작업명
|
||||
crudVO.setBatchOpertSe (vo.getBatchOpertSe()); //배치작업유형
|
||||
crudVO.setBatchProgrm (vo.getBatchProgrm()); //배치프로그램
|
||||
crudVO.setParamtr (vo.getParamtr()); //파라미터
|
||||
// crudVO.setUseYn (vo.getUseYn()); //사용여부
|
||||
// crudVO.setRgtr (vo.getRgtr());//최초등록자ID
|
||||
// crudVO.setReg_dt(); //최초등록시점
|
||||
// crudVO.setMdfr (vo.getMdfr()); //최종수정자ID
|
||||
// crudVO.setMdfcn_dt (); //최종수정시점
|
||||
|
||||
return crudVO;
|
||||
}
|
||||
}
|
@ -1,144 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch.service.bean;
|
||||
|
||||
import cokr.xit.foundation.component.AbstractServiceBean;
|
||||
import cokr.xit.fims.framework.biz.cmm.XitComtnbatchresultVO;
|
||||
import cokr.xit.fims.framework.biz.cmm.service.XitFrameCrudService;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.dao.XitBatchResultMngMapper;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchResultMngSearchVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchResultMngVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.service.XitBatchResultMngService;
|
||||
import cokr.xit.fims.framework.core.message.XitMessageSource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class XitBatchResultMngServiceBean extends AbstractServiceBean implements XitBatchResultMngService{
|
||||
|
||||
@Resource
|
||||
private XitBatchResultMngMapper xitBatchResultMngMapper;
|
||||
@Resource
|
||||
private XitFrameCrudService xitFrameCrudService;
|
||||
@Resource
|
||||
private XitMessageSource xitMessageSource;
|
||||
|
||||
@Override
|
||||
public List<XitBatchResultMngVO> findList(XitBatchResultMngSearchVO searchVO) {
|
||||
List<XitBatchResultMngVO> result = null;
|
||||
try {
|
||||
result = xitBatchResultMngMapper.findList(searchVO);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException("배치결과관리 목록 조회 FAIL::", e);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int findListTotCnt(XitBatchResultMngSearchVO searchVO) {
|
||||
int result = 0;
|
||||
try {
|
||||
result = xitBatchResultMngMapper.findListTotCnt(searchVO);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException("배치결과관리 목록 총건수 조회 FAIL::", e);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public XitBatchResultMngVO findView(XitBatchResultMngVO vo) {
|
||||
XitBatchResultMngVO result = null;
|
||||
try {
|
||||
result = xitBatchResultMngMapper.findView(vo);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException("배치결과관리 상세정보 조회 FAIL::", e);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addProc(XitBatchResultMngVO vo) {
|
||||
/**
|
||||
* 필수값 설정
|
||||
*/
|
||||
XitComtnbatchresultVO crudVO = convertToCrudVO(vo);
|
||||
crudVO.setRgtr (vo.getRgtr());
|
||||
crudVO.setMdfr (vo.getMdfr());
|
||||
|
||||
|
||||
/**
|
||||
* 처리
|
||||
*/
|
||||
xitFrameCrudService.addComtnbatchresult(crudVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void modifyProc(XitBatchResultMngVO vo) {
|
||||
/**
|
||||
* 필수값 설정
|
||||
*/
|
||||
XitComtnbatchresultVO crudVO = convertToCrudVO(vo);
|
||||
crudVO.setMdfr (vo.getMdfr());
|
||||
|
||||
|
||||
/**
|
||||
* 처리
|
||||
*/
|
||||
xitFrameCrudService.modifyComtnbatchresult(crudVO);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeProc(XitBatchResultMngVO vo) {
|
||||
/**
|
||||
* 필수값 설정
|
||||
*/
|
||||
XitComtnbatchresultVO crudVO = convertToCrudVO(vo);
|
||||
|
||||
/**
|
||||
* 처리
|
||||
*/
|
||||
xitFrameCrudService.removeComtnbatchresult(crudVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removesProc(String ids) {
|
||||
/**
|
||||
* 처리
|
||||
*/
|
||||
String [] primaryKey = ids.split(";");
|
||||
for(int i=0; i<primaryKey.length;i++) {
|
||||
XitBatchResultMngVO vo = new XitBatchResultMngVO();
|
||||
vo.setBatchResultId(primaryKey[i]);
|
||||
this.removeProc(vo);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 메소드 설명: 메뉴VO를 CRUD Service의 VO로 변환 한다.
|
||||
* </pre>
|
||||
*
|
||||
* @return XitComtnbatchresultVO 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
private XitComtnbatchresultVO convertToCrudVO(XitBatchResultMngVO vo) {
|
||||
XitComtnbatchresultVO crudVO = new XitComtnbatchresultVO();
|
||||
crudVO.setBatchResultId (vo.getBatchResultId()); //배치결과ID
|
||||
crudVO.setBatchSchdulId (vo.getBatchSchdulId()); //배치일정ID
|
||||
crudVO.setBatchOpertId (vo.getBatchOpertId()); //배치작업ID
|
||||
crudVO.setParamtr (vo.getParamtr()); //파라미터
|
||||
crudVO.setSttus (vo.getSttus()); //상태
|
||||
crudVO.setErrorInfo (vo.getErrorInfo()); //오류정보
|
||||
crudVO.setExecutBeginTm (vo.getExecutBeginTime()); //실행시작시각
|
||||
crudVO.setExecutEndTm (vo.getExecutEndTime()); //실행종료시각
|
||||
// crudVO.setMdfcn_dt (vo.get); //최종수정시점
|
||||
// crudVO.setMdfr (vo.get); //최종수정자ID
|
||||
// crudVO.setReg_dt(vo.get); //최초등록시점
|
||||
// crudVO.setRgtr (vo.get); //최초등록ID
|
||||
|
||||
return crudVO;
|
||||
}
|
||||
}
|
@ -1,228 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch.service.bean;
|
||||
|
||||
import cokr.xit.foundation.component.AbstractServiceBean;
|
||||
import cokr.xit.fims.framework.biz.cmm.XitComtnbatchschdulVO;
|
||||
import cokr.xit.fims.framework.biz.cmm.XitComtnbatchschduldfkVO;
|
||||
import cokr.xit.fims.framework.biz.cmm.service.XitFrameCrudService;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.dao.XitBatchScheduleMngMapper;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchResultMngVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchScheduleDayOfWeekVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchScheduleMngSearchVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchScheduleMngVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.service.XitBatchResultMngService;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.service.XitBatchScheduleMngService;
|
||||
import cokr.xit.fims.framework.core.message.XitMessageSource;
|
||||
import org.egovframe.rte.fdl.cmmn.exception.FdlException;
|
||||
import org.egovframe.rte.fdl.idgnr.EgovIdGnrService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class XitBatchScheduleMngServiceBean extends AbstractServiceBean implements XitBatchScheduleMngService {
|
||||
|
||||
@Resource
|
||||
private XitBatchScheduleMngMapper xitBatchScheduleMngMapper;
|
||||
@Resource
|
||||
private XitFrameCrudService xitFrameCrudService;
|
||||
@Autowired
|
||||
@Qualifier("xitBatchSchdulIdGnrService")
|
||||
private EgovIdGnrService xitBatchSchdulIdGnrService;
|
||||
@Resource
|
||||
private XitMessageSource xitMessageSource;
|
||||
@Resource
|
||||
private XitBatchResultMngService xitBatchResultMngService;
|
||||
|
||||
@Override
|
||||
public List<XitBatchScheduleMngVO> findList(XitBatchScheduleMngSearchVO searchVO) {
|
||||
List<XitBatchScheduleMngVO> result = null;
|
||||
try {
|
||||
result = xitBatchScheduleMngMapper.findList(searchVO);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException("배치스케줄관리 목록 조회 FAIL::", e);
|
||||
}
|
||||
for (int i = 0; i < result.size(); i++) {
|
||||
XitBatchScheduleMngVO vo = result.get(i);
|
||||
// 스케줄요일정보를 가져온다.
|
||||
List<XitBatchScheduleDayOfWeekVO> dfkSeList = xitBatchScheduleMngMapper.findsBatchSchedule(vo);
|
||||
String [] dfkSes = new String [dfkSeList.size()];
|
||||
for (int j = 0; j < dfkSeList.size(); j++) {
|
||||
dfkSes[j] = (String) dfkSeList.get(j).getExecutSchdulDfkSe();
|
||||
}
|
||||
vo.setExecutSchdulDfkSes(dfkSes);
|
||||
// 화면표시용 실행스케줄 속성을 만든다.
|
||||
vo.makeExecutSchdul(dfkSeList);
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int findListTotCnt(XitBatchScheduleMngSearchVO searchVO) {
|
||||
int result = 0;
|
||||
try {
|
||||
result = xitBatchScheduleMngMapper.findListTotCnt(searchVO);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException("배치스케줄관리 목록 총건수 조회 FAIL::", e);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public XitBatchScheduleMngVO findView(XitBatchScheduleMngVO vo) {
|
||||
XitBatchScheduleMngVO result = null;
|
||||
try {
|
||||
result = xitBatchScheduleMngMapper.findView(vo);
|
||||
|
||||
// 스케줄요일정보를 가져온다.
|
||||
List<XitBatchScheduleDayOfWeekVO> dfkSeList = xitBatchScheduleMngMapper.findsBatchSchedule(result);
|
||||
String [] dfkSes = new String [dfkSeList.size()];
|
||||
for (int j = 0; j < dfkSeList.size(); j++) {
|
||||
dfkSes[j] = (String) dfkSeList.get(j).getExecutSchdulDfkSe();
|
||||
}
|
||||
result.setExecutSchdulDfkSes(dfkSes);
|
||||
// 화면표시용 실행스케줄 속성을 만든다.
|
||||
result.makeExecutSchdul(dfkSeList);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException("배치스케줄관리 상세정보 조회 FAIL::", e);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addProc(XitBatchScheduleMngVO vo) {
|
||||
/**
|
||||
* 필수값 설정
|
||||
*/
|
||||
try {
|
||||
vo.setBatchSchdulId(xitBatchSchdulIdGnrService.getNextStringId());
|
||||
} catch (FdlException e) {
|
||||
throw new RuntimeException(String.format("%s %s", xitMessageSource.getMessage("fail.common.insert"), e.getMessage()));
|
||||
}
|
||||
XitComtnbatchschdulVO crudVO = convertToCrudVO(vo);
|
||||
crudVO.setRgtr (vo.getRgtr());
|
||||
crudVO.setMdfr (vo.getMdfr());
|
||||
|
||||
|
||||
/**
|
||||
* 처리
|
||||
*/
|
||||
//master 테이블 insert
|
||||
xitFrameCrudService.addComtnbatchschdul(crudVO);
|
||||
//slave 테이블 insert
|
||||
if (vo.getExecutSchdulDfkSes() != null && vo.getExecutSchdulDfkSes().length != 0) {
|
||||
String batchSchdulId = vo.getBatchSchdulId();
|
||||
String [] dfkSes = vo.getExecutSchdulDfkSes();
|
||||
for (int i = 0; i < dfkSes.length; i++) {
|
||||
XitComtnbatchschduldfkVO slaveVO = new XitComtnbatchschduldfkVO();
|
||||
slaveVO.setBatchSchdulId(batchSchdulId);
|
||||
slaveVO.setExecutSchdulDfkSe(dfkSes[i]);
|
||||
xitFrameCrudService.addComtnbatchschduldfk(slaveVO);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void modifyProc(XitBatchScheduleMngVO vo) {
|
||||
/**
|
||||
* 필수값 설정
|
||||
*/
|
||||
XitComtnbatchschdulVO crudVO = convertToCrudVO(vo);
|
||||
crudVO.setMdfr (vo.getMdfr());
|
||||
|
||||
|
||||
/**
|
||||
* 처리
|
||||
*/
|
||||
//master 테이블 update
|
||||
xitFrameCrudService.modifyComtnbatchschdul(crudVO);
|
||||
// slave 테이블 삭제
|
||||
XitComtnbatchschduldfkVO slaveVO = new XitComtnbatchschduldfkVO();
|
||||
slaveVO.setBatchSchdulId(vo.getBatchSchdulId());
|
||||
xitFrameCrudService.removesComtnbatchschduldfk(slaveVO);
|
||||
// slave 테이블 인서트
|
||||
if (vo.getExecutSchdulDfkSes() != null && vo.getExecutSchdulDfkSes().length != 0) {
|
||||
String batchSchdulId = vo.getBatchSchdulId();
|
||||
String [] dfkSes = vo.getExecutSchdulDfkSes();
|
||||
for (int i = 0; i < dfkSes.length; i++) {
|
||||
slaveVO = new XitComtnbatchschduldfkVO();
|
||||
slaveVO.setBatchSchdulId(batchSchdulId);
|
||||
slaveVO.setExecutSchdulDfkSe(dfkSes[i]);
|
||||
xitFrameCrudService.addComtnbatchschduldfk(slaveVO);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeProc(XitBatchScheduleMngVO vo) {
|
||||
/**
|
||||
* 필수값 설정
|
||||
*/
|
||||
XitComtnbatchschdulVO crudVO = convertToCrudVO(vo);
|
||||
|
||||
/**
|
||||
* 처리
|
||||
*/
|
||||
// slave 테이블 삭제
|
||||
XitComtnbatchschduldfkVO slaveVO = new XitComtnbatchschduldfkVO();
|
||||
slaveVO.setBatchSchdulId(vo.getBatchSchdulId());
|
||||
xitFrameCrudService.removesComtnbatchschduldfk(slaveVO);
|
||||
// master 테이블 delete
|
||||
xitFrameCrudService.removesComtnbatchschdul(crudVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removesProc(String ids) {
|
||||
/**
|
||||
* 처리
|
||||
*/
|
||||
String [] primaryKey = ids.split(";");
|
||||
for(int i=0; i<primaryKey.length;i++) {
|
||||
XitBatchScheduleMngVO vo = new XitBatchScheduleMngVO();
|
||||
vo.setBatchSchdulId(primaryKey[i]);
|
||||
this.removeProc(vo);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 메소드 설명: 메뉴VO를 CRUD Service의 VO로 변환 한다.
|
||||
* </pre>
|
||||
*
|
||||
* @return XitComtnbatchschdulVO 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
private XitComtnbatchschdulVO convertToCrudVO(XitBatchScheduleMngVO vo) {
|
||||
XitComtnbatchschdulVO crudVO = new XitComtnbatchschdulVO();
|
||||
crudVO.setBatchSchdulId (vo.getBatchSchdulId()); //배치일정ID
|
||||
crudVO.setBatchOpertId (vo.getBatchOpertId()); //배치작업ID
|
||||
crudVO.setExecutCycle (vo.getExecutCycle()); //실행주기
|
||||
crudVO.setExecutSchdulDe (vo.getExecutSchdulDe()); //실행일정 일
|
||||
crudVO.setExecutSchdulHour (vo.getExecutSchdulHour()); //실행일정 시
|
||||
crudVO.setExecutSchdulMnt (vo.getExecutSchdulMnt()); //실행일정 분
|
||||
crudVO.setExecutSchdulSecnd(vo.getExecutSchdulSecnd()); //실행일정 초
|
||||
// crudVO.setRgtr (vo.getRgtr()); //최초등록자ID
|
||||
// crudVO.setReg_dt (vo.get); //최초등록시점
|
||||
// crudVO.setMdfr (vo.getMdfr()); //최종수정자ID
|
||||
// crudVO.setMdfcn_dt (vo.get); //최종수정시점
|
||||
|
||||
return crudVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBatchResult(XitBatchResultMngVO vo) {
|
||||
xitBatchResultMngService.addProc(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void modifyBatchResult(XitBatchResultMngVO vo) {
|
||||
xitBatchResultMngService.modifyProc(vo);
|
||||
}
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch.validator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* <ul>
|
||||
* <li>업무 그룹명: 배치운영구분 </li>
|
||||
* <li>설 명: 배치프로그램 종류를 기술 한다.</li>
|
||||
* <li>작성일: 2021. 10. 7. 오후 5:16:43
|
||||
* </ul>
|
||||
*
|
||||
* @author 박민규
|
||||
*
|
||||
*/
|
||||
public enum BatchOpertSe {
|
||||
|
||||
prm("프로그램")
|
||||
,mtd("메소드")
|
||||
;
|
||||
private String code;
|
||||
private String codeVal;
|
||||
BatchOpertSe(String codeVal){
|
||||
this.code = this.name();
|
||||
this.codeVal = codeVal;
|
||||
}
|
||||
public String getCode() {
|
||||
return this.code;
|
||||
}
|
||||
public String getCodeVal() {
|
||||
return this.codeVal;
|
||||
}
|
||||
public static List<Map<String, String>> getCodeList(){
|
||||
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
|
||||
for(BatchOpertSe value : BatchOpertSe.values()) {
|
||||
Map<String, String> mCode = new HashMap<String, String>();
|
||||
mCode.put("code", value.getCode());
|
||||
mCode.put("codeVal", value.getCodeVal());
|
||||
list.add(mCode);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
}
|
@ -1,85 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch.validator;
|
||||
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchRegMngVO;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.validation.Errors;
|
||||
import org.springframework.validation.Validator;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* BatchOpert클래스에대한 validator 클래스.
|
||||
* common validator가 처리하지 못하는 부분 검사.
|
||||
*
|
||||
* @author 김진만
|
||||
* @version 1.0
|
||||
* @see
|
||||
* <pre>
|
||||
* == 개정이력(Modification Information) ==
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2010.08.20 김진만 최초 생성
|
||||
* </pre>
|
||||
*/
|
||||
@Component
|
||||
public class BatchOpertValidator implements Validator {
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.springframework.validation.Validator#supports(java.lang.Class)
|
||||
*/
|
||||
@Override
|
||||
public boolean supports(Class<?> clazz) {
|
||||
return XitBatchRegMngVO.class.isAssignableFrom(clazz);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.springframework.validation.Validator#validate(java.lang.Object, org.springframework.validation.Errors)
|
||||
*/
|
||||
@Override
|
||||
public void validate(Object obj, Errors errors) {
|
||||
// 배치프로그램으로 지정된 값이 파일로 존재하는지 검사한다.
|
||||
XitBatchRegMngVO batchOpert = (XitBatchRegMngVO) obj;
|
||||
switch (BatchOpertSe.valueOf(batchOpert.getBatchOpertSe())) {
|
||||
case prm:
|
||||
//KISA 보안약점 조치 (2018-10-29, 윤창원)
|
||||
File file = new File(this.filePathBlackList(batchOpert.getBatchProgrm()));
|
||||
try {
|
||||
if (!file.exists()) {
|
||||
errors.rejectValue("batchProgrm", "errors.batchProgrm", new Object[] { batchOpert.getBatchProgrm() }, "배치프로그램 {0}이 존재하지 않습니다.");
|
||||
return;
|
||||
}
|
||||
if (!file.isFile()) {
|
||||
errors.rejectValue("batchProgrm", "errors.batchProgrm", new Object[] { batchOpert.getBatchProgrm() }, "배치프로그램 {0}이 파일이 아닙니다.");
|
||||
return;
|
||||
}
|
||||
} catch (SecurityException se) {
|
||||
errors.rejectValue("batchProgrm", "errors.batchProgrm", new Object[] { batchOpert.getBatchProgrm() }, " 배치프로그램 {0}에 접근할 수 없습니다. 파일접근권한을 확인하세요.");
|
||||
}
|
||||
break;
|
||||
case mtd:
|
||||
break;
|
||||
|
||||
default:
|
||||
errors.rejectValue("batchProgrm", "errors.batchProgrm", new Object[] { batchOpert.getBatchProgrm() }, "유효하지 않은 배치작업유형{0} 입니다. 배치작업유형을 확인하세요.");
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
private String filePathBlackList(String value) {
|
||||
String returnValue = value;
|
||||
if (returnValue == null || returnValue.trim().equals("")) {
|
||||
return "";
|
||||
}
|
||||
|
||||
returnValue = returnValue.replaceAll("\\.\\.", "");
|
||||
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
}
|
@ -1,367 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch.web;
|
||||
|
||||
import cokr.xit.foundation.web.AbstractController;
|
||||
import cokr.xit.fims.framework.biz.cmm.XitLoginVO;
|
||||
import cokr.xit.fims.framework.biz.cmm.service.XitFrameCodeService;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchRegMngSearchVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchRegMngVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.service.XitBatchRegMngService;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.validator.BatchOpertSe;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.validator.BatchOpertValidator;
|
||||
import cokr.xit.fims.framework.core.constants.FrameworkConstants;
|
||||
import cokr.xit.fims.framework.core.constants.FrameworkConstants.TILES_TYPE;
|
||||
import cokr.xit.fims.framework.core.message.XitMessageSource;
|
||||
import cokr.xit.fims.framework.core.utils.XitCmmnUtil;
|
||||
import cokr.xit.fims.framework.core.validation.XitBeanValidator;
|
||||
import cokr.xit.fims.framework.support.util.AjaxUtils;
|
||||
import org.egovframe.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
|
||||
import org.egovframe.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.support.SessionStatus;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 배치작업관리 Controller
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 7. 13. 오후 5:02:43
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping(name = "", value = "/framework/biz/mng/batch/")
|
||||
public class XitBatchRegMngController extends AbstractController {
|
||||
|
||||
@Resource
|
||||
private XitBatchRegMngService xitBatchRegMngService;
|
||||
@Resource
|
||||
private XitFrameCodeService xitFrameCodeService;
|
||||
@Autowired
|
||||
private XitBeanValidator beanValidator;
|
||||
@Resource//(name = "xitMessageSource")
|
||||
XitMessageSource xitMessageSource;
|
||||
/* batchOpert bean validator */
|
||||
@Resource//(name = "batchOpertValidator")
|
||||
private BatchOpertValidator batchOpertValidator;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치작업관리 목록 페이지</pre>
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
@RequestMapping(name = "", value = "batchRegMng_list", method={RequestMethod.GET, RequestMethod.POST})
|
||||
public String batchRegMng_list(@ModelAttribute("searchVO") XitBatchRegMngSearchVO searchVO, ModelMap model) {
|
||||
|
||||
|
||||
|
||||
return FrameworkConstants.FRAMEWORK_JSP_BASE_PATH +"mng/batch/XitBatchRegMng_list";
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치작업 관리 페이지 조회</pre>
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 김동규
|
||||
* @date: 2020. 7. 31.
|
||||
*/
|
||||
@RequestMapping(name = "", value = "batchRegMng_list.ajax", method={RequestMethod.GET, RequestMethod.POST})
|
||||
@ResponseBody
|
||||
public Map<String, Object> batchRegMng_listAjax(@ModelAttribute("searchVO") XitBatchRegMngSearchVO searchVO, ModelMap model) {
|
||||
|
||||
/** paging */
|
||||
PaginationInfo paginationInfo = new PaginationInfo();
|
||||
paginationInfo.setCurrentPageNo(searchVO.getPageNum()>-1?searchVO.getPageNum():searchVO.getPageIndex());
|
||||
paginationInfo.setRecordCountPerPage(searchVO.getFetchSize()>-1?searchVO.getFetchSize():searchVO.getPageUnit());
|
||||
paginationInfo.setPageSize(searchVO.getPageSize());
|
||||
searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
||||
searchVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
||||
searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
||||
|
||||
Map<String, Object> resultMap = new HashMap<String, Object>();
|
||||
try {
|
||||
/**
|
||||
* 조회
|
||||
*/
|
||||
List<XitBatchRegMngVO> resultList = xitBatchRegMngService.findList(searchVO);
|
||||
int totCnt = xitBatchRegMngService.findListTotCnt(searchVO);
|
||||
/**
|
||||
* 반환값 설정
|
||||
*/
|
||||
/* ***************************
|
||||
* tui Grid Response Set
|
||||
*************************** */
|
||||
resultMap.put("result", true); //[tui Grid] result
|
||||
resultMap.put("message", xitMessageSource.getMessage("success.common.select")); //[tui Grid] result message
|
||||
Map<String, Object> data = new HashMap<String, Object>();
|
||||
data.put("contents", resultList); //[tui Grid] data-contents
|
||||
Map<String, Integer> pagination = new HashMap<String, Integer>();
|
||||
pagination.put("pageNum", searchVO.getPageNum());
|
||||
pagination.put("totalSize", totCnt);
|
||||
data.put("pagination", pagination); //[tui Grid] data-paging
|
||||
resultMap.put("data", data); //[tui Grid] data
|
||||
/* ***************************
|
||||
* //tui Grid Response Set
|
||||
*************************** */
|
||||
} catch (Exception e) {
|
||||
/**
|
||||
* 반환값 설정
|
||||
*/
|
||||
//tui Grid Response Set
|
||||
resultMap.put("result", false); //[tui Grid] result
|
||||
resultMap.put("message", xitMessageSource.getMessage("fail.common.select")); //[tui Grid] result message
|
||||
}
|
||||
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 요청 페이지로 이동 한다.</pre>
|
||||
* @param page
|
||||
* @param tilesDef 타일즈 적용 Type(none: tiles 미적용)
|
||||
* @param model
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
@RequestMapping(name = "", value = "batchRegMng_{cmd}", method={RequestMethod.GET, RequestMethod.POST})
|
||||
public String batchRegMng_page(@PathVariable String cmd
|
||||
, @RequestParam(value="tilesDef", required=false, defaultValue="") String tilesDef
|
||||
, @ModelAttribute("vo") XitBatchRegMngVO vo
|
||||
, @ModelAttribute("searchVO") XitBatchRegMngSearchVO searchVO
|
||||
, ModelMap model) {
|
||||
switch (cmd) {
|
||||
case "input": //등록 페이지
|
||||
model.addAttribute("batchOpert", vo);
|
||||
model.addAttribute("batchOpertSeCodeList", BatchOpertSe.getCodeList());
|
||||
break;
|
||||
|
||||
case "edit": //수정 페이지
|
||||
model.addAttribute("batchOpert", xitBatchRegMngService.findView(vo));
|
||||
model.addAttribute("message", xitMessageSource.getMessage("success.common.select"));
|
||||
model.addAttribute("batchOpertSeCodeList", BatchOpertSe.getCodeList());
|
||||
break;
|
||||
|
||||
case "view": //상세 페이지
|
||||
model.addAttribute("resultInfo", xitBatchRegMngService.findView(vo));
|
||||
model.addAttribute("message", xitMessageSource.getMessage("success.common.select"));
|
||||
model.addAttribute("batchOpertSeCodeList", BatchOpertSe.getCodeList());
|
||||
break;
|
||||
default:
|
||||
throw new RuntimeException("유효하지 않은 요청 입니다.");
|
||||
}
|
||||
|
||||
|
||||
if(!"".equals(tilesDef))
|
||||
tilesDef = "."+tilesDef;
|
||||
return FrameworkConstants.FRAMEWORK_JSP_BASE_PATH +"mng/batch/XitBatchRegMng_"+cmd+tilesDef;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 요청 팝업 페이지 이동 한다.</pre>
|
||||
* @param page
|
||||
* @param model
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
@RequestMapping(name = "", value = "batchRegMng_{cmd}_popup", method={RequestMethod.GET, RequestMethod.POST})
|
||||
public String batchRegMng_page_popup(@PathVariable String cmd
|
||||
, @ModelAttribute("vo") XitBatchRegMngVO vo
|
||||
, @ModelAttribute("searchVO") XitBatchRegMngSearchVO searchVO
|
||||
, ModelMap model) {
|
||||
switch (cmd) {
|
||||
case "choice": //
|
||||
/** paging */
|
||||
PaginationInfo paginationInfo = new PaginationInfo();
|
||||
paginationInfo.setCurrentPageNo(searchVO.getPageIndex());
|
||||
paginationInfo.setRecordCountPerPage(searchVO.getPageUnit());
|
||||
paginationInfo.setPageSize(searchVO.getPageSize());
|
||||
|
||||
searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
||||
searchVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
||||
searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
||||
|
||||
List<XitBatchRegMngVO> resultList = (List<XitBatchRegMngVO>) xitBatchRegMngService.findList(searchVO);
|
||||
int totCnt = xitBatchRegMngService.findListTotCnt(searchVO);
|
||||
|
||||
paginationInfo.setTotalRecordCount(totCnt);
|
||||
|
||||
model.addAttribute("resultList", resultList);
|
||||
model.addAttribute("resultCnt", totCnt);
|
||||
model.addAttribute("paginationInfo", paginationInfo);
|
||||
break;
|
||||
default:
|
||||
throw new RuntimeException("유효하지 않은 요청 입니다.");
|
||||
}
|
||||
|
||||
|
||||
return FrameworkConstants.FRAMEWORK_JSP_BASE_PATH +"mng/batch/XitBatchRegMng_"+cmd+"_popup"+TILES_TYPE.POPUP.getVal();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치작업관리 CUD 처리</pre>
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @throws IOException
|
||||
* @throws ServletException
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
@RequestMapping(name = "", value = "batchRegMng_{cmd}_proc", method=RequestMethod.POST)
|
||||
public void batchRegMng_cmd_proc(@PathVariable String cmd
|
||||
,@ModelAttribute("vo") XitBatchRegMngVO vo
|
||||
,@RequestParam(value="batchOpertIds", required=false, defaultValue="") String batchOpertIds
|
||||
,BindingResult bindingResult
|
||||
,SessionStatus status
|
||||
,Model model
|
||||
,HttpServletRequest request
|
||||
,HttpServletResponse response
|
||||
) throws ServletException, IOException {
|
||||
|
||||
/**
|
||||
* 처리 분기
|
||||
*/
|
||||
XitLoginVO loginVO = (XitLoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
|
||||
String sLocationUrl = "forward:/framework/biz/mng/batch/batchRegMng_list";
|
||||
String message = null;
|
||||
switch (cmd) {
|
||||
case "insert": //등록
|
||||
//유효성 확인
|
||||
//2020.11.24. 주석처리
|
||||
beanValidator.validate(vo, bindingResult);
|
||||
// beanValidator.validate("batchOpert", vo, bindingResult);
|
||||
batchOpertValidator.validate(vo, bindingResult);
|
||||
if (bindingResult.hasErrors()) {
|
||||
message = xitMessageSource.getMessage("fail.common.insert");
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchRegMng_input";
|
||||
break;
|
||||
}
|
||||
//처리
|
||||
try {
|
||||
vo.setRgtr(loginVO.getUniqId());
|
||||
vo.setMdfr(loginVO.getUniqId());
|
||||
xitBatchRegMngService.addProc(vo);
|
||||
status.setComplete();
|
||||
message = xitMessageSource.getMessage("success.common.insert");
|
||||
sLocationUrl = "redirect:/framework/biz/mng/batch/batchRegMng_list.do";
|
||||
} catch (RuntimeException e) {
|
||||
message = e.getMessage();
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchRegMng_input.do";
|
||||
} catch (Exception e) {
|
||||
message = xitMessageSource.getMessage("fail.common.insert");
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchRegMng_input.do";
|
||||
}
|
||||
break;
|
||||
|
||||
// case "inserts": //다건 등록
|
||||
// break;
|
||||
|
||||
case "update": //수정
|
||||
//유효성 확인
|
||||
//2020.11.24. 주석처리
|
||||
beanValidator.validate(vo, bindingResult);
|
||||
// beanValidator.validate("batchOpert", vo, bindingResult);
|
||||
batchOpertValidator.validate(vo, bindingResult);
|
||||
if (bindingResult.hasErrors()) {
|
||||
model.addAttribute("batchOpert", vo);
|
||||
message = xitMessageSource.getMessage("fail.common.update");
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchRegMng_edit";
|
||||
break;
|
||||
}
|
||||
//처리
|
||||
try {
|
||||
vo.setMdfr(loginVO.getUniqId());
|
||||
xitBatchRegMngService.modifyProc(vo);
|
||||
status.setComplete();
|
||||
message = xitMessageSource.getMessage("success.common.update");
|
||||
} catch (RuntimeException e) {
|
||||
message = e.getMessage();
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchRegMng_edit";
|
||||
} catch (Exception e) {
|
||||
message = xitMessageSource.getMessage("fail.common.update");
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchRegMng_edit";
|
||||
}
|
||||
break;
|
||||
|
||||
case "delete": //삭제
|
||||
//처리
|
||||
try {
|
||||
vo.setMdfr(loginVO.getUniqId());
|
||||
xitBatchRegMngService.removeProc(vo);
|
||||
status.setComplete();
|
||||
message = xitMessageSource.getMessage("success.common.delete");
|
||||
break;
|
||||
} catch (RuntimeException e) {
|
||||
message = e.getMessage();
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchRegMng_edit";
|
||||
} catch (Exception e) {
|
||||
message = xitMessageSource.getMessage("fail.common.delete");
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchRegMng_edit";
|
||||
}
|
||||
break;
|
||||
|
||||
case "deletes": //다건 삭제
|
||||
//처리
|
||||
try {
|
||||
vo.setMdfr(loginVO.getUniqId());
|
||||
xitBatchRegMngService.removesProc(batchOpertIds);
|
||||
status.setComplete();
|
||||
message = xitMessageSource.getMessage("success.common.delete");
|
||||
} catch (RuntimeException e) {
|
||||
message = e.getMessage();
|
||||
} catch (Exception e) {
|
||||
message = xitMessageSource.getMessage("fail.common.delete");
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
new RuntimeException("유효하지 않은 요청 입니다.");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 응답 설정
|
||||
*/
|
||||
/* ============================
|
||||
* 2020.09.10 박민규
|
||||
* 서버 호출 방식에 관계 없이 응답처리가 가능하도록 개선
|
||||
* -기존 호출방식도 유지하며 ajax로 서버호출 시 json 으로 응답처리가 가능하도록 개선
|
||||
* [AS-IS] 반환타입 String, return url에 "forward"구문으로 처리
|
||||
* [TO-BE] 반환타입 void, DispatchServlet으로 forward 처리, ajax 호출인 경우 json응답처리 서비스로 forward
|
||||
============================ */
|
||||
//2020.09.10 주석처리
|
||||
// model.addAttribute("message", message);
|
||||
// return sLocationUrl;
|
||||
model.addAttribute("message", message);
|
||||
if(AjaxUtils.isAjaxRequest(request)){ //ajax 요청시
|
||||
//반환 데이터 설정
|
||||
Map<String, Object> resultMap = new HashMap<String, Object>();
|
||||
resultMap.put("message", message);
|
||||
XitCmmnUtil.forwardForAjaxRequest(request, response, resultMap);
|
||||
}else { //submit 요청 시
|
||||
XitCmmnUtil.forwardForSubmitRequest(request, response, sLocationUrl, model.asMap());
|
||||
}
|
||||
}
|
||||
}
|
@ -1,329 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch.web;
|
||||
|
||||
import cokr.xit.foundation.web.AbstractController;
|
||||
import cokr.xit.fims.framework.biz.cmm.XitLoginVO;
|
||||
import cokr.xit.fims.framework.biz.cmm.service.XitFrameCodeService;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchResultMngSearchVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchResultMngVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.service.XitBatchResultMngService;
|
||||
import cokr.xit.fims.framework.core.constants.FrameworkConstants;
|
||||
import cokr.xit.fims.framework.core.constants.FrameworkConstants.TILES_TYPE;
|
||||
import cokr.xit.fims.framework.core.message.XitMessageSource;
|
||||
import cokr.xit.fims.framework.core.utils.XitCmmnUtil;
|
||||
import cokr.xit.fims.framework.core.validation.XitBeanValidator;
|
||||
import cokr.xit.fims.framework.support.util.AjaxUtils;
|
||||
import org.egovframe.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
|
||||
import org.egovframe.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.support.SessionStatus;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 배치결과관리 Controller
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 7. 13. 오후 5:04:03
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping(name = "", value = "/framework/biz/mng/batch/")
|
||||
public class XitBatchResultMngController extends AbstractController {
|
||||
|
||||
|
||||
@Resource
|
||||
private XitBatchResultMngService xitBatchResultMngService;
|
||||
@Resource
|
||||
private XitFrameCodeService xitFrameCodeService;
|
||||
@Autowired
|
||||
private XitBeanValidator beanValidator;
|
||||
@Resource(name = "xitMessageSource")
|
||||
XitMessageSource xitMessageSource;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치작업관리 목록 페이지</pre>
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
@RequestMapping(name = "", value = "batchResultMng_list", method={RequestMethod.GET, RequestMethod.POST})
|
||||
public String batchResultMng_list(@ModelAttribute("searchVO") XitBatchResultMngSearchVO searchVO, ModelMap model) {
|
||||
return FrameworkConstants.FRAMEWORK_JSP_BASE_PATH +"mng/batch/XitBatchResultMng_list";
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치작업관리 목록 페이지 조회</pre>
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 최유수
|
||||
* @date: 2020. 8. 04.
|
||||
*/
|
||||
@RequestMapping(name = "", value = "batchResultMng_list.ajax", method={RequestMethod.GET, RequestMethod.POST})
|
||||
@ResponseBody
|
||||
public Map<String, Object> batchResultMng_listAjax(@ModelAttribute("searchVO") XitBatchResultMngSearchVO searchVO, ModelMap model) {
|
||||
|
||||
/** paging */
|
||||
PaginationInfo paginationInfo = new PaginationInfo();
|
||||
paginationInfo.setCurrentPageNo(searchVO.getPageNum()>-1?searchVO.getPageNum():searchVO.getPageIndex());
|
||||
paginationInfo.setRecordCountPerPage(searchVO.getFetchSize()>-1?searchVO.getFetchSize():searchVO.getPageUnit());
|
||||
paginationInfo.setPageSize(searchVO.getPageSize());
|
||||
searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
||||
searchVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
||||
searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
||||
|
||||
Map<String, Object> resultMap = new HashMap<String, Object>();
|
||||
try {
|
||||
/**
|
||||
* 조회
|
||||
*/
|
||||
int totCnt = xitBatchResultMngService.findListTotCnt(searchVO);
|
||||
paginationInfo.setTotalRecordCount(totCnt);
|
||||
/**
|
||||
* 반환값 설정
|
||||
*/
|
||||
/* ***************************
|
||||
* tui Grid Response Set
|
||||
*************************** */
|
||||
resultMap.put("result", true); //[tui Grid] result
|
||||
resultMap.put("message", xitMessageSource.getMessage("success.common.select")); //[tui Grid] result message
|
||||
Map<String, Object> data = new HashMap<String, Object>();
|
||||
data.put("contents", xitBatchResultMngService.findList(searchVO)); //[tui Grid] data-contents
|
||||
Map<String, Integer> pagination = new HashMap<String, Integer>();
|
||||
pagination.put("pageNum", searchVO.getPageNum());
|
||||
pagination.put("totalSize", totCnt);
|
||||
data.put("pagination", pagination); //[tui Grid] data-paging
|
||||
resultMap.put("data", data); //[tui Grid] data
|
||||
/* ***************************
|
||||
* //tui Grid Response Set
|
||||
*************************** */
|
||||
} catch (Exception e) {
|
||||
/**
|
||||
* 반환값 설정
|
||||
*/
|
||||
//tui Grid Response Set
|
||||
resultMap.put("result", false); //[tui Grid] result
|
||||
resultMap.put("message", xitMessageSource.getMessage("fail.common.select")); //[tui Grid] result message
|
||||
}
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 요청 페이지로 이동 한다.</pre>
|
||||
* @param page
|
||||
* @param tilesDef 타일즈 적용 Type(none: tiles 미적용)
|
||||
* @param model
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
@RequestMapping(name = "", value = "batchResultMng_{cmd}", method={RequestMethod.GET, RequestMethod.POST})
|
||||
public String batchResultMng_page(@PathVariable String cmd
|
||||
, @RequestParam(value="tilesDef", required=false, defaultValue="") String tilesDef
|
||||
, @ModelAttribute("vo") XitBatchResultMngVO vo
|
||||
, @ModelAttribute("searchVO") XitBatchResultMngSearchVO searchVO
|
||||
, ModelMap model) {
|
||||
switch (cmd) {
|
||||
// case "input": //등록 페이지
|
||||
// break;
|
||||
|
||||
case "edit": //수정 페이지
|
||||
model.addAttribute("resultInfo", xitBatchResultMngService.findView(vo));
|
||||
model.addAttribute("message", xitMessageSource.getMessage("success.common.select"));
|
||||
break;
|
||||
case "view": //상세 페이지
|
||||
break;
|
||||
default:
|
||||
throw new RuntimeException("유효하지 않은 요청 입니다.");
|
||||
}
|
||||
|
||||
|
||||
if(!"".equals(tilesDef))
|
||||
tilesDef = "."+tilesDef;
|
||||
return FrameworkConstants.FRAMEWORK_JSP_BASE_PATH +"mng/batch/XitBatchResultMng_"+cmd+tilesDef;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 요청 팝업 페이지 이동 한다.</pre>
|
||||
* @param page
|
||||
* @param model
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
@RequestMapping(name = "", value = "batchResultMng_{cmd}_popup", method={RequestMethod.GET, RequestMethod.POST})
|
||||
public String batchResultMng_page_popup(@PathVariable String cmd
|
||||
, @ModelAttribute("vo") XitBatchResultMngVO vo
|
||||
, @ModelAttribute("searchVO") XitBatchResultMngSearchVO searchVO
|
||||
, ModelMap model) {
|
||||
switch (cmd) {
|
||||
case "": //
|
||||
break;
|
||||
default:
|
||||
throw new RuntimeException("유효하지 않은 요청 입니다.");
|
||||
}
|
||||
|
||||
|
||||
return FrameworkConstants.FRAMEWORK_JSP_BASE_PATH +"mng/batch/XitBatchResultMng_"+cmd+"_popup"+TILES_TYPE.POPUP.getVal();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치작업관리 CUD 처리</pre>
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @throws IOException
|
||||
* @throws ServletException
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
@RequestMapping(name = "", value = "batchResultMng_{cmd}_proc", method=RequestMethod.POST)
|
||||
public void batchResultMng_cmd_proc(@PathVariable String cmd
|
||||
,@ModelAttribute("vo") XitBatchResultMngVO vo
|
||||
,@ModelAttribute("searchVO") XitBatchResultMngSearchVO searchVO
|
||||
,@RequestParam(value="batchResultIds", required=false, defaultValue="") String batchResultIds
|
||||
,BindingResult bindingResult
|
||||
,SessionStatus status
|
||||
,Model model
|
||||
,HttpServletRequest request
|
||||
,HttpServletResponse response
|
||||
) throws ServletException, IOException {
|
||||
|
||||
/**
|
||||
* 처리 분기
|
||||
*/
|
||||
XitLoginVO loginVO = (XitLoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
|
||||
String sLocationUrl = "forward:/framework/biz/mng/batch/batchResultMng_list";
|
||||
String message = null;
|
||||
switch (cmd) {
|
||||
case "insert": //등록
|
||||
//유효성 확인
|
||||
beanValidator.validate(vo, bindingResult);
|
||||
if (bindingResult.hasErrors()) {
|
||||
message = xitMessageSource.getMessage("fail.common.insert");
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchResultMng_input";
|
||||
break;
|
||||
}
|
||||
//처리
|
||||
try {
|
||||
vo.setRgtr(loginVO.getUniqId());
|
||||
vo.setMdfr(loginVO.getUniqId());
|
||||
xitBatchResultMngService.addProc(vo);
|
||||
status.setComplete();
|
||||
message = xitMessageSource.getMessage("success.common.insert");
|
||||
sLocationUrl = "redirect:/framework/biz/mng/batch/batchResultMng_list.do";
|
||||
} catch (RuntimeException e) {
|
||||
message = e.getMessage();
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchResultMng_input.do";
|
||||
} catch (Exception e) {
|
||||
message = xitMessageSource.getMessage("fail.common.insert");
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchResultMng_input.do";
|
||||
}
|
||||
break;
|
||||
|
||||
// case "inserts": //다건 등록
|
||||
// break;
|
||||
|
||||
case "update": //수정
|
||||
//유효성 확인
|
||||
beanValidator.validate(vo, bindingResult);
|
||||
if (bindingResult.hasErrors()) {
|
||||
model.addAttribute("batchOpert", vo);
|
||||
message = xitMessageSource.getMessage("fail.common.update");
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchResultMng_edit";
|
||||
break;
|
||||
}
|
||||
//처리
|
||||
try {
|
||||
vo.setMdfr(loginVO.getUniqId());
|
||||
xitBatchResultMngService.modifyProc(vo);
|
||||
status.setComplete();
|
||||
message = xitMessageSource.getMessage("success.common.update");
|
||||
} catch (RuntimeException e) {
|
||||
message = e.getMessage();
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchResultMng_edit";
|
||||
} catch (Exception e) {
|
||||
message = xitMessageSource.getMessage("fail.common.update");
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchResultMng_edit";
|
||||
}
|
||||
break;
|
||||
|
||||
case "delete": //삭제
|
||||
//처리
|
||||
try {
|
||||
vo.setMdfr(loginVO.getUniqId());
|
||||
xitBatchResultMngService.removeProc(vo);
|
||||
status.setComplete();
|
||||
message = xitMessageSource.getMessage("success.common.delete");
|
||||
break;
|
||||
} catch (RuntimeException e) {
|
||||
message = e.getMessage();
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchResultMng_edit";
|
||||
} catch (Exception e) {
|
||||
message = xitMessageSource.getMessage("fail.common.delete");
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchResultMng_edit";
|
||||
}
|
||||
break;
|
||||
|
||||
case "deletes": //다건 삭제
|
||||
//처리
|
||||
try {
|
||||
vo.setMdfr(loginVO.getUniqId());
|
||||
xitBatchResultMngService.removesProc(batchResultIds);
|
||||
status.setComplete();
|
||||
message = xitMessageSource.getMessage("success.common.delete");
|
||||
} catch (RuntimeException e) {
|
||||
message = e.getMessage();
|
||||
} catch (Exception e) {
|
||||
message = xitMessageSource.getMessage("fail.common.delete");
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
new RuntimeException("유효하지 않은 요청 입니다.");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 응답 설정
|
||||
*/
|
||||
/* ============================
|
||||
* 2020.09.10 박민규
|
||||
* 서버 호출 방식에 관계 없이 응답처리가 가능하도록 개선
|
||||
* -기존 호출방식도 유지하며 ajax로 서버호출 시 json 으로 응답처리가 가능하도록 개선
|
||||
* [AS-IS] 반환타입 String, return url에 "forward"구문으로 처리
|
||||
* [TO-BE] 반환타입 void, DispatchServlet으로 forward 처리, ajax 호출인 경우 json응답처리 서비스로 forward
|
||||
============================ */
|
||||
//2020.09.10 주석처리
|
||||
// model.addAttribute("message", message);
|
||||
// return sLocationUrl;
|
||||
model.addAttribute("message", message);
|
||||
if(AjaxUtils.isAjaxRequest(request)){ //ajax 요청시
|
||||
//반환 데이터 설정
|
||||
Map<String, Object> resultMap = new HashMap<String, Object>();
|
||||
resultMap.put("message", message);
|
||||
XitCmmnUtil.forwardForAjaxRequest(request, response, resultMap);
|
||||
}else { //submit 요청 시
|
||||
XitCmmnUtil.forwardForSubmitRequest(request, response, sLocationUrl, model.asMap());
|
||||
}
|
||||
}
|
||||
}
|
@ -1,399 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.batch.web;
|
||||
|
||||
import cokr.xit.foundation.web.AbstractController;
|
||||
import cokr.xit.fims.framework.biz.cmm.XitLoginVO;
|
||||
import cokr.xit.fims.framework.biz.cmm.service.XitFrameCodeService;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchScheduleMngSearchVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.XitBatchScheduleMngVO;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.service.BatchScheduler;
|
||||
import cokr.xit.fims.framework.biz.mng.batch.service.XitBatchScheduleMngService;
|
||||
import cokr.xit.fims.framework.core.constants.FrameworkConstants;
|
||||
import cokr.xit.fims.framework.core.constants.FrameworkConstants.TILES_TYPE;
|
||||
import cokr.xit.fims.framework.core.XitCodeVO;
|
||||
import cokr.xit.fims.framework.core.message.XitMessageSource;
|
||||
import cokr.xit.fims.framework.core.utils.XitCmmnUtil;
|
||||
import cokr.xit.fims.framework.core.validation.XitBeanValidator;
|
||||
import cokr.xit.fims.framework.support.util.AjaxUtils;
|
||||
import org.egovframe.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
|
||||
import org.egovframe.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.support.SessionStatus;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 배치스케줄관리 Controller
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 7. 13. 오후 5:04:53
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping(name = "", value = "/framework/biz/mng/batch/")
|
||||
public class XitBatchScheduleMngController extends AbstractController {
|
||||
|
||||
@Resource
|
||||
private XitBatchScheduleMngService xitBatchScheduleMngService;
|
||||
@Resource
|
||||
private XitFrameCodeService xitFrameCodeService;
|
||||
@Autowired
|
||||
private XitBeanValidator beanValidator;
|
||||
@Resource(name = "xitMessageSource")
|
||||
XitMessageSource xitMessageSource; /** 배치스케줄러 서비스 */
|
||||
@Resource(name = "batchScheduler")
|
||||
private BatchScheduler batchScheduler;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치스케줄관리 목록 페이지</pre>
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
@RequestMapping(name = "", value = "batchScheduleMng_list", method={RequestMethod.GET, RequestMethod.POST})
|
||||
public String batchScheduleMng_list(@ModelAttribute("searchVO") XitBatchScheduleMngSearchVO searchVO, ModelMap model) {
|
||||
|
||||
|
||||
|
||||
return FrameworkConstants.FRAMEWORK_JSP_BASE_PATH +"mng/batch/XitBatchScheduleMng_list";
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치스케줄 관리 페이지 조회</pre>
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 김동규
|
||||
* @date: 2020. 7. 31.
|
||||
*/
|
||||
@RequestMapping(name = "", value = "batchScheduleMng_list.ajax", method={RequestMethod.GET, RequestMethod.POST})
|
||||
@ResponseBody
|
||||
public Map<String, Object> batchScheduleMng_listAjax(@ModelAttribute("searchVO") XitBatchScheduleMngSearchVO searchVO, ModelMap model) {
|
||||
|
||||
/** paging */
|
||||
PaginationInfo paginationInfo = new PaginationInfo();
|
||||
paginationInfo.setCurrentPageNo(searchVO.getPageNum()>-1?searchVO.getPageNum():searchVO.getPageIndex());
|
||||
paginationInfo.setRecordCountPerPage(searchVO.getFetchSize()>-1?searchVO.getFetchSize():searchVO.getPageUnit());
|
||||
paginationInfo.setPageSize(searchVO.getPageSize());
|
||||
searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
||||
searchVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
||||
searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
||||
|
||||
Map<String, Object> resultMap = new HashMap<String, Object>();
|
||||
try {
|
||||
/**
|
||||
* 조회
|
||||
*/
|
||||
List<XitBatchScheduleMngVO> resultList = xitBatchScheduleMngService.findList(searchVO);
|
||||
int totCnt = xitBatchScheduleMngService.findListTotCnt(searchVO);
|
||||
/**
|
||||
* 반환값 설정
|
||||
*/
|
||||
/* ***************************
|
||||
* tui Grid Response Set
|
||||
*************************** */
|
||||
resultMap.put("result", true); //[tui Grid] result
|
||||
resultMap.put("message", xitMessageSource.getMessage("success.common.select")); //[tui Grid] result message
|
||||
Map<String, Object> data = new HashMap<String, Object>();
|
||||
data.put("contents", resultList); //[tui Grid] data-contents
|
||||
Map<String, Integer> pagination = new HashMap<String, Integer>();
|
||||
pagination.put("pageNum", searchVO.getPageNum());
|
||||
pagination.put("totalSize", totCnt);
|
||||
data.put("pagination", pagination); //[tui Grid] data-paging
|
||||
resultMap.put("data", data); //[tui Grid] data
|
||||
/* ***************************
|
||||
* //tui Grid Response Set
|
||||
*************************** */
|
||||
} catch (Exception e) {
|
||||
/**
|
||||
* 반환값 설정
|
||||
*/
|
||||
//tui Grid Response Set
|
||||
resultMap.put("result", false); //[tui Grid] result
|
||||
resultMap.put("message", xitMessageSource.getMessage("fail.common.select")); //[tui Grid] result message
|
||||
}
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 요청 페이지로 이동 한다.</pre>
|
||||
* @param page
|
||||
* @param tilesDef 타일즈 적용 Type(none: tiles 미적용)
|
||||
* @param model
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
@RequestMapping(name = "", value = "batchScheduleMng_{cmd}", method={RequestMethod.GET, RequestMethod.POST})
|
||||
public String batchScheduleMng_page(@PathVariable String cmd
|
||||
, @RequestParam(value="tilesDef", required=false, defaultValue="") String tilesDef
|
||||
, @ModelAttribute("vo") XitBatchScheduleMngVO vo
|
||||
, @ModelAttribute("searchVO") XitBatchScheduleMngSearchVO searchVO
|
||||
, ModelMap model) {
|
||||
switch (cmd) {
|
||||
case "input": //등록 페이지
|
||||
referenceData(model);
|
||||
model.addAttribute("batchSchdul", vo);
|
||||
break;
|
||||
|
||||
case "edit": //수정 페이지
|
||||
referenceData(model);
|
||||
model.addAttribute("batchSchdul", xitBatchScheduleMngService.findView(vo));
|
||||
model.addAttribute("message", xitMessageSource.getMessage("success.common.select"));
|
||||
break;
|
||||
|
||||
case "view": //상세 페이지
|
||||
model.addAttribute("resultInfo", xitBatchScheduleMngService.findView(vo));
|
||||
model.addAttribute("message", xitMessageSource.getMessage("success.common.select"));
|
||||
break;
|
||||
default:
|
||||
throw new RuntimeException("유효하지 않은 요청 입니다.");
|
||||
}
|
||||
|
||||
|
||||
if(!"".equals(tilesDef))
|
||||
tilesDef = "."+tilesDef;
|
||||
return FrameworkConstants.FRAMEWORK_JSP_BASE_PATH +"mng/batch/XitBatchScheduleMng_"+cmd+tilesDef;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 요청 팝업 페이지 이동 한다.</pre>
|
||||
* @param page
|
||||
* @param model
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
@RequestMapping(name = "", value = "batchScheduleMng_{cmd}_popup", method={RequestMethod.GET, RequestMethod.POST})
|
||||
public String batchScheduleMng_page_popup(@PathVariable String cmd
|
||||
, @ModelAttribute("vo") XitBatchScheduleMngVO vo
|
||||
, @ModelAttribute("searchVO") XitBatchScheduleMngSearchVO searchVO
|
||||
, ModelMap model) {
|
||||
switch (cmd) {
|
||||
case "": //
|
||||
break;
|
||||
default:
|
||||
throw new RuntimeException("유효하지 않은 요청 입니다.");
|
||||
}
|
||||
|
||||
|
||||
return FrameworkConstants.FRAMEWORK_JSP_BASE_PATH +"mng/batch/XitBatchScheduleMng_"+cmd+"_popup"+TILES_TYPE.POPUP.getVal();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 배치스케줄관리 CUD 처리</pre>
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @throws IOException
|
||||
* @throws ServletException
|
||||
* @date: 2020. 7. 13.
|
||||
*/
|
||||
@RequestMapping(name = "", value = "batchScheduleMng_{cmd}_proc", method=RequestMethod.POST)
|
||||
public void batchScheduleMng_cmd_proc(@PathVariable String cmd
|
||||
,@ModelAttribute("vo") XitBatchScheduleMngVO vo
|
||||
,@ModelAttribute("searchVO") XitBatchScheduleMngSearchVO searchVO
|
||||
,@RequestParam(value="batchSchdulIds", required=false, defaultValue="") String batchSchdulIds
|
||||
,BindingResult bindingResult
|
||||
,SessionStatus status
|
||||
,Model model
|
||||
,HttpServletRequest request
|
||||
,HttpServletResponse response
|
||||
) throws ServletException, IOException {
|
||||
|
||||
/**
|
||||
* 처리 분기
|
||||
*/
|
||||
XitLoginVO loginVO = (XitLoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
|
||||
String sLocationUrl = "forward:/framework/biz/mng/batch/batchScheduleMng_list";
|
||||
String message = null;
|
||||
switch (cmd) {
|
||||
case "insert": //등록
|
||||
//유효성 확인
|
||||
//2020.11.24. 주석처리
|
||||
beanValidator.validate(vo, bindingResult);
|
||||
// beanValidator.validate("batchSchdul", vo, bindingResult);
|
||||
if (bindingResult.hasErrors()) {
|
||||
message = xitMessageSource.getMessage("fail.common.insert");
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchScheduleMng_input";
|
||||
break;
|
||||
}
|
||||
//처리
|
||||
try {
|
||||
vo.setRgtr(loginVO.getUniqId());
|
||||
vo.setMdfr(loginVO.getUniqId());
|
||||
// 배치스케줄 등록
|
||||
xitBatchScheduleMngService.addProc(vo);
|
||||
// 배치스케줄러에 스케줄정보반영
|
||||
XitBatchScheduleMngVO target = xitBatchScheduleMngService.findView(vo);
|
||||
batchScheduler.insertBatchSchdul(target);
|
||||
status.setComplete();
|
||||
message = xitMessageSource.getMessage("success.common.insert");
|
||||
sLocationUrl = "redirect:/framework/biz/mng/batch/batchScheduleMng_list.do";
|
||||
} catch (RuntimeException e) {
|
||||
message = e.getMessage();
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchScheduleMng_input.do";
|
||||
} catch (Exception e) {
|
||||
message = xitMessageSource.getMessage("fail.common.insert");
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchScheduleMng_input.do";
|
||||
}
|
||||
break;
|
||||
|
||||
// case "inserts": //다건 등록
|
||||
// break;
|
||||
|
||||
case "update": //수정
|
||||
//유효성 확인
|
||||
//2020.11.24. 주석처리
|
||||
beanValidator.validate(vo, bindingResult);
|
||||
// beanValidator.validate("batchSchdul", vo, bindingResult);
|
||||
if (bindingResult.hasErrors()) {
|
||||
model.addAttribute("batchOpert", vo);
|
||||
message = xitMessageSource.getMessage("fail.common.update");
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchScheduleMng_edit";
|
||||
break;
|
||||
}
|
||||
//처리
|
||||
try {
|
||||
vo.setMdfr(loginVO.getUniqId());
|
||||
// 배치스케줄 수정
|
||||
xitBatchScheduleMngService.modifyProc(vo);
|
||||
// 배치스케줄러에 스케줄정보반영
|
||||
XitBatchScheduleMngVO target = xitBatchScheduleMngService.findView(vo);
|
||||
batchScheduler.updateBatchSchdul(target);
|
||||
status.setComplete();
|
||||
message = xitMessageSource.getMessage("success.common.update");
|
||||
} catch (RuntimeException e) {
|
||||
message = e.getMessage();
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchScheduleMng_edit";
|
||||
} catch (Exception e) {
|
||||
message = xitMessageSource.getMessage("fail.common.update");
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchScheduleMng_edit";
|
||||
}
|
||||
break;
|
||||
|
||||
case "delete": //삭제
|
||||
//처리
|
||||
try {
|
||||
// 배치스케줄러에 스케줄정보반영
|
||||
batchScheduler.deleteBatchSchdul(vo);
|
||||
// 배치스케줄 삭제
|
||||
xitBatchScheduleMngService.removeProc(vo);
|
||||
status.setComplete();
|
||||
message = xitMessageSource.getMessage("success.common.delete");
|
||||
break;
|
||||
} catch (RuntimeException e) {
|
||||
message = e.getMessage();
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchScheduleMng_edit";
|
||||
} catch (Exception e) {
|
||||
message = xitMessageSource.getMessage("fail.common.delete");
|
||||
sLocationUrl = "forward:/framework/biz/mng/batch/batchScheduleMng_edit";
|
||||
}
|
||||
break;
|
||||
|
||||
case "deletes": //다건 삭제
|
||||
//처리
|
||||
try {
|
||||
xitBatchScheduleMngService.removesProc(batchSchdulIds);
|
||||
status.setComplete();
|
||||
message = xitMessageSource.getMessage("success.common.delete");
|
||||
} catch (RuntimeException e) {
|
||||
message = e.getMessage();
|
||||
} catch (Exception e) {
|
||||
message = xitMessageSource.getMessage("fail.common.delete");
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
new RuntimeException("유효하지 않은 요청 입니다.");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 응답 설정
|
||||
*/
|
||||
/* ============================
|
||||
* 2020.09.10 박민규
|
||||
* 서버 호출 방식에 관계 없이 응답처리가 가능하도록 개선
|
||||
* -기존 호출방식도 유지하며 ajax로 서버호출 시 json 으로 응답처리가 가능하도록 개선
|
||||
* [AS-IS] 반환타입 String, return url에 "forward"구문으로 처리
|
||||
* [TO-BE] 반환타입 void, DispatchServlet으로 forward 처리, ajax 호출인 경우 json응답처리 서비스로 forward
|
||||
============================ */
|
||||
//2020.09.10 주석처리
|
||||
// model.addAttribute("message", message);
|
||||
// return sLocationUrl;
|
||||
model.addAttribute("message", message);
|
||||
if(AjaxUtils.isAjaxRequest(request)){ //ajax 요청시
|
||||
//반환 데이터 설정
|
||||
Map<String, Object> resultMap = new HashMap<String, Object>();
|
||||
resultMap.put("message", message);
|
||||
XitCmmnUtil.forwardForAjaxRequest(request, response, resultMap);
|
||||
}else { //submit 요청 시
|
||||
XitCmmnUtil.forwardForSubmitRequest(request, response, sLocationUrl, model.asMap());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Reference Data 를 설정한다.
|
||||
* @param model 화면용spring Model객체
|
||||
* @throws Exception
|
||||
*/
|
||||
private void referenceData(ModelMap model) {
|
||||
//DBMS종류코드목록을 코드정보로부터 조회
|
||||
List<XitCodeVO> executCycleList = xitFrameCodeService.findCmmnDetailCodes("XIT047");
|
||||
model.addAttribute("executCycleList", executCycleList);
|
||||
//요일구분코드목록을 코드정보로부터 조회
|
||||
List<XitCodeVO> executSchdulDfkSeList = xitFrameCodeService.findCmmnDetailCodes("XIT074");
|
||||
model.addAttribute("executSchdulDfkSeList", executSchdulDfkSeList);
|
||||
|
||||
// 실행스케줄 시, 분, 초 값 설정.
|
||||
Map<String, String> executSchdulHourList = new LinkedHashMap<String, String>();
|
||||
for (int i = 0; i < 24; i++) {
|
||||
if (i < 10) {
|
||||
executSchdulHourList.put("0" + Integer.toString(i), "0" + Integer.toString(i));
|
||||
} else {
|
||||
executSchdulHourList.put(Integer.toString(i), Integer.toString(i));
|
||||
}
|
||||
}
|
||||
model.addAttribute("executSchdulHourList", executSchdulHourList);
|
||||
Map<String, String> executSchdulMntList = new LinkedHashMap<String, String>();
|
||||
for (int i = 0; i < 60; i++) {
|
||||
if (i < 10) {
|
||||
executSchdulMntList.put("0" + Integer.toString(i), "0" + Integer.toString(i));
|
||||
} else {
|
||||
executSchdulMntList.put(Integer.toString(i), Integer.toString(i));
|
||||
}
|
||||
}
|
||||
model.addAttribute("executSchdulMntList", executSchdulMntList);
|
||||
Map<String, String> executSchdulSecndList = new LinkedHashMap<String, String>();
|
||||
for (int i = 0; i < 60; i++) {
|
||||
if (i < 10) {
|
||||
executSchdulSecndList.put("0" + Integer.toString(i), "0" + Integer.toString(i));
|
||||
} else {
|
||||
executSchdulSecndList.put(Integer.toString(i), Integer.toString(i));
|
||||
}
|
||||
}
|
||||
model.addAttribute("executSchdulSecndList", executSchdulSecndList);
|
||||
}
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.code.service;
|
||||
|
||||
import cokr.xit.fims.framework.biz.mng.code.XitZipCodeMngVO;
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 우편번호관리 Service
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 4. 16. 오전 9:38:56
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public interface ZipCodeMgtService {
|
||||
|
||||
List<XitZipCodeMngVO> findZipCodes(final Map<String, Object> paraMap, final RowBounds rowBounds);
|
||||
<T> XitZipCodeMngVO findZipCode(T t);
|
||||
void addZipCode(final XitZipCodeMngVO vo);
|
||||
void modifyZipCode(final XitZipCodeMngVO vo);
|
||||
void removeZipcode(final XitZipCodeMngVO vo);
|
||||
|
||||
void uploadZipCodeByExcel(final FileInputStream fis);
|
||||
}
|
@ -1,67 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.code.service.bean;
|
||||
|
||||
import cokr.xit.foundation.component.AbstractServiceBean;
|
||||
import cokr.xit.fims.framework.biz.mng.code.dao.ZipCodeMgtMapper;
|
||||
import cokr.xit.fims.framework.biz.mng.code.XitZipCodeMngVO;
|
||||
import cokr.xit.fims.framework.biz.mng.code.service.ZipCodeMgtService;
|
||||
import cokr.xit.fims.framework.support.exception.BizRuntimeException;
|
||||
import cokr.xit.fims.framework.support.util.constants.MessageKey;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.egovframe.rte.fdl.excel.EgovExcelService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class ZipCodeMgtServiceBean extends AbstractServiceBean implements ZipCodeMgtService {
|
||||
|
||||
private final ZipCodeMgtMapper mapper;
|
||||
private final EgovExcelService egovExcelService;
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public List<XitZipCodeMngVO> findZipCodes(final Map<String, Object> paraMap, final RowBounds rowBounds) {
|
||||
return mapper.selectZips(paraMap, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public <T> XitZipCodeMngVO findZipCode(T t) {
|
||||
return mapper.selectZip(t);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void addZipCode(final XitZipCodeMngVO vo) {
|
||||
mapper.insertZip(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void modifyZipCode(final XitZipCodeMngVO vo) {
|
||||
mapper.updateZip(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void removeZipcode(final XitZipCodeMngVO vo) {
|
||||
mapper.deleteZip(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public void uploadZipCodeByExcel(FileInputStream fis) {
|
||||
|
||||
//mapper.deleteAllZip(); // 데이타 모두 삭제???
|
||||
try {
|
||||
egovExcelService.uploadExcel("cokr.xit.fims.framework.biz.mng.code.dao.ZipCodeMgtMapper.insertZip", fis, 2, 5000);
|
||||
} catch (Exception e) {
|
||||
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
@ -1,126 +0,0 @@
|
||||
package cokr.xit.fims.framework.biz.mng.code.web;
|
||||
|
||||
import cokr.xit.foundation.web.AbstractController;
|
||||
import cokr.xit.fims.framework.biz.mng.code.XitZipCodeMngVO;
|
||||
import cokr.xit.fims.framework.biz.mng.code.service.ZipCodeMgtService;
|
||||
import cokr.xit.fims.framework.core.constants.FrameworkConstants;
|
||||
import cokr.xit.fims.framework.core.ResultResponse;
|
||||
import cokr.xit.fims.framework.core.utils.XitCmmnUtil;
|
||||
import cokr.xit.fims.framework.core.utils.attachfile.XitAttachFileUtil;
|
||||
import cokr.xit.fims.framework.core.utils.attachfile.XitAttachFileVO;
|
||||
import cokr.xit.fims.framework.support.exception.BizRuntimeException;
|
||||
import cokr.xit.fims.framework.support.mybatis.MybatisUtils;
|
||||
import cokr.xit.fims.framework.support.util.AjaxMessageMapRenderer;
|
||||
import cokr.xit.fims.framework.support.util.Checks;
|
||||
import cokr.xit.fims.framework.support.util.ValidationError;
|
||||
import cokr.xit.fims.framework.support.util.constants.MessageKey;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Controller
|
||||
@RequestMapping(name = "", value = "/framework/biz/mng/code")
|
||||
public class ZipCodeMgtController extends AbstractController {
|
||||
private final ZipCodeMgtService service;
|
||||
|
||||
|
||||
@RequestMapping(name = "", value = "/mngZipCodeMgtPopup")
|
||||
public ModelAndView mngZipCodeMgtPopup(final XitZipCodeMngVO vo) {
|
||||
ModelAndView mav = new ModelAndView();
|
||||
|
||||
mav.addObject("zipVO", Checks.isEmpty(vo.getZip())? new XitZipCodeMngVO(): service.findZipCode(vo));
|
||||
mav.addObject("pageTitle", "우편번호 등록 / 변경");
|
||||
mav.setViewName(FrameworkConstants.FRAMEWORK_JSP_BASE_PATH + "mng/code/mngZipCodeMgtPopup.popup");
|
||||
return mav;
|
||||
}
|
||||
|
||||
@RequestMapping(name = "", value = "/mngZipCodeByExcelPopup")
|
||||
public ModelAndView mngZipCodeByExcelPopup() {
|
||||
ModelAndView mav = new ModelAndView();
|
||||
|
||||
mav.addObject("pageTitle", "우편번호 Excel 파일 업로드");
|
||||
mav.setViewName(FrameworkConstants.FRAMEWORK_JSP_BASE_PATH + "mng/code/mngZipCodeByExcelPopup.popup");
|
||||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping(name = "", value = "/findZipCodes")
|
||||
public ModelAndView findZipCodes(@RequestParam final Map<String, Object> paraMap){
|
||||
return ResultResponse.of(service.findZipCodes(paraMap, MybatisUtils.getPagingInfo(paraMap)));
|
||||
}
|
||||
|
||||
@GetMapping(name = "", value = "/findZipCode")
|
||||
public ModelAndView findZipCode(final XitZipCodeMngVO vo){
|
||||
return ResultResponse.of(service.findZipCode(vo));
|
||||
}
|
||||
|
||||
@PostMapping(name = "", value = "/addZipCode")
|
||||
public ModelAndView addZipCode(final XitZipCodeMngVO vo, final BindingResult bindingResult){
|
||||
ModelAndView mav = new ModelAndView(FrameworkConstants.JSON_VIEW);
|
||||
|
||||
ValidationError.of("zipVO", vo, bindingResult);
|
||||
service.addZipCode(vo);
|
||||
AjaxMessageMapRenderer.success(mav, MessageKey.CMM_INSERT_SUCCESS);
|
||||
return mav;
|
||||
}
|
||||
|
||||
@PostMapping(name = "", value = "/modifyZipCode")
|
||||
public ModelAndView modifyZipCode(final XitZipCodeMngVO vo, final BindingResult bindingResult){
|
||||
ModelAndView mav = new ModelAndView(FrameworkConstants.JSON_VIEW);
|
||||
|
||||
ValidationError.of("zipVO", vo, bindingResult);
|
||||
service.modifyZipCode(vo);
|
||||
AjaxMessageMapRenderer.success(mav, MessageKey.CMM_UPDATE_SUCCESS);
|
||||
return mav;
|
||||
}
|
||||
|
||||
@PostMapping(name = "", value = "/removeZipCode")
|
||||
public ModelAndView removeZipCode(final XitZipCodeMngVO vo){
|
||||
ModelAndView mav = new ModelAndView(FrameworkConstants.JSON_VIEW);
|
||||
|
||||
service.removeZipcode(vo);
|
||||
AjaxMessageMapRenderer.success(mav, MessageKey.CMM_DELETE_SUCCESS);
|
||||
return mav;
|
||||
}
|
||||
|
||||
@PostMapping(name = "", value = "/uploadZipCodeByExcel", consumes = {"multipart/form-data"})
|
||||
//public String uploadZipCodeByExcel(MultipartHttpServletRequest request) {
|
||||
public ModelAndView uploadZipCodeByExcel(HttpServletRequest request) {
|
||||
ModelAndView mav = new ModelAndView(FrameworkConstants.JSON_VIEW);
|
||||
|
||||
//service.uploadZipCodeByExcel()
|
||||
|
||||
List< XitAttachFileVO> listAttchFile = XitAttachFileUtil.fileUpload(request, XitCmmnUtil.setOsPath("/home/tempUpload"), true, 5);
|
||||
|
||||
XitAttachFileVO fileVO = listAttchFile.get(0);
|
||||
if(Checks.isEmpty(fileVO.getFileName())) throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, "업로드할 엑셀파일이 없습니다.");
|
||||
if (!(fileVO.getFileName().toLowerCase().endsWith(".xls")
|
||||
|| fileVO.getFileName().toLowerCase().endsWith(".xlsx"))) throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, "업로드할 엑셀파일이 없습니다.");
|
||||
|
||||
File file = new File(fileVO.getFileFullPath());
|
||||
try(FileInputStream fis = new FileInputStream(file)) {
|
||||
service.uploadZipCodeByExcel(fis);
|
||||
}catch(IOException ie){
|
||||
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, ie.getMessage());
|
||||
}
|
||||
|
||||
|
||||
|
||||
AjaxMessageMapRenderer.success(mav, MessageKey.CMM_SUCCESS);
|
||||
return mav;
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,189 +0,0 @@
|
||||
package cokr.xit.fims.framework.core;
|
||||
|
||||
//import com.fasterxml.jackson.dataformat.xml.XmlMapper;
|
||||
//import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
|
||||
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import cokr.xit.fims.framework.core.constants.FrameworkConstants;
|
||||
import cokr.xit.fims.framework.core.utils.json.ConvertHelper;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Getter @Setter
|
||||
@JacksonXmlRootElement(localName = "result")
|
||||
@SuppressWarnings("rawtypes")
|
||||
public class ResultResponse<T> implements IResponse, Serializable {
|
||||
private static final long SerialVersionUID = 1L;
|
||||
|
||||
private final static String SUCCESS = "200";
|
||||
private final static String NOT_FOUND = "400";
|
||||
private final static String FAILED = "500";
|
||||
private final static String SUCCESS_MESSAGE = "정상 처리 되었습니다.";
|
||||
private final static String NOT_FOUND_MESSAGE = "NOT FOUND";
|
||||
private final static String FAILED_MESSAGE = "서버에서 오류가 발생하였습니다.";
|
||||
|
||||
//private boolean success = true;
|
||||
|
||||
//private int count;
|
||||
|
||||
//private ResultMessage message;
|
||||
|
||||
//private T data;
|
||||
|
||||
//private Paginator paginator;
|
||||
|
||||
//private ModelAndView mav;
|
||||
|
||||
private ResultResponse() {
|
||||
|
||||
}
|
||||
|
||||
private ResultResponse(T data) {
|
||||
ModelAndView mav = new ModelAndView(FrameworkConstants.JSON_VIEW);
|
||||
mav.addObject("result", true);
|
||||
mav.addObject("message", SUCCESS_MESSAGE);
|
||||
mav.addObject("data", data);
|
||||
|
||||
if(data == null){
|
||||
mav.addObject("count", 0);
|
||||
|
||||
}else {
|
||||
// Pageing 처리
|
||||
|
||||
if (Collection.class.isAssignableFrom(data.getClass())) {
|
||||
mav.addObject("count", (((Collection<?>) data).size()));
|
||||
|
||||
} else {
|
||||
mav.addObject("count", 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* return ModelAndView (Grid data)
|
||||
* {
|
||||
* result - true / false
|
||||
* message
|
||||
* data: {
|
||||
* contents - 실행결과 데이타
|
||||
* pagination - 페이징 요청 처리시
|
||||
* }
|
||||
* count - 목록의 수(페이징 요청 처리시는 현재 페이지 목록수)
|
||||
* }
|
||||
* </pre>
|
||||
* @param data
|
||||
* @return
|
||||
* @param <T>
|
||||
*/
|
||||
public static <T> ModelAndView of(T data){
|
||||
ModelAndView mav = new ModelAndView(FrameworkConstants.JSON_VIEW);
|
||||
|
||||
mav.addObject("result", true);
|
||||
mav.addObject("message", SUCCESS_MESSAGE);
|
||||
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("contents", data);
|
||||
mav.addObject("data", map);
|
||||
|
||||
if(data == null){
|
||||
mav.addObject("count", 0);
|
||||
|
||||
}else {
|
||||
// Pageing 처리
|
||||
|
||||
if (Collection.class.isAssignableFrom(data.getClass())) {
|
||||
mav.addObject("count", (((Collection<?>) data).size()));
|
||||
|
||||
} else {
|
||||
mav.addObject("count", 1);
|
||||
}
|
||||
}
|
||||
return mav;
|
||||
}
|
||||
|
||||
public static <T> ModelAndView of(T data, String viewName){
|
||||
ModelAndView mav = new ModelAndView(viewName);
|
||||
|
||||
mav.addObject("result", true);
|
||||
mav.addObject("message", SUCCESS_MESSAGE);
|
||||
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("contents", data);
|
||||
mav.addObject("data", map);
|
||||
|
||||
if(data == null){
|
||||
mav.addObject("count", 0);
|
||||
|
||||
}else {
|
||||
// Pageing 처리
|
||||
|
||||
if (Collection.class.isAssignableFrom(data.getClass())) {
|
||||
mav.addObject("count", (((Collection<?>) data).size()));
|
||||
|
||||
} else {
|
||||
mav.addObject("count", 1);
|
||||
}
|
||||
}
|
||||
return mav;
|
||||
}
|
||||
|
||||
public static <T> ModelAndView of(String attName, T data){
|
||||
ModelAndView mav = new ModelAndView(FrameworkConstants.JSON_VIEW);
|
||||
|
||||
mav.addObject("result", true);
|
||||
mav.addObject("message", SUCCESS_MESSAGE);
|
||||
mav.addObject(attName, data);
|
||||
|
||||
if(data == null){
|
||||
mav.addObject("count", 0);
|
||||
|
||||
}else {
|
||||
// Pageing 처리
|
||||
|
||||
if (Collection.class.isAssignableFrom(data.getClass())) {
|
||||
mav.addObject("count", (((Collection<?>) data).size()));
|
||||
|
||||
} else {
|
||||
mav.addObject("count", 1);
|
||||
}
|
||||
}
|
||||
return mav;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
GsonBuilder builder = new GsonBuilder().serializeNulls(); // value가 null값인 경우도 생성
|
||||
builder.disableHtmlEscaping();
|
||||
return builder.setPrettyPrinting().create().toJson(this);
|
||||
}
|
||||
|
||||
public String convertToJson() {
|
||||
return ConvertHelper.jsonToObject(this);
|
||||
}
|
||||
|
||||
public String asToString(ResultResponse<T> t) {
|
||||
GsonBuilder builder = new GsonBuilder().serializeNulls(); // value가 null값인 경우도 생성
|
||||
builder.disableHtmlEscaping();
|
||||
return builder.setPrettyPrinting().create().toJson(t);
|
||||
}
|
||||
|
||||
// public Map toMap(ObjectMapper mapper){
|
||||
// if(mapper == null) mapper = JsonMapper.getMapper();
|
||||
//
|
||||
// if(mapper instanceof XmlMapper){
|
||||
// Map<String,Object> xmlMap = new HashMap<>();
|
||||
// xmlMap.put("result", this);
|
||||
// return xmlMap;
|
||||
// }
|
||||
//
|
||||
// return mapper.convertValue(this, Map.class);
|
||||
// }
|
||||
}
|
@ -1,107 +0,0 @@
|
||||
package cokr.xit.fims.framework.core;
|
||||
|
||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import cokr.xit.fims.framework.core.utils.json.ConvertHelper;
|
||||
import cokr.xit.fims.framework.support.mybatis.paging.domain.Paginator;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Getter @Setter
|
||||
@JacksonXmlRootElement(localName = "result")
|
||||
@SuppressWarnings("rawtypes")
|
||||
public class ResultResponse2<T> implements IResponse, Serializable {
|
||||
private static final long SerialVersionUID = 1L;
|
||||
|
||||
private final static String SUCCESS = "200";
|
||||
private final static String NOT_FOUND = "400";
|
||||
private final static String FAILED = "500";
|
||||
private final static String SUCCESS_MESSAGE = "SUCCESS";
|
||||
private final static String NOT_FOUND_MESSAGE = "NOT FOUND";
|
||||
private final static String FAILED_MESSAGE = "서버에서 오류가 발생하였습니다.";
|
||||
|
||||
private boolean success = true;
|
||||
|
||||
private int count;
|
||||
|
||||
private ResultMessage message;
|
||||
|
||||
private T data;
|
||||
|
||||
private Paginator paginator;
|
||||
|
||||
private ResultResponse2() {
|
||||
|
||||
}
|
||||
|
||||
private ResultResponse2(T data) {
|
||||
this.message = new ResultMessage(SUCCESS, SUCCESS_MESSAGE);
|
||||
this.data = data;
|
||||
|
||||
if(data == null){
|
||||
this.count = 0;
|
||||
|
||||
}else {
|
||||
// Pageing 처리
|
||||
|
||||
if (Collection.class.isAssignableFrom(data.getClass())) {
|
||||
this.count = (((Collection<?>) data).size());
|
||||
|
||||
} else {
|
||||
this.count = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static <T> ResponseEntity<? extends IResponse> of(T data){
|
||||
return ResponseEntity.ok().body(new ResultResponse2<>(data));
|
||||
}
|
||||
|
||||
public static <T> ResponseEntity<? extends IResponse> of(String name, T data){
|
||||
Map<String, T> map = new HashMap<>();
|
||||
map.put(name, data);
|
||||
return ResponseEntity.ok().body(new ResultResponse2<>(map));
|
||||
}
|
||||
|
||||
public static <T> ResponseEntity<? extends IResponse> of(HttpStatus httpStatus){
|
||||
ResultResponse2 result = new ResultResponse2();
|
||||
result.message = new ResultMessage(SUCCESS, SUCCESS_MESSAGE);
|
||||
return new ResponseEntity<>(result, httpStatus);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
GsonBuilder builder = new GsonBuilder().serializeNulls(); // value가 null값인 경우도 생성
|
||||
builder.disableHtmlEscaping();
|
||||
return builder.setPrettyPrinting().create().toJson(this);
|
||||
}
|
||||
|
||||
public String convertToJson() {
|
||||
return ConvertHelper.jsonToObject(this);
|
||||
}
|
||||
|
||||
public String asToString(ResultResponse2<T> t) {
|
||||
GsonBuilder builder = new GsonBuilder().serializeNulls(); // value가 null값인 경우도 생성
|
||||
builder.disableHtmlEscaping();
|
||||
return builder.setPrettyPrinting().create().toJson(t);
|
||||
}
|
||||
|
||||
// public Map toMap(ObjectMapper mapper){
|
||||
// if(mapper == null) mapper = JsonMapper.getMapper();
|
||||
//
|
||||
// if(mapper instanceof XmlMapper){
|
||||
// Map<String,Object> xmlMap = new HashMap<>();
|
||||
// xmlMap.put("result", this);
|
||||
// return xmlMap;
|
||||
// }
|
||||
//
|
||||
// return mapper.convertValue(this, Map.class);
|
||||
// }
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
package cokr.xit.fims.framework.core;
|
||||
|
||||
import cokr.xit.fims.framework.biz.cmm.XitBbsVO;
|
||||
import lombok.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 롤링 공지사항 VO
|
||||
* @설명: 불필요한 메모리 할당을 지양하기 위해 Singletone 패턴을 이용하여 생성된 객체로 공지사항 목록을 제공 한다.
|
||||
* @최초작성일: 2020. 10. 13. 오후 2:21:53
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode
|
||||
@ToString
|
||||
public class XitRollingNotiVO {
|
||||
|
||||
private List<XitBbsVO> list; //게시글 목록
|
||||
private String bbsId; //게시판 id
|
||||
private String parntsSntncNo; //부모 글 번호
|
||||
private String useYn; //사용 여부
|
||||
|
||||
}
|
@ -1,146 +0,0 @@
|
||||
package cokr.xit.fims.framework.core.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
||||
import springfox.documentation.builders.ApiInfoBuilder;
|
||||
import springfox.documentation.builders.PathSelectors;
|
||||
import springfox.documentation.builders.RequestHandlerSelectors;
|
||||
import springfox.documentation.builders.ResponseMessageBuilder;
|
||||
import springfox.documentation.service.*;
|
||||
import springfox.documentation.spi.DocumentationType;
|
||||
import springfox.documentation.spi.service.contexts.SecurityContext;
|
||||
import springfox.documentation.spring.web.plugins.Docket;
|
||||
import springfox.documentation.swagger.web.*;
|
||||
import springfox.documentation.swagger2.annotations.EnableSwagger2;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@Configuration
|
||||
@EnableSwagger2
|
||||
//@EnableSwagger2WebMvc
|
||||
@EnableWebMvc
|
||||
public class Swagger2Config {
|
||||
|
||||
@Bean
|
||||
public Docket newsApiAll() {
|
||||
return new Docket(DocumentationType.SWAGGER_2)
|
||||
.consumes(getConsumeContentTypes())
|
||||
//.produces(getProduceContentTypes())
|
||||
.groupName("01. FIMS Biz API REST Service")
|
||||
.select()
|
||||
.apis(RequestHandlerSelectors.basePackage("cokr.xit.fims.biz"))
|
||||
.paths(PathSelectors.ant("/fims/biz/**"))
|
||||
.build()
|
||||
.apiInfo(apiInfo())
|
||||
//.globalResponseMessage(RequestMethod.GET, getResMessages())
|
||||
//.securityContexts(Arrays.asList(securityContext()))
|
||||
//.securitySchemes(Arrays.asList(apiKey()))
|
||||
;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Docket newsApiAccelerator() {
|
||||
return new Docket(DocumentationType.SWAGGER_2)
|
||||
.groupName("02. Framework Biz API REST Service")
|
||||
.consumes(getConsumeContentTypes())
|
||||
//.produces(getProduceContentTypes())
|
||||
.select()
|
||||
.apis(RequestHandlerSelectors.basePackage("cokr.xit.fims.framework.biz"))
|
||||
.paths(PathSelectors.ant("/framework/biz/**"))
|
||||
.build()
|
||||
.apiInfo(apiInfo())
|
||||
//.globalResponseMessage(RequestMethod.GET, getResMessages())
|
||||
//.securityContexts(Arrays.asList(securityContext()))
|
||||
//.securitySchemes(Arrays.asList(apiKey()))
|
||||
;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public UiConfiguration uiConfig() {
|
||||
return UiConfigurationBuilder.builder()
|
||||
.deepLinking(false)
|
||||
.displayOperationId(false)
|
||||
.defaultModelsExpandDepth(-1)
|
||||
.defaultModelExpandDepth(1)
|
||||
.defaultModelRendering(ModelRendering.EXAMPLE)
|
||||
.displayRequestDuration(false)
|
||||
.docExpansion(DocExpansion.NONE)
|
||||
.filter(false)
|
||||
.maxDisplayedTags(null)
|
||||
.operationsSorter(OperationsSorter.METHOD)
|
||||
.showExtensions(false)
|
||||
.tagsSorter(TagsSorter.ALPHA)
|
||||
.supportedSubmitMethods(UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS)
|
||||
.validatorUrl(null)
|
||||
.build();
|
||||
}
|
||||
|
||||
private ApiInfo apiInfo() {
|
||||
return new ApiInfoBuilder()
|
||||
.title("통합플랫폼 Rest API Documentation")
|
||||
.description("통합플랫폼 Rest api 서비스")
|
||||
.termsOfServiceUrl("https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:hyb:gate_page")
|
||||
.license("Apache License Version 2.0")
|
||||
.licenseUrl("https://www.egovframe.go.kr")
|
||||
.version("0.1")
|
||||
.build();
|
||||
}
|
||||
|
||||
private List<ResponseMessage> getResMessages() {
|
||||
List<ResponseMessage> responseMessages = new ArrayList<>();
|
||||
responseMessages.add(new ResponseMessageBuilder()
|
||||
.code(200)
|
||||
.message("OK")
|
||||
.build());
|
||||
responseMessages.add(new ResponseMessageBuilder()
|
||||
.code(401)
|
||||
.message("Unauthorized")
|
||||
.build());
|
||||
responseMessages.add(new ResponseMessageBuilder()
|
||||
.code(403)
|
||||
.message("Forbidden")
|
||||
.build());
|
||||
responseMessages.add(new ResponseMessageBuilder()
|
||||
.code(404)
|
||||
.message("Not Found")
|
||||
.build());
|
||||
responseMessages.add(new ResponseMessageBuilder()
|
||||
.code(500)
|
||||
.message("Internal Server Error")
|
||||
.build());
|
||||
|
||||
return responseMessages;
|
||||
}
|
||||
|
||||
private Set<String> getConsumeContentTypes() {
|
||||
Set<String> consumes = new HashSet<>();
|
||||
consumes.add("application/x-www-form-urlencoded");
|
||||
consumes.add("application/json;charset=UTF-8");
|
||||
return consumes;
|
||||
}
|
||||
|
||||
private Set<String> getProduceContentTypes() {
|
||||
Set<String> produces = new HashSet<>();
|
||||
produces.add("application/json;charset=UTF-8");
|
||||
return produces;
|
||||
}
|
||||
|
||||
//ApiKey 정의
|
||||
private ApiKey apiKey() {
|
||||
//return new ApiKey("JWT", "Authorization", "header");
|
||||
return new ApiKey("Authorization", "Authorization", "header");
|
||||
}
|
||||
|
||||
//JWT SecurityContext 구성
|
||||
private SecurityContext securityContext() {
|
||||
return SecurityContext.builder().securityReferences(defaultAuth()).build();
|
||||
}
|
||||
|
||||
private List<SecurityReference> defaultAuth() {
|
||||
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEveryThing");
|
||||
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
|
||||
authorizationScopes[0] = authorizationScope;
|
||||
return Arrays.asList(new SecurityReference("Authorization", authorizationScopes));
|
||||
}
|
||||
}
|
@ -1,57 +0,0 @@
|
||||
package cokr.xit.fims.framework.core.config;
|
||||
|
||||
import nz.net.ultraq.thymeleaf.layoutdialect.LayoutDialect;
|
||||
import nz.net.ultraq.thymeleaf.layoutdialect.decorators.strategies.GroupingStrategy;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.MessageSource;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.ViewResolver;
|
||||
import org.thymeleaf.spring5.SpringTemplateEngine;
|
||||
import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
|
||||
import org.thymeleaf.spring5.view.ThymeleafViewResolver;
|
||||
|
||||
@Configuration
|
||||
public class ThymeleafViewResolverConfig {
|
||||
|
||||
@Bean
|
||||
public SpringResourceTemplateResolver templateResolver() {
|
||||
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
|
||||
//templateResolver.setPrefix("classpath:/templates");
|
||||
|
||||
templateResolver.setPrefix("/WEB-INF/templates/thymeleaf");
|
||||
templateResolver.setSuffix(".html");
|
||||
|
||||
templateResolver.setCharacterEncoding("UTF-8");
|
||||
templateResolver.setTemplateMode("HTML5");
|
||||
templateResolver.setCacheable(false);
|
||||
|
||||
return templateResolver;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public SpringTemplateEngine templateEngine(MessageSource messageSource) {
|
||||
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
|
||||
templateEngine.setTemplateResolver(templateResolver());
|
||||
templateEngine.setTemplateEngineMessageSource(messageSource);
|
||||
templateEngine.addDialect(layoutDialect());
|
||||
return templateEngine;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public LayoutDialect layoutDialect() {
|
||||
return new LayoutDialect(new GroupingStrategy());
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Autowired
|
||||
public ViewResolver viewResolver(MessageSource messageSource) {
|
||||
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
|
||||
viewResolver.setTemplateEngine(templateEngine(messageSource));
|
||||
viewResolver.setCharacterEncoding("UTF-8");
|
||||
String[] viewNames = {"thymeleaf"};
|
||||
viewResolver.setViewNames(viewNames);
|
||||
viewResolver.setOrder(1);
|
||||
return viewResolver;
|
||||
}
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
package cokr.xit.fims.framework.core.config.ignore;
|
||||
|
||||
import org.springframework.cache.CacheManager;
|
||||
import org.springframework.cache.jcache.JCacheCacheManager;
|
||||
import org.springframework.cache.jcache.JCacheManagerFactoryBean;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URL;
|
||||
|
||||
/**
|
||||
* spring version 과의 호환성 문제로 2.X 대 버전 사용
|
||||
*/
|
||||
@Deprecated
|
||||
//@Configuration
|
||||
//@EnableCaching
|
||||
public class CacheConfig3 {
|
||||
|
||||
@Bean
|
||||
public CacheManager cacheManager() throws URISyntaxException {
|
||||
return
|
||||
new JCacheCacheManager();//ehCacheManager().getObject());
|
||||
}
|
||||
|
||||
@Bean
|
||||
public JCacheManagerFactoryBean ehCacheManager() throws URISyntaxException {
|
||||
|
||||
final URL confUrl = getClass().getResource("/spring/service/cache/ehcache3.xml");
|
||||
JCacheManagerFactoryBean cmfb = new JCacheManagerFactoryBean();
|
||||
cmfb.setCacheManagerUri(confUrl.toURI());
|
||||
//cmfb.setConfigLocation(new ClassPathResource("classpath:/spring/service/cache/ehcache3.xml"));
|
||||
return cmfb;
|
||||
}
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
package cokr.xit.fims.framework.core.config.ignore;
|
||||
|
||||
import org.jasypt.encryption.StringEncryptor;
|
||||
import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
|
||||
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
|
||||
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
||||
/**
|
||||
* context-properties.xml 설정 사용
|
||||
* 암호화 필요한 데이타 값 check 필요시 사용
|
||||
*/
|
||||
@Deprecated
|
||||
//@Configuration
|
||||
public class JasyptConfig {
|
||||
|
||||
@Bean(name = "jasyptStringEncryptor")
|
||||
public StringEncryptor stringEncryptor() {
|
||||
final String key = "xit5811807!@";
|
||||
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
|
||||
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
|
||||
config.setPassword(key);
|
||||
config.setAlgorithm("PBEWithMD5AndDES");
|
||||
config.setPoolSize("1");
|
||||
encryptor.setConfig(config);
|
||||
return encryptor;
|
||||
}
|
||||
|
||||
//FIXME : 설정의 암호화 필요시
|
||||
public static void main(String[] args) {
|
||||
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
|
||||
encryptor.setAlgorithm("PBEWithMD5AndDES");
|
||||
encryptor.setPassword("fimsweb!@");
|
||||
String url = encryptor.encrypt("jdbc:log4jdbc:mariadb://211.119.124.9:4407/fims?useUnicode=true&characterEncoding=utf8serverTimezone=Asia/Seoul&useSSL=false");
|
||||
String id = encryptor.encrypt("fimsweb");
|
||||
String passwd = encryptor.encrypt("fimsweb");
|
||||
String passwd2 = encryptor.encrypt("fimsweb!@");
|
||||
String decryptedPass = encryptor.decrypt(url);
|
||||
System.out.println(url);
|
||||
System.out.println(id);
|
||||
System.out.println(passwd);
|
||||
System.out.println(passwd2);
|
||||
System.out.println(decryptedPass);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,70 +0,0 @@
|
||||
package cokr.xit.fims.framework.core.filter;
|
||||
|
||||
import org.springframework.web.filter.OncePerRequestFilter;
|
||||
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: CORS(Cross-Origin Resource Sharing) Filter
|
||||
* @설명: 2009년에 등장한 "교차 출처 자원 공유" 정책.
|
||||
* 대체적으로 프로토콜, 도메인, 포트가 일치해야 동일출처로 인정 된다(SOP).
|
||||
* SOP는 동일출처에서만 자원공유가 가능한 정책으로 다른 출처에서 자원요청시 에러가 발생한다. 이에 대한 예외 조항이 CORS 정책 이다.
|
||||
* SOP 정책에는 다른 출처의 리소스에 접근 할 수 있는 CORS 외에도 몇가지 예외조항이 있는데 실행 가능한 스크립트, 렌더될 이미지, 스타일 시트(css)정도가 있다.
|
||||
* @최초작성일: 2020. 11. 13. 오후 5:10:57
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public class XitCorsFilter extends OncePerRequestFilter{
|
||||
|
||||
|
||||
/** 접근 허용 출처 */
|
||||
private String accessControlAllowOrigin; //ex> * OR www.xerotech.co.kr OR www.xerotech.co.kr, www.naver.com 등... 단, Access-Control-Allow-Credentials: true 설정 시 * 은 사용 불가
|
||||
/** 접근 허용 Method */
|
||||
private String accessControlAllowMethods; //ex> GET, POST, HEAD, PUT, PATCH, DELETE 등..
|
||||
/** */
|
||||
private String accessControlAllowHeaders; //ex> x-requested-with (비표준 ajax 요청 헤더)
|
||||
/** Preflight Request의 결과가 캐쉬에 남아있는 시간(단위: 초(second)) */
|
||||
private String accessControlMaxAge; //ex> 3600 (1시간)
|
||||
|
||||
|
||||
@Override
|
||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
|
||||
throws ServletException, IOException {
|
||||
if(!( this.accessControlAllowOrigin==null || "".equals(this.accessControlAllowOrigin) ))
|
||||
response.addHeader("Access-Control-Allow-Origin", this.accessControlAllowOrigin);
|
||||
|
||||
if(!( this.accessControlAllowMethods==null || "".equals(this.accessControlAllowMethods) ))
|
||||
response.addHeader("Access-Control-Allow-Methods", this.accessControlAllowMethods);
|
||||
|
||||
if(!( this.accessControlAllowHeaders==null || "".equals(this.accessControlAllowHeaders) ))
|
||||
response.addHeader("Access-Control-Allow-Headers", this.accessControlAllowHeaders);
|
||||
|
||||
if(!( this.accessControlMaxAge==null || "".equals(this.accessControlMaxAge) ))
|
||||
response.addHeader("Access-Control-Max-Age", this.accessControlMaxAge);
|
||||
|
||||
filterChain.doFilter(request, response);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void setAccessControlAllowOrigin(String accessControlAllowOrigin) {
|
||||
this.accessControlAllowOrigin = accessControlAllowOrigin;
|
||||
}
|
||||
public void setAccessControlAllowMethods(String accessControlAllowMethods) {
|
||||
this.accessControlAllowMethods = accessControlAllowMethods;
|
||||
}
|
||||
public void setAccessControlAllowHeaders(String accessControlAllowHeaders) {
|
||||
this.accessControlAllowHeaders = accessControlAllowHeaders;
|
||||
}
|
||||
public void setAccessControlMaxAge(String accessControlMaxAge) {
|
||||
this.accessControlMaxAge = accessControlMaxAge;
|
||||
}
|
||||
|
||||
}
|
@ -1,169 +0,0 @@
|
||||
package cokr.xit.fims.framework.core.filter.log;
|
||||
|
||||
import cokr.xit.fims.framework.support.util.Checks;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletRequestWrapper;
|
||||
import java.io.*;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Post parameter log를 보려면 활설화 해야 함
|
||||
*/
|
||||
@Slf4j
|
||||
//@WebFilter(urlPatterns = "/api/*")
|
||||
//@Order(Ordered.HIGHEST_PRECEDENCE)
|
||||
public class ReadableRequestWrapperFilter implements Filter {
|
||||
@Override
|
||||
public void init(FilterConfig filterConfig) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
|
||||
throws IOException, ServletException {
|
||||
|
||||
// Multipart skip
|
||||
//if(!Objects.equals(request.getContentType(), MediaType.MULTIPART_FORM_DATA_VALUE)) {
|
||||
ReadableRequestWrapper wrapper = new ReadableRequestWrapper((HttpServletRequest) request);
|
||||
chain.doFilter(wrapper, response);
|
||||
//}else{
|
||||
// chain.doFilter(request, response);
|
||||
//}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
public static class ReadableRequestWrapper extends HttpServletRequestWrapper {
|
||||
private final Charset encoding;
|
||||
private byte[] rawData;
|
||||
private Map<String, String[]> params = new HashMap<>();
|
||||
|
||||
public ReadableRequestWrapper(HttpServletRequest request) {
|
||||
super(request);
|
||||
this.params.putAll(request.getParameterMap()); // 원래의 파라미터를 저장
|
||||
|
||||
String charEncoding = request.getCharacterEncoding(); // 인코딩 설정
|
||||
this.encoding = !StringUtils.hasText(charEncoding) ? StandardCharsets.UTF_8 : Charset.forName(charEncoding);
|
||||
|
||||
try {
|
||||
InputStream is = request.getInputStream();
|
||||
this.rawData = IOUtils.toByteArray(is); // InputStream 을 별도로 저장한 다음 getReader() 에서 새 스트림으로 생성
|
||||
|
||||
// body 파싱
|
||||
String collect = this.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
|
||||
if (!StringUtils.hasText(collect)) { // body 가 없을경우 로깅 제외
|
||||
return;
|
||||
}
|
||||
if (request.getContentType() != null && request.getContentType().contains(
|
||||
MediaType.MULTIPART_FORM_DATA_VALUE)) { // 파일 업로드시 로깅제외
|
||||
return;
|
||||
}
|
||||
JSONParser jsonParser = new JSONParser();
|
||||
Object parse = jsonParser.parse(collect);
|
||||
if (parse instanceof JSONArray) {
|
||||
JSONArray jsonArray = (JSONArray)jsonParser.parse(collect);
|
||||
setParameter("requestBody", jsonArray.toJSONString());
|
||||
} else {
|
||||
JSONObject jsonObject = (JSONObject)jsonParser.parse(collect);
|
||||
@SuppressWarnings("rawtypes")
|
||||
Iterator iterator = jsonObject.keySet().iterator();
|
||||
if (iterator.hasNext()) {
|
||||
do {
|
||||
String key = (String) iterator.next();
|
||||
setParameter(key, Checks.isNotEmpty(jsonObject.get(key)) ? jsonObject.get(key).toString().replace("\"", "\\\"") : "");
|
||||
} while (iterator.hasNext());
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("ReadableRequestWrapper init error", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getParameter(String name) {
|
||||
String[] paramArray = getParameterValues(name);
|
||||
if (paramArray != null && paramArray.length > 0) {
|
||||
return paramArray[0];
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String[]> getParameterMap() {
|
||||
return Collections.unmodifiableMap(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Enumeration<String> getParameterNames() {
|
||||
return Collections.enumeration(params.keySet());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getParameterValues(String name) {
|
||||
String[] result = null;
|
||||
String[] dummyParamValue = params.get(name);
|
||||
|
||||
if (dummyParamValue != null) {
|
||||
result = new String[dummyParamValue.length];
|
||||
System.arraycopy(dummyParamValue, 0, result, 0, dummyParamValue.length);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public void setParameter(String name, String value) {
|
||||
String[] param = {value};
|
||||
setParameter(name, param);
|
||||
}
|
||||
|
||||
public void setParameter(String name, String[] values) {
|
||||
params.put(name, values);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ServletInputStream getInputStream() {
|
||||
final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(this.rawData);
|
||||
|
||||
return new ServletInputStream() {
|
||||
@Override
|
||||
public boolean isFinished() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isReady() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setReadListener(ReadListener readListener) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
public int read() {
|
||||
return byteArrayInputStream.read();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public BufferedReader getReader() {
|
||||
return new BufferedReader(new InputStreamReader(this.getInputStream(), this.encoding));
|
||||
}
|
||||
}
|
||||
}
|
@ -1,177 +0,0 @@
|
||||
package cokr.xit.fims.framework.core.resolver;
|
||||
|
||||
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
|
||||
import org.apache.poi.hssf.util.HSSFColor;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.apache.poi.ss.util.CellReference;
|
||||
import org.apache.poi.xssf.streaming.SXSSFSheet;
|
||||
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
|
||||
import org.codehaus.jettison.json.JSONArray;
|
||||
import org.codehaus.jettison.json.JSONObject;
|
||||
import org.springframework.web.servlet.view.AbstractView;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class XitExcelViewResolver extends AbstractView {
|
||||
|
||||
|
||||
/** The content type for an Excel response */
|
||||
private static final String CONTENT_TYPE = "application/vnd.ms-excel";
|
||||
|
||||
public XitExcelViewResolver() {
|
||||
setContentType(CONTENT_TYPE);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.springframework.web.servlet.view.AbstractView#renderMergedOutputModel(java.util.Map, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
|
||||
*/
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
@Override
|
||||
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request,
|
||||
HttpServletResponse response) throws Exception {
|
||||
// TODO Auto-generated method stub
|
||||
try {
|
||||
|
||||
Workbook workbook = new SXSSFWorkbook(1000);
|
||||
Sheet sheet = workbook.createSheet();
|
||||
|
||||
List<Object> list = (List<Object>)model.get("contents");
|
||||
String columns = (String)model.get("header");
|
||||
JSONObject jsnobject = new JSONObject("{\"columns\":"+columns+"}");
|
||||
JSONArray jsonArray = jsnobject.getJSONArray("columns");
|
||||
|
||||
String[] numberCheck = new String[jsonArray.length()];
|
||||
|
||||
Row row = null;
|
||||
int rowCount = 0;
|
||||
row = sheet.createRow(rowCount++);
|
||||
|
||||
//일반 스타일
|
||||
CellStyle cellStyleTitle = row.getSheet().getWorkbook().createCellStyle();
|
||||
cellStyleTitle.setAlignment(HorizontalAlignment.CENTER);
|
||||
cellStyleTitle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); //색 설정
|
||||
cellStyleTitle.setFillPattern(FillPatternType.SOLID_FOREGROUND); //색 패턴 설정
|
||||
//cellStyleTitle.setFillBackgroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
|
||||
//cellStyleTitle.setFillPattern(CellStyle.SOLID_FOREGROUND);
|
||||
|
||||
//금액 스타일
|
||||
CellStyle cellStyleAmt = workbook.createCellStyle();
|
||||
cellStyleAmt.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0")); //금액
|
||||
|
||||
//합계 스타일 설정
|
||||
CellStyle sumCellStyle = workbook.createCellStyle();
|
||||
sumCellStyle.setBorderRight(BorderStyle.THIN); //테두리 라인
|
||||
sumCellStyle.setBorderLeft(BorderStyle.THIN); //테두리 라인
|
||||
sumCellStyle.setBorderTop(BorderStyle.THIN); //테두리 라인
|
||||
sumCellStyle.setBorderBottom(BorderStyle.THIN); //테두리 라인
|
||||
sumCellStyle.setFillForegroundColor(HSSFColor.HSSFColorPredefined.PALE_BLUE.getIndex()); //배경색
|
||||
sumCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); //배경색
|
||||
sumCellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0")); //금액
|
||||
|
||||
/* ====================
|
||||
* 헤더(head) 출력
|
||||
==================== */
|
||||
for ( int i=0; i < jsonArray.length(); i++ ) {
|
||||
//S로 초기화
|
||||
numberCheck[i] = "S";
|
||||
|
||||
Cell cell = row.createCell(i);
|
||||
cell.setCellStyle(cellStyleTitle);
|
||||
cell.setCellValue(jsonArray.getJSONObject(i).getString("title"));
|
||||
}
|
||||
|
||||
/* ====================
|
||||
* 바디(body) 출력
|
||||
==================== */
|
||||
for ( Object rowData : list ) {
|
||||
System.out.println("데이터 생성오류 row:" + rowCount);
|
||||
row = sheet.createRow(rowCount++);
|
||||
// manually control how rows are flushed to disk
|
||||
if (rowCount % 500 == 0) {
|
||||
((SXSSFSheet) sheet).flushRows(500); // retain 100 last rows and flush all others
|
||||
}
|
||||
|
||||
for ( int i=0; i<jsonArray.length(); i++ ) {
|
||||
Cell cell = row.createCell(i);
|
||||
|
||||
//data Get
|
||||
String id_txt = jsonArray.getJSONObject(i).getString("name"); //컬럼
|
||||
Object obj = null;
|
||||
if(rowData instanceof Map) {
|
||||
Map<String, Object> map = (Map<String, Object>) rowData;
|
||||
obj = map.get(id_txt);
|
||||
}else {
|
||||
String _getterMethodName = "get" + id_txt.substring(0, 1).toUpperCase() + id_txt.substring(1);
|
||||
Method _getterMethod = rowData.getClass().getMethod(_getterMethodName, (Class[])null);
|
||||
obj = _getterMethod.invoke(rowData, (Object[])null);
|
||||
}
|
||||
|
||||
//data type별 Cell 출력
|
||||
if(obj instanceof Number){
|
||||
String title_txt = jsonArray.getJSONObject(i).getString("title"); //컬럼명
|
||||
if(!title_txt.equals("NO")){
|
||||
//숫자스타일 적용
|
||||
cell.setCellStyle(cellStyleAmt);
|
||||
numberCheck[i] = "N";
|
||||
}
|
||||
|
||||
Double data = Double.valueOf(String.valueOf(obj));
|
||||
cell.setCellType(CellType.NUMERIC);
|
||||
cell.setCellValue(("null").equals(data)?0:data);
|
||||
|
||||
} else {
|
||||
String data = String.valueOf(obj);
|
||||
if ( data.length() == 8 && ( id_txt.matches(".*_DE") || id_txt.matches(".*BIRTH") ) ){
|
||||
data = data.substring(0, 4) + "-" + data.substring(4, 6) + "-" + data.substring(6, 8);
|
||||
}
|
||||
cell.setCellValue(("null").equals(data)?"":data);
|
||||
}
|
||||
|
||||
sheet.autoSizeColumn(i);
|
||||
sheet.setColumnWidth(i, (sheet.getColumnWidth(i)) + 512 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* ====================
|
||||
* 푸터(footer) 출력
|
||||
==================== */
|
||||
//합계
|
||||
int firstRow = 1;
|
||||
row = sheet.createRow(rowCount++);
|
||||
for ( int i=0; i < jsonArray.length(); i++ ) {
|
||||
Cell cell = row.createCell(i);
|
||||
cell.setCellStyle(sumCellStyle);
|
||||
|
||||
String title_txt = jsonArray.getJSONObject(i).getString("title");
|
||||
//title이 "NO"일 경우 합계제외
|
||||
if(!title_txt.equals("NO"))
|
||||
continue;
|
||||
//첫줄이 숫자형식일 경우만 formula 적용
|
||||
if(numberCheck[i].equals("N")){
|
||||
// Cell Reference
|
||||
CellReference cellRef1 = new CellReference(firstRow, cell.getColumnIndex());
|
||||
String fromStr = cellRef1.formatAsString();
|
||||
CellReference cellRef2 = new CellReference(row.getRowNum()-1, cell.getColumnIndex());
|
||||
String toStr = cellRef2.formatAsString();
|
||||
|
||||
cell.setCellType(CellType.NUMERIC);
|
||||
cell.setCellFormula("SUM(" + fromStr + ":" + toStr + ")");
|
||||
}
|
||||
}
|
||||
|
||||
ServletOutputStream out = response.getOutputStream();
|
||||
workbook.write(out);
|
||||
|
||||
if (out != null) out.close();
|
||||
} catch (Exception e) {
|
||||
throw e;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,75 +0,0 @@
|
||||
package cokr.xit.fims.framework.core.resolver;
|
||||
|
||||
import cokr.xit.fims.framework.core.message.XitMessageSource;
|
||||
import cokr.xit.fims.framework.support.util.AjaxUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.security.access.AccessDeniedException;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 예외처리 resolver 클래스
|
||||
* @설명: 서비스 호출방식(submit, ajax)에 따라 exception을 handling 한다.
|
||||
* @최초작성일: 2020. 3. 20. 오후 2:56:55
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public class XitExceptionResolver extends SimpleMappingExceptionResolver{
|
||||
private static final Logger logger = LoggerFactory.getLogger(XitExceptionResolver.class);
|
||||
private String ajaxErrorView;
|
||||
private XitMessageSource xitMessageSource;
|
||||
|
||||
@Override
|
||||
protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response,
|
||||
Object handler, Exception ex) {
|
||||
StackTraceElement[] stackElement = ex.getStackTrace();
|
||||
if(stackElement.length>0){
|
||||
logger.error(String.format("[ERROR Package] %s" , stackElement[0].getClassName() ));
|
||||
logger.error(String.format("[ERROR Point] Class->%s:%s Method->%s", stackElement[0].getFileName(), stackElement[0].getLineNumber(), stackElement[0].getMethodName()));
|
||||
}
|
||||
logger.error("[ERROR PrintStackTrace]:::", ex);
|
||||
|
||||
try {
|
||||
if(ex.getMessage().indexOf("java.sql.SQLSyntaxErrorException")>-1)
|
||||
ex = new RuntimeException("SQL 구문 오류가 발생 했습니다.");
|
||||
else if(ex.getMessage().indexOf("java.sql.SQL")>-1)
|
||||
ex = new RuntimeException("SQL 오류가 발생 했습니다.");
|
||||
else if(ex.getMessage().indexOf("org.apache.ibatis.reflection.ReflectionException: There is no getter for property named")>-1)
|
||||
ex = new RuntimeException("SQL 바인딩 변수의 getter가 없습니다.");
|
||||
|
||||
if(ex instanceof AccessDeniedException)
|
||||
ex = new RuntimeException(xitMessageSource.getMessage("custom.fail.accessDenied"), ex);
|
||||
} catch (Exception e) {}
|
||||
|
||||
//String isAJAX = request.getHeader("AJAX")==null?"false":request.getHeader("AJAX");
|
||||
if(AjaxUtils.isAjaxRequest(request)){
|
||||
String viewName = ajaxErrorView;
|
||||
applyStatusCodeIfPossible(request, response, 500);
|
||||
return getModelAndView(viewName, ex, request);
|
||||
}else{
|
||||
return super.doResolveException(request, response, handler, ex);
|
||||
}
|
||||
}
|
||||
|
||||
public String getAjaxErrorView() {
|
||||
return ajaxErrorView;
|
||||
}
|
||||
|
||||
public void setAjaxErrorView(String ajaxErrorView) {
|
||||
this.ajaxErrorView = ajaxErrorView;
|
||||
}
|
||||
|
||||
public void setXitMessageSource(XitMessageSource xitMessageSource) {
|
||||
this.xitMessageSource = xitMessageSource;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,123 +0,0 @@
|
||||
package cokr.xit.fims.framework.core.utils;
|
||||
|
||||
import org.apache.commons.mail.DefaultAuthenticator;
|
||||
import org.apache.commons.mail.EmailAttachment;
|
||||
import org.apache.commons.mail.EmailException;
|
||||
import org.apache.commons.mail.MultiPartEmail;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
*
|
||||
* <ul>
|
||||
* <li>업무 그룹명: 메일발송 도구</li>
|
||||
* <li>설 명: 메일발송 서비스를 기술한다</li>
|
||||
* <li>작성일: 2018. 8. 29. 오후 2:03:26
|
||||
* </ul>
|
||||
*
|
||||
* @author 박민규
|
||||
*
|
||||
*/
|
||||
|
||||
public class XitEmailUtil implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -4322006921324597283L;
|
||||
private String id;
|
||||
private String password;
|
||||
private int port;
|
||||
private String host;
|
||||
private String emailAddress;
|
||||
private String senderName;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public int getPort() {
|
||||
return port;
|
||||
}
|
||||
|
||||
public void setPort(int port) {
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
public String getHost() {
|
||||
return host;
|
||||
}
|
||||
|
||||
public void setHost(String host) {
|
||||
this.host = host;
|
||||
}
|
||||
|
||||
public String getEmailAddress() {
|
||||
return emailAddress;
|
||||
}
|
||||
|
||||
public void setEmailAddress(String emailAddress) {
|
||||
this.emailAddress = emailAddress;
|
||||
}
|
||||
|
||||
public String getSenderName() {
|
||||
return senderName;
|
||||
}
|
||||
|
||||
public void setSenderName(String senderName) {
|
||||
this.senderName = senderName;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public String send() throws EmailException {
|
||||
MultiPartEmail email = new MultiPartEmail();
|
||||
|
||||
email.setCharset("UTF-8");
|
||||
email.setHostName(this.host);
|
||||
email.setSmtpPort(this.port);
|
||||
email.setStartTLSEnabled(true);
|
||||
email.setAuthenticator(new DefaultAuthenticator(this.id, this.password));
|
||||
email.setSocketConnectionTimeout(60000);
|
||||
email.setSocketTimeout(60000);
|
||||
email.setFrom(this.emailAddress, this.senderName);
|
||||
|
||||
return email.send();
|
||||
}
|
||||
|
||||
public String send(String addTo, String subject, String msg) throws EmailException {
|
||||
return send(addTo, subject, msg, null);
|
||||
}
|
||||
|
||||
public String send(String addTo, String subject, String msg, EmailAttachment attachment) throws EmailException {
|
||||
MultiPartEmail email = new MultiPartEmail();
|
||||
|
||||
email.setCharset("UTF-8");
|
||||
email.setHostName(this.host);
|
||||
email.setSmtpPort(this.port);
|
||||
email.setStartTLSEnabled(true);
|
||||
email.setAuthenticator(new DefaultAuthenticator(this.id, this.password));
|
||||
email.setSocketConnectionTimeout(60000);
|
||||
email.setSocketTimeout(60000);
|
||||
email.setFrom(this.emailAddress, this.senderName);
|
||||
email.addTo(addTo);
|
||||
email.setSubject(subject);
|
||||
email.setMsg(msg);
|
||||
|
||||
if (attachment != null) {
|
||||
email.attach(attachment);
|
||||
}
|
||||
|
||||
return email.send();
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -1,51 +0,0 @@
|
||||
package cokr.xit.fims.framework.core.utils;
|
||||
|
||||
import cokr.xit.fims.framework.biz.cmm.XitZipVO;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.egovframe.rte.fdl.excel.EgovExcelMapping;
|
||||
import org.egovframe.rte.fdl.excel.util.EgovExcelUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 우편번호 매핑 클래스
|
||||
* @설명: 전자정부프레임웍에서 제공하는 EgovExcelService 클래스를 이용하여 우편번호 일괄 등록을 위한 매핑 클래스
|
||||
* org.egovframe.rte.fdl.excel.impl.EgovExcelserviceImpl
|
||||
* @최초작성일: 2020. 4. 21. 오전 10:42:29
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public class XitExcelZipMapping extends EgovExcelMapping {
|
||||
|
||||
/**
|
||||
* 우편번호 엑셀파일 맵핑
|
||||
*/
|
||||
@Override
|
||||
public Object mappingColumn(Row row) {
|
||||
Cell cell0 = row.getCell((short) 0);
|
||||
Cell cell1 = row.getCell((short) 1);
|
||||
Cell cell2 = row.getCell((short) 2);
|
||||
Cell cell3 = row.getCell((short) 3);
|
||||
Cell cell4 = row.getCell((short) 4);
|
||||
Cell cell5 = row.getCell((short) 5);
|
||||
Cell cell6 = row.getCell((short) 6);
|
||||
Cell cell7 = row.getCell((short) 7);
|
||||
|
||||
XitZipVO vo = new XitZipVO();
|
||||
|
||||
vo.setZip (EgovExcelUtil.getValue(cell0));
|
||||
vo.setSn (EgovExcelUtil.getValue(cell1));
|
||||
vo.setCtprvnNm (EgovExcelUtil.getValue(cell2));
|
||||
vo.setSggNm (EgovExcelUtil.getValue(cell3));
|
||||
vo.setEmdNm (EgovExcelUtil.getValue(cell4));
|
||||
vo.setRgtr(EgovExcelUtil.getValue(cell7));
|
||||
|
||||
if (cell5 != null) {vo.setLiBuldNm (EgovExcelUtil.getValue(cell5));}
|
||||
if (cell6 != null) {vo.setLnbrDongHo(EgovExcelUtil.getValue(cell6));}
|
||||
|
||||
|
||||
return vo;
|
||||
}
|
||||
}
|
@ -1,336 +0,0 @@
|
||||
package cokr.xit.fims.framework.core.utils;
|
||||
|
||||
import com.jcraft.jsch.*;
|
||||
import com.jcraft.jsch.ChannelSftp.LsEntry;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* <ul>
|
||||
* <li>업무 그룹명: SFTP 도구</li>
|
||||
* <li>설 명: </li>
|
||||
* <li>작성일: 2019. 9. 30. 오후 6:41:26
|
||||
* </ul>
|
||||
*
|
||||
* @author 박민규
|
||||
*
|
||||
*/
|
||||
public class XitSftpUtil {
|
||||
private Session session = null;
|
||||
private JSch jsch;
|
||||
private Channel channel;
|
||||
private ChannelSftp sftpChannel;
|
||||
private String user;
|
||||
private String host;
|
||||
private int port;
|
||||
private String password;
|
||||
|
||||
public XitSftpUtil(String host, int port, String user, String password) {
|
||||
this.host = host;
|
||||
this.port = port;
|
||||
this.user = user;
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: SFTP 접속 연결</pre>
|
||||
* @throws JSchException void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2019. 9. 30.
|
||||
*/
|
||||
private void connect() throws JSchException {
|
||||
System.out.println("connecting..."+host);
|
||||
// 1. JSch 객체를 생성한다.
|
||||
jsch = new JSch();
|
||||
// 2. 세션 객체를 생성한다(사용자 이름, 접속할 호스트, 포트를 인자로 전달한다.)
|
||||
session = jsch.getSession(user, host,port);
|
||||
// 4. 세션과 관련된 정보를 설정한다.
|
||||
session.setConfig("StrictHostKeyChecking", "no");
|
||||
// 4. 패스워드를 설정한다.
|
||||
session.setPassword(password);
|
||||
// 5. 접속한다.
|
||||
session.connect();
|
||||
// 6. sftp 채널을 연다.
|
||||
channel = session.openChannel("sftp");
|
||||
// 7. 채널에 연결한다.
|
||||
channel.connect();
|
||||
// 8. 채널을 SFTP용 채널 객체로 캐스팅한다.
|
||||
sftpChannel = (ChannelSftp) channel;
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: SFTP 접속 해제</pre>
|
||||
* void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2019. 9. 30.
|
||||
*/
|
||||
private void disconnect() {
|
||||
if(session.isConnected()){
|
||||
System.out.println("disconnecting...");
|
||||
sftpChannel.disconnect();
|
||||
channel.disconnect();
|
||||
session.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 파일 업로드</pre>
|
||||
* @param localPathName 업로드 파일 로컬 경로(파일명 포함)
|
||||
* @param remoteDirPath 원격지 디렉토리 경로
|
||||
* @throws Exception void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @throws Exception
|
||||
* @date: 2019. 9. 30.
|
||||
*/
|
||||
public void upload(String localPathName, String remoteDirPath) throws Exception {
|
||||
FileInputStream fis = null;
|
||||
// 앞서 만든 접속 메서드를 사용해 접속한다.
|
||||
connect();
|
||||
try {
|
||||
// Change to output directory
|
||||
sftpChannel.cd(remoteDirPath);
|
||||
|
||||
// Upload file
|
||||
File file = new File(localPathName);
|
||||
// 입력 파일을 가져온다.
|
||||
fis = new FileInputStream(file);
|
||||
// 파일을 업로드한다.
|
||||
sftpChannel.put(fis, file.getName());
|
||||
|
||||
fis.close();
|
||||
System.out.println("File uploaded successfully - "+ file.getAbsolutePath());
|
||||
} catch (SftpException e) {
|
||||
throw e;
|
||||
} catch (FileNotFoundException e) {
|
||||
throw e;
|
||||
} catch (IOException e) {
|
||||
throw e;
|
||||
} finally {
|
||||
disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 파일 다운로드</pre>
|
||||
* @param remotePathName 원격지 파일 경로(파일명 포함)
|
||||
* @param localDirPath 로컬 다운로드 경로
|
||||
* @throws Exception void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2019. 9. 30.
|
||||
*/
|
||||
public void download(String remotePathName, String localDirPath) throws Exception {
|
||||
byte[] buffer = new byte[1024];
|
||||
BufferedInputStream bis;
|
||||
connect();
|
||||
try {
|
||||
// Change to output directory
|
||||
String cdDir = remotePathName.substring(0, remotePathName.lastIndexOf("/") + 1);
|
||||
sftpChannel.cd(cdDir);
|
||||
|
||||
File file = new File(remotePathName);
|
||||
bis = new BufferedInputStream(sftpChannel.get(file.getName()));
|
||||
|
||||
File newFile = new File(localDirPath + "/" + file.getName());
|
||||
|
||||
// Download file
|
||||
OutputStream os = new FileOutputStream(newFile);
|
||||
BufferedOutputStream bos = new BufferedOutputStream(os);
|
||||
int readCount;
|
||||
while ((readCount = bis.read(buffer)) > 0) {
|
||||
bos.write(buffer, 0, readCount);
|
||||
}
|
||||
bis.close();
|
||||
bos.close();
|
||||
System.out.println("File downloaded successfully - "+ file.getAbsolutePath());
|
||||
|
||||
} catch (SftpException e) {
|
||||
throw e;
|
||||
} catch (FileNotFoundException e) {
|
||||
throw e;
|
||||
} catch (IOException e) {
|
||||
throw e;
|
||||
} finally {
|
||||
disconnect();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 파일 목록 다운로드</pre>
|
||||
* @param remotePathName 원격지 파일 경로(파일명 포함)
|
||||
* @param localDirPath 로컬 다운로드 경로
|
||||
* @throws Exception void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2019. 9. 30.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public void downloads(String remotePathName, String localDirPath, String startsWithFileName, String endsWithFileName) throws Exception {
|
||||
byte[] buffer = new byte[1024];
|
||||
BufferedInputStream bis;
|
||||
connect();
|
||||
try {
|
||||
// Change to output directory
|
||||
String cdDir = remotePathName.substring(0, remotePathName.lastIndexOf("/") + 1);
|
||||
sftpChannel.cd(cdDir);
|
||||
|
||||
// File List
|
||||
List<File> arrFile = new ArrayList<File>();
|
||||
Vector<LsEntry> vector = sftpChannel.ls(remotePathName);
|
||||
// LsEntrySelector selector = new lsen
|
||||
// Vector<LsEntry> vector = sftpChannel.ls(remotePathName, startsWithFileName);
|
||||
// String cmd = String.format("%s | grep %s", remotePathName, startsWithFileName);
|
||||
// System.out.println(cmd);
|
||||
for(LsEntry lsEntry : vector) {
|
||||
System.out.println(lsEntry.getFilename());
|
||||
if(lsEntry.getFilename().startsWith(startsWithFileName)&&lsEntry.getFilename().endsWith(endsWithFileName))
|
||||
arrFile.add(new File(remotePathName+lsEntry.getFilename()));
|
||||
}
|
||||
|
||||
for(File file : arrFile) {
|
||||
bis = new BufferedInputStream(sftpChannel.get(file.getName()));
|
||||
File newFile = new File(localDirPath + "/" + file.getName());
|
||||
|
||||
// Download file
|
||||
OutputStream os = new FileOutputStream(newFile);
|
||||
BufferedOutputStream bos = new BufferedOutputStream(os);
|
||||
int readCount;
|
||||
while ((readCount = bis.read(buffer)) > 0) {
|
||||
bos.write(buffer, 0, readCount);
|
||||
}
|
||||
bis.close();
|
||||
bos.close();
|
||||
System.out.println("File downloaded successfully - "+ file.getAbsolutePath());
|
||||
}
|
||||
|
||||
} catch (SftpException e) {
|
||||
throw e;
|
||||
} catch (FileNotFoundException e) {
|
||||
throw e;
|
||||
} catch (IOException e) {
|
||||
throw e;
|
||||
} finally {
|
||||
disconnect();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// private Session session = null;
|
||||
// private Channel channel = null;
|
||||
// private ChannelSftp channelSftp = null;
|
||||
//
|
||||
// public void init(){
|
||||
// String url = "...";
|
||||
// String user = "...";
|
||||
// String password = "...";
|
||||
//
|
||||
// System.out.println(url);
|
||||
// //JSch 객체 생성
|
||||
// JSch jsch = new JSch();
|
||||
// try {
|
||||
// //세션객체 생성 ( user , host, port )
|
||||
// session = jsch.getSession(user, url);
|
||||
//
|
||||
// //password 설정
|
||||
// session.setPassword(password);
|
||||
//
|
||||
// //세션관련 설정정보 설정
|
||||
// java.util.Properties config = new java.util.Properties();
|
||||
//
|
||||
// //호스트 정보 검사하지 않는다.
|
||||
// config.put("StrictHostKeyChecking", "no");
|
||||
// session.setConfig(config);
|
||||
//
|
||||
// //접속
|
||||
// session.connect();
|
||||
//
|
||||
// //sftp 채널 접속
|
||||
// channel = session.openChannel("sftp");
|
||||
// channel.connect();
|
||||
//
|
||||
// } catch (JSchException e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// channelSftp = (ChannelSftp) channel;
|
||||
//
|
||||
// }
|
||||
//
|
||||
// // 단일 파일 업로드
|
||||
// public void upload( String dir , File file){
|
||||
// FileInputStream in = null;
|
||||
//
|
||||
// try{ //파일을 가져와서 inputStream에 넣고 저장경로를 찾아 put
|
||||
// in = new FileInputStream(file);
|
||||
// channelSftp.cd(dir);
|
||||
// channelSftp.put(in,file.getName());
|
||||
// }catch(SftpException e){
|
||||
// e.printStackTrace();
|
||||
// }catch(FileNotFoundException e){
|
||||
// e.printStackTrace();
|
||||
// }finally{
|
||||
// try{
|
||||
// in.close();
|
||||
// } catch(IOException ioe){
|
||||
// ioe.printStackTrace();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // 단일 파일 다운로드
|
||||
// public InputStream download(String dir, String fileNm){
|
||||
// InputStream in = null;
|
||||
// String path = "...";
|
||||
// try{ //경로탐색후 inputStream에 데이터를 넣음
|
||||
// channelSftp.cd(path+dir);
|
||||
// in = channelSftp.get(fileNm);
|
||||
//
|
||||
// }catch(SftpException se){
|
||||
// se.printStackTrace();
|
||||
// }
|
||||
//
|
||||
// return in;
|
||||
// }
|
||||
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue