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; } }