Browse Source

定时任务导入台区停电数据

郎学彬 5 years ago
parent
commit
b282a86205

+ 7 - 2
pom.xml

@@ -23,7 +23,7 @@
 		<commons-httpclient.version>3.1</commons-httpclient.version>
 		<!-- about db config -->
 		<ojdbc.version>11.2.0.4</ojdbc.version>
-		<mysql_driver.version>5.1.42</mysql_driver.version>
+		<mysql_driver.version>8.0.16</mysql_driver.version>
 		<mybatis.version>3.4.4</mybatis.version>
 		<dbcp.version>2.1.1</dbcp.version>
 		<druid.version>1.0.18</druid.version>
@@ -322,7 +322,7 @@
 		<dependency>
 			<groupId>mysql</groupId>
 			<artifactId>mysql-connector-java</artifactId>
-			<version>5.1.25</version>
+			<version>8.0.16</version>
 		</dependency>
 		<dependency>
 			<groupId>javax.servlet</groupId>
@@ -353,6 +353,11 @@
 			<version>1.1.3.1</version>
 		</dependency>
 		<dependency>
+         <groupId>org.quartz-scheduler</groupId>
+         <artifactId>quartz</artifactId>
+         <version>2.2.2</version>
+     </dependency>
+		<dependency>
 			<groupId>org.apache.httpcomponents</groupId>
 			<artifactId>httpmime</artifactId>
 			<version>4.3.5</version>

+ 136 - 0
src/main/java/com/minpay/common/action/OriginalTask.java

@@ -0,0 +1,136 @@
+package com.minpay.common.action;
+
+import java.sql.SQLException;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import com.minpay.common.util.CommonUtil;
+import com.minpay.common.util.DateUtil;
+import com.minpay.common.util.NewDBJdbcUtils;
+import com.minpay.common.util.OldDBJdbcUtils;
+import com.minpay.db.table.own.mapper.SequenceMapper;
+import com.startup.minpay.frame.business.IMINAction;
+import com.startup.minpay.frame.exception.MINBusinessException;
+import com.startup.minpay.frame.service.base.IMINDataBaseService;
+import com.startup.minpay.frame.service.base.Service;
+
+/**
+ * 电网原始数据导入
+ * @author langxb@minpay.cc
+ */
+public class OriginalTask {
+	/**
+	 * 台区停电数据导入
+	 * @param start 开始位置,从0行开始查询
+	 * @param pageSize 偏移量 一页多少数据
+	 * @throws SQLException
+	 * @throws MINBusinessException
+	 * @throws ParseException
+	 */
+	public static void tqtdData(int start,int pageSize)  throws SQLException, MINBusinessException, ParseException {
+		System.out.println("<----------------电网台区停电数据导入开始--------->");
+		IMINDataBaseService db = Service.lookup(IMINDataBaseService.class);
+		//当前报表库
+		OldDBJdbcUtils oldJdbc = new OldDBJdbcUtils();
+		oldJdbc.getConnection();
+		//rpa数据库
+		NewDBJdbcUtils newJdbc = new NewDBJdbcUtils();
+		newJdbc.getConnection();
+		
+		String sqlCount = "SELECT sus_id FROM suspected_power_failure WHERE sus_data_date LIKE ? ORDER BY sus_id DESC";
+		//昨日日期
+		String yesterday = DateUtil.yesterday();
+		//查询昨日数据
+		List<Object> params = new ArrayList<Object>();
+		params.add(yesterday+"%");	
+		List<Map<String, Object>> resCount = newJdbc.findModeResult(sqlCount, params);
+		//开始分页
+//		int start = 0;//开始位置,从0行开始查询
+//		int pageSize = 20;//偏移量
+		int numrows =  resCount.size();//SELECT COUNT( * )  FROM news_comment,这里是总的行数
+		int pages = (int)(numrows / pageSize);//根据偏移量计算需要翻多少页
+		if (numrows % pageSize > 0){
+			pages++;
+		}
+		System.out.println(start + "————————————————————————————————————————" + pageSize);
+		
+		
+		String insertSql = "insert into dw_file_detail_00 ("
+				+ "DFD0_ID,DFD0_ADDRESS_NUM,DFD0_ADDRESS_NAME, "
+				+ "DFD0_DATE,DFD0_AREA,DFD0_COMONPANY_NAME,"
+				+ "DFD0_TERMINAL_NAME,DFD0_TERMINAL_NUM,DFD0_TERMINAL_ADDRESS,"
+				+ "DFD0_START_TIME,DFD0_END_TIME)"
+				+ "values ("
+				+ "?,?,?,"
+				+ "?,?,?,"
+				+ "?,?,?,"
+				+ "?,?)";
+		while(pages>0){
+			String sql = "SELECT sus_id,sus_name_of_taiwan_district,sus_terminal_name,"
+						+ 	"sus_terminal_address_code,sus_data_date,sus_blackout_time,"
+						+ 	"sus_call_time,sus_unit_name,sus_station_area_number,sus_terminal_number,region "
+						+ "FROM suspected_power_failure "
+						+ "LEFT JOIN taiwan_district_manager_daixiugai "
+						+ "ON taiwan_District_number=sus_station_area_number "
+						+ "WHERE sus_data_date LIKE ? "
+						+ "GROUP BY sus_id "
+						+ "ORDER BY sus_id DESC "
+						+ "limit "+start+","+ pageSize;
+			List<Map<String, Object>> resList = newJdbc.findModeResult(sql, params);
+			int i=0;
+			//循环插入数据
+			for(Map<String,Object> map:resList){
+				//台区停电表导入数据
+				String fileDetailId = db.getMybatisMapper(SequenceMapper.class).getSequence("FILE_DETAIL_00_NO");
+				List<Object> params1 = new ArrayList<Object>();
+				Date sjrqDate = (Date) map.get("sus_data_date");
+				Date tdsjDate = (Date) map.get("sus_blackout_time");
+				Date ldsjDate = (Date) map.get("sus_call_time");
+				String sjrq = DateUtil.format(sjrqDate,"yyyyMMdd");
+				String tdsj = DateUtil.format(tdsjDate,"yyyyMMddHHmmss");
+				String ldsj = DateUtil.format(ldsjDate,"yyyyMMddHHmmss");
+				//id
+				params1.add(fileDetailId);		
+				//台区编号
+				params1.add(map.get("sus_station_area_number"));
+				//台区名称
+				params1.add(map.get("sus_name_of_taiwan_district"));	
+				//数据日期
+				params1.add(sjrq);	
+				//单位
+				params1.add(map.get("region"));		
+				//供电所名称
+				params1.add(map.get("sus_unit_name"));
+				//终端名称
+				params1.add(map.get("sus_terminal_name"));	
+				//终端编号
+				params1.add(map.get("sus_terminal_number"));		
+				//终端地址码
+				params1.add(map.get("sus_terminal_address_code"));	
+				//停电时间
+				params1.add(tdsj);	
+				//来电时间
+				params1.add(ldsj);				
+				boolean a = oldJdbc.updateByPreparedStatement(insertSql, params1);
+				if(a == true){
+					System.out.println("低电压插入:" + params1 + "	数量:" + (i+1) +"	原主键:"+map.get("sus_id"));
+				}else{
+					System.out.println("!!!!!!!!!!!!————出现异常————!!!!!!!!!!!!");
+				}
+				i++;
+			}
+			start+=pageSize;
+			pages--;
+		}
+			oldJdbc.releaseConn();
+			newJdbc.releaseConn();
+//			//递归处理分页
+			System.out.println("<----------------电网台区停电数据导入结束--------->");
+		
+	}
+
+	
+}

+ 31 - 0
src/main/java/com/minpay/common/action/RunOfflineService.java

@@ -0,0 +1,31 @@
+package com.minpay.common.action;
+
+import com.startup.minpay.util.Log;
+
+/**
+ * 电网元数据导入
+ * @author langxb
+ *
+ */
+public class RunOfflineService {
+	private int timeout;
+	private static int i = 0;
+
+	// 调度工厂实例化后,经过timeout时间开始执行调度
+	public void setTimeout(int timeout) {
+		this.timeout = timeout;
+	}
+
+	/**
+	 * 要调度的具体任务
+	 * @throws Exception 
+	 */
+	public void execute() throws Exception{
+		Log.info("跑批任务开始...._-------------");
+		//台区停电数据导入
+//		OriginalTask.tqtdData(0,2);
+		
+		
+		Log.info("跑批任务结束...._-------------");
+	}
+}

+ 17 - 0
src/main/java/com/minpay/common/util/DateUtil.java

@@ -679,4 +679,21 @@ public class DateUtil {
 			cal.add(Calendar.YEAR, year);
 			return format.format(cal.getTime());
 		}
+		/**
+		 * 获取昨日日期
+		 * @param time 时间
+		 * @param day	天
+		 * @return 返回yyyy-MM-dd格式
+		 * @throws ParseException 
+		 */
+		public static String yesterday() throws ParseException{
+			SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+			String  date = getDifferentTimeByFormat("yyyy-MM-dd");
+			Date d = format.parse(date);
+			format.format(d);
+			Calendar cal=Calendar.getInstance();
+			cal.setTime(d);
+			cal.add(Calendar.DATE, -1);
+			return format.format(cal.getTime());
+		}
 }

+ 371 - 0
src/main/java/com/minpay/common/util/JdbcUtils.java

@@ -0,0 +1,371 @@
+package com.minpay.common.util;
+
+import java.lang.reflect.Field;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 连接数据库
+ * 
+ * 因为是数据迁移,数据量会很大,分页要采用下面的方式,自己拼装
+ * limit m语句:
+ * select * from dept where deptno >10 order by deptno asc limit n;//下一页
+ * select * from dept where deptno <60 order by deptno desc limit n//上一页
+ * 这种方式不管翻多少页只需要扫描n条数据。
+ * @author zhangzz
+ *
+ */
+public class JdbcUtils {
+	static String imgUrlPath = "http://img.xx.com/imgpath/oldImngpath/";
+	//数据库用户名
+	protected static String USERNAME = "";
+	//数据库密码
+	protected static String PASSWORD = "";
+	//驱动信息 
+	protected static String DRIVER = "com.mysql.cj.jdbc.Driver";
+	//数据库地址
+	protected static String URL = "";
+	private Connection connection;
+	private PreparedStatement pstmt;
+	private ResultSet resultSet;
+	public JdbcUtils() {
+		// TODO Auto-generated constructor stub
+		try{
+			Class.forName(DRIVER);
+		}catch(Exception e){
+
+		}
+	}
+	
+	/**
+	 * 获得数据库的连接
+	 * @return
+	 */
+	public Connection getConnection(){
+		try {
+			connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
+		} catch (SQLException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		checkConnect();
+		return connection;
+	}
+
+	public void checkConnect() {
+		if(connection == null) {
+			try   
+			{   
+				Thread.currentThread().sleep(1000);//毫秒   
+			}   
+			catch(Exception e){}  
+			getConnection();
+			checkConnect();
+		}
+		return;
+	}
+	
+	/**
+	 * 增加、删除、改
+	 * @param sql
+	 * @param params
+	 * @return
+	 * @throws SQLException
+	 */
+	public boolean updateByPreparedStatement(String sql, List<Object>params)throws SQLException{
+		boolean flag = false;
+		int result = -1;
+		pstmt = connection.prepareStatement(sql);
+		int index = 1;
+		if(params != null && !params.isEmpty()){
+			for(int i=0; i<params.size(); i++){
+				pstmt.setObject(index++, params.get(i));
+			}
+		}
+		result = pstmt.executeUpdate();
+		flag = result > 0 ? true : false;
+		return flag;
+	}
+
+	/**
+	 * 查询单条记录
+	 * @param sql
+	 * @param params
+	 * @return
+	 * @throws SQLException
+	 */
+	public Map<String, Object> findSimpleResult(String sql, List<Object> params) throws SQLException{
+		Map<String, Object> map = new HashMap<String, Object>();
+		int index  = 1;
+		pstmt = connection.prepareStatement(sql);
+		if(params != null && !params.isEmpty()){
+			for(int i=0; i<params.size(); i++){
+				pstmt.setObject(index++, params.get(i));
+			}
+		}
+		resultSet = pstmt.executeQuery();//返回查询结果
+		ResultSetMetaData metaData = resultSet.getMetaData();
+		int col_len = metaData.getColumnCount();
+		while(resultSet.next()){
+			for(int i=0; i<col_len; i++ ){
+				String cols_name = metaData.getColumnName(i+1);
+				Object cols_value = resultSet.getObject(cols_name);
+				if(cols_value == null){
+					cols_value = "";
+				}
+				map.put(cols_name, cols_value);
+			}
+		}
+		return map;
+	}
+
+	/**查询多条记录
+	 * @param sql
+	 * @param params
+	 * @return
+	 * @throws SQLException
+	 */
+	public List<Map<String, Object>> findModeResult(String sql, List<Object> params) throws SQLException{
+		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
+		int index = 1;
+		pstmt = connection.prepareStatement(sql);
+		if(params != null && !params.isEmpty()){
+			for(int i = 0; i<params.size(); i++){
+				pstmt.setObject(index++, params.get(i));
+			}
+		}
+		resultSet = pstmt.executeQuery();
+		ResultSetMetaData metaData = resultSet.getMetaData();
+		int cols_len = metaData.getColumnCount();
+		while(resultSet.next()){
+			Map<String, Object> map = new HashMap<String, Object>();
+			for(int i=0; i<cols_len; i++){
+				String cols_name = metaData.getColumnName(i+1);
+				if("hftime".equals(cols_name)) {
+					continue;
+				}
+				Object cols_value = resultSet.getObject(cols_name);
+				if(cols_value == null){
+					cols_value = "";
+				}
+				map.put(cols_name, cols_value);
+			}
+			list.add(map);
+		}
+
+		return list;
+	}
+
+	/**通过反射机制查询单条记录
+	 * @param sql
+	 * @param params
+	 * @param cls
+	 * @return
+	 * @throws Exception
+	 */
+	public <T> T findSimpleRefResult(String sql, List<Object> params,
+			Class<T> cls )throws Exception{
+		T resultObject = null;
+		int index = 1;
+		pstmt = connection.prepareStatement(sql);
+		if(params != null && !params.isEmpty()){
+			for(int i = 0; i<params.size(); i++){
+				pstmt.setObject(index++, params.get(i));
+			}
+		}
+		resultSet = pstmt.executeQuery();
+		ResultSetMetaData metaData  = resultSet.getMetaData();
+		int cols_len = metaData.getColumnCount();
+		while(resultSet.next()){
+			//通过反射机制创建一个实例
+			resultObject = cls.newInstance();
+			for(int i = 0; i<cols_len; i++){
+				String cols_name = metaData.getColumnName(i+1);
+				Object cols_value = resultSet.getObject(cols_name);
+				if(cols_value == null){
+					cols_value = "";
+				}
+				Field field = cls.getDeclaredField(cols_name);
+				field.setAccessible(true); //打开javabean的访问权限
+				field.set(resultObject, cols_value);
+			}
+		}
+		return resultObject;
+
+	}
+
+	/**通过反射机制查询多条记录
+	 * @param sql 
+	 * @param params
+	 * @param cls
+	 * @return
+	 * @throws Exception
+	 */
+	public <T> List<T> findMoreRefResult(String sql, List<Object> params,
+			Class<T> cls )throws Exception {
+		List<T> list = new ArrayList<T>();
+		int index = 1;
+		pstmt = connection.prepareStatement(sql);
+		if(params != null && !params.isEmpty()){
+			for(int i = 0; i<params.size(); i++){
+				pstmt.setObject(index++, params.get(i));
+			}
+		}
+		resultSet = pstmt.executeQuery();
+		ResultSetMetaData metaData  = resultSet.getMetaData();
+		int cols_len = metaData.getColumnCount();
+		while(resultSet.next()){
+			//通过反射机制创建一个实例
+			T resultObject = cls.newInstance();
+			for(int i = 0; i<cols_len; i++){
+				String cols_name = metaData.getColumnName(i+1);
+				Object cols_value = resultSet.getObject(cols_name);
+				if(cols_value == null){
+					cols_value = "";
+				}
+				Field field = cls.getDeclaredField(cols_name);
+				field.setAccessible(true); //打开javabean的访问权限
+				field.set(resultObject, cols_value);
+			}
+			list.add(resultObject);
+		}
+		return list;
+	}
+
+	/**
+	 * 释放数据库连接
+	 */
+	public void releaseConn(){
+		if(resultSet != null){
+			try{
+				resultSet.close();
+			}catch(SQLException e){
+				e.printStackTrace();
+			}
+		}
+		if(connection != null) {
+			try {
+				connection.close();
+				connection = null;
+			} catch (SQLException e) {
+				e.printStackTrace();
+			}
+		}
+	}
+	
+	/**
+	 * 转换图片地址
+	 * @param imgUrl
+	 * @return
+	 */
+	public static String imgZH(String imgUrl) {
+		String[] imgArr = imgUrl.split(",");
+		String retUrl = "";
+		for(String url : imgArr) {
+			if(!"".equals(retUrl)) {
+				retUrl += "," + imgUrlPath +  url;
+			}
+			else {
+				retUrl += imgUrlPath + url;
+			}
+			
+		}
+		return retUrl;
+	}
+	public static String getUSERNAME() {
+		return USERNAME;
+	}
+
+	public static void setUSERNAME(String uSERNAME) {
+		USERNAME = uSERNAME;
+	}
+
+	public static String getPASSWORD() {
+		return PASSWORD;
+	}
+
+	public static void setPASSWORD(String pASSWORD) {
+		PASSWORD = pASSWORD;
+	}
+
+	public static String getURL() {
+		return URL;
+	}
+
+	public static void setURL(String uRL) {
+		URL = uRL;
+	}
+	
+	/**
+	 * @param args
+	 */
+	public static void main(String[] args) throws SQLException {
+		// TODO Auto-generated method stub
+		JdbcUtils jdbcUtils = new JdbcUtils();
+		jdbcUtils.getConnection();
+
+		/*******************增*********************/
+		/*		String sql = "insert into userinfo (username, pswd) values (?, ?), (?, ?), (?, ?)";
+		List<Object> params = new ArrayList<Object>();
+		params.add("小明");
+		params.add("123xiaoming");
+		params.add("张三");
+		params.add("zhangsan");
+		params.add("李四");
+		params.add("lisi000");
+		try {
+			boolean flag = jdbcUtils.updateByPreparedStatement(sql, params);
+			System.out.println(flag);
+		} catch (SQLException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}*/
+
+
+		/*******************删*********************/
+		//删除名字为张三的记录
+		/*		String sql = "delete from userinfo where username = ?";
+		List<Object> params = new ArrayList<Object>();
+		params.add("小明");
+		boolean flag = jdbcUtils.updateByPreparedStatement(sql, params);*/
+
+		/*******************改*********************/
+		//将名字为李四的密码改了
+		/*		String sql = "update userinfo set pswd = ? where username = ? ";
+		List<Object> params = new ArrayList<Object>();
+		params.add("lisi88888");
+		params.add("李四");
+		boolean flag = jdbcUtils.updateByPreparedStatement(sql, params);
+		System.out.println(flag);*/
+
+		/*******************查*********************/
+		//不利用反射查询多个记录
+		/*		String sql2 = "select * from userinfo ";
+		List<Map<String, Object>> list = jdbcUtils.findModeResult(sql2, null);
+		System.out.println(list);*/
+
+		//利用反射查询 单条记录
+		String sql = "select * from userinfo where username = ? ";
+		List<Object> params = new ArrayList<Object>();
+		params.add("李四");
+//		UserInfo userInfo;
+//		try {
+//			userInfo = jdbcUtils.findSimpleRefResult(sql, params, UserInfo.class);
+//			System.out.print(userInfo);
+//		} catch (Exception e) {
+//			// TODO Auto-generated catch block
+//			e.printStackTrace();
+//		}
+
+
+	}
+
+}

+ 33 - 0
src/main/java/com/minpay/common/util/NewDBJdbcUtils.java

@@ -0,0 +1,33 @@
+package com.minpay.common.util;
+
+import java.sql.Connection;
+
+
+public class NewDBJdbcUtils extends JdbcUtils {
+	
+	//数据库用户名
+	protected static String USERNAME = "root";
+	//数据库密码
+	protected static String PASSWORD = "lang124578";
+	//驱动信息 
+	protected static String DRIVER = "com.mysql.cj.jdbc.Driver";
+	//数据库地址
+	protected static String URL = "jdbc:mysql://127.0.0.1:3306/rpa?useUnicode=true&characterEncoding=UTF8&autoReconnect=true&serverTimezone=UTC";
+
+	//数据库用户名
+//	protected static String USERNAME = "guomaouser";
+//	//数据库密码
+//	protected static String PASSWORD = "Aa111111";
+//	//驱动信息 
+//	protected static String DRIVER = "com.mysql.jdbc.Driver";
+//	//数据库地址
+//	protected static String URL = "jdbc:mysql://rm-bp1fic3mnw98q3149to.mysql.rds.aliyuncs.com:3306/guomaodb?useUnicode=true&characterEncoding=UTF8&autoReconnect=true";
+	
+	public Connection getConnection(){ 
+		super.setPASSWORD(PASSWORD);
+		super.setURL(URL);
+		super.setUSERNAME(USERNAME);
+		return super.getConnection();
+	}
+	
+}

+ 33 - 0
src/main/java/com/minpay/common/util/OldDBJdbcUtils.java

@@ -0,0 +1,33 @@
+package com.minpay.common.util;
+
+import java.sql.Connection;
+
+
+public class OldDBJdbcUtils extends JdbcUtils {
+	
+	//数据库用户名
+	protected static String USERNAME = "root";
+	//数据库密码
+	protected static String PASSWORD = "lang124578";
+	//驱动信息 
+	protected static String DRIVER = "com.mysql.cj.jdbc.Driver";
+	//数据库地址
+	protected static String URL = "jdbc:mysql://127.0.0.1:3306/dianwang?useUnicode=true&characterEncoding=UTF8&autoReconnect=true&serverTimezone=UTC";
+
+	//数据库用户名
+//	protected static String USERNAME = "guomaouser";
+//	//数据库密码
+//	protected static String PASSWORD = "Aa111111";
+//	//驱动信息 
+//	protected static String DRIVER = "com.mysql.jdbc.Driver";
+//	//数据库地址
+//	protected static String URL = "jdbc:mysql://rm-bp1fic3mnw98q3149to.mysql.rds.aliyuncs.com:3306/guomaodb?useUnicode=true&characterEncoding=UTF8&autoReconnect=true";
+	
+	public Connection getConnection(){ 
+		super.setPASSWORD(PASSWORD);
+		super.setURL(URL);
+		super.setUSERNAME(USERNAME);
+		return super.getConnection();
+	}
+	
+}

+ 4 - 4
src/main/webapp/WEB-INF/config.properties

@@ -1,11 +1,11 @@
-dataSource.driverClassName=com.mysql.jdbc.Driver
-
+#dataSource.driverClassName=com.mysql.jdbc.Driver
+dataSource.driverClassName=com.mysql.cj.jdbc.Driver
 #dataSource.url=jdbc:mysql://123.138.111.28:3506/dianwang?useUnicode=true&characterEncoding=UTF8
 #dataSource.username=dw_user
 #dataSource.password=123456
-dataSource.url=jdbc:mysql://127.0.0.1:3306/dianwang?useUnicode=true&characterEncoding=UTF8
+dataSource.url=jdbc:mysql://127.0.0.1:3306/dianwang?useUnicode=true&characterEncoding=UTF8&serverTimezone=UTC
 dataSource.username=root
-dataSource.password=12345
+dataSource.password=lang124578
 
 
 config.MINDebug=false

+ 22 - 0
src/main/webapp/WEB-INF/spring.xml

@@ -29,7 +29,29 @@
 	
 	<task:annotation-driven/>
 	<context:component-scan base-package="com.minpay.task" />
+	<bean id="runOffline" class="com.minpay.common.action.RunOfflineService"></bean>
+	<!--  跑批任务 上传自动扣费 -->
+	<bean id="springOfflineMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+		<property name="targetObject" ref="runOffline"></property>
+        <property name="targetMethod" value="execute"></property>
+	</bean>
+	
+	<bean id="batchTriggerFactoryBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
+        <property name="jobDetail" ref="springOfflineMethod"></property>
+        <!--    一分钟执行一次 -->
+        <property name="cronExpression" value="0 */1 * * * ?"></property>
+      <!--    每天0:00点执行一次 -->
+       <!--  <property name="cronExpression" value="0 00 0 * * ?"></property> -->
+    </bean>
 	
+    <!--  配置调度工厂 -->
+    <bean id="springJobSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
+        <property name="triggers">
+            <list> 
+              	 <ref bean="batchTriggerFactoryBean"></ref>
+            </list>
+        </property>
+    </bean>
 	
 	<!-- config -->
 	<bean id="parameter" class="com.startup.minpay.util.MINParameterInitializer"