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(); JobKey key = jobDetail.getKey(); String name = key.getName();//数据获取名称 /** * 获取任务中保存的方法名字,动态调用方法 */ String methodName = dataMap.getString("jobMethodName"); try { MdmJob job = new MdmJob(); Method method = job.getClass().getMethod(methodName,String.class); method.invoke(job,name); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } /** * 调用MDM接口进行数据获取物料 * @return */ public String obtainMdmData(String name){ mdmUtils = (MdmUtils) applicationContext.getBean("mdmUtils"); logger.info("MDM数据获取开始"); mdmUtils.queryMaterial(name); return ""; } /** * 调用MDM计量单位数据获取 * @throws BeansException */ public String obtainMdmUnitData(String name){ mdmUtils = (MdmUtils) applicationContext.getBean("mdmUtils"); logger.info("MDM计量单位数据获取开始"); mdmUtils.queryUnit(name); return ""; } @Override public void setApplicationContext(ApplicationContext context) throws BeansException { applicationContext = context; } }