package com.itstyle.mdm.job;
|
|
import com.itstyle.mdm.utils.MdmUtils;
|
import com.itstyle.Application;
|
import org.quartz.*;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.BeansException;
|
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContextAware;
|
|
import java.io.Serializable;
|
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.Method;
|
|
/**
|
* MDM主数据获取
|
*/
|
@DisallowConcurrentExecution
|
public class MdmJob implements Job, Serializable, ApplicationContextAware {
|
private static final Logger logger = LoggerFactory.getLogger(Application.class);
|
private static final long serialVersionUID = 1L;
|
private static ApplicationContext applicationContext;
|
private static MdmUtils mdmUtils;
|
|
|
@Override
|
public void execute(JobExecutionContext context) throws JobExecutionException {
|
JobDetail jobDetail = context.getJobDetail();
|
JobDataMap dataMap = jobDetail.getJobDataMap();
|
/**
|
* 获取任务中保存的方法名字,动态调用方法
|
*/
|
String methodName = dataMap.getString("jobMethodName");
|
try {
|
MdmJob job = new MdmJob();
|
Method method = job.getClass().getMethod(methodName);
|
method.invoke(job);
|
} catch (NoSuchMethodException e) {
|
e.printStackTrace();
|
} catch (IllegalAccessException e) {
|
e.printStackTrace();
|
} catch (InvocationTargetException e) {
|
e.printStackTrace();
|
}
|
}
|
|
|
/**
|
* 调用MDM接口进行数据获取物料
|
* @return
|
*/
|
public String obtainMdmData(){
|
mdmUtils = (MdmUtils) applicationContext.getBean("mdmUtils");
|
logger.info("MDM数据获取开始");
|
mdmUtils.queryMaterial();
|
return "";
|
}
|
|
/**
|
* 调用MDM计量单位数据获取
|
* @throws BeansException
|
*/
|
public String obtainMdmUnitData(){
|
mdmUtils = (MdmUtils) applicationContext.getBean("mdmUtils");
|
logger.info("MDM计量单位数据获取开始");
|
mdmUtils.queryMaterial();
|
return "";
|
}
|
|
@Override
|
public void setApplicationContext(ApplicationContext context) throws BeansException {
|
applicationContext = context;
|
}
|
}
|