JAVA_LandaryEKP(蓝凌)_OA_定时任务创建教程

1. 软件环境

Windows10

JDK1.8

Tomcat8.0

Eclipse2017


2.代码实现步骤


1. spring.xml ,Bean注入

<bean id="ceeAttendanceMainBankInfoJobService" class="com.landray.kmss.cee.attendance.service.spring.CeeAttendanceMainBankInfoJobServiceImp"/>

2. design.xml ,定时任务配置

<quartz

messageKey="cee-attendance:bank.bankinfo"

jobService="ceeAttendanceMainBankInfoJobService"

jobMethod="doBankInfo"

cronExpression="0 0 * * * ?"

enable="true"

description="cee-attendance:bank.bankinfoDescription"/>

3. JAVA 业务逻辑实现

com.landray.kmss.cee.attendance.service.spring.CeeAttendanceMainBankInfoJobServiceImp

4 文本国际化

/ekp_dev/src/com/landray/kmss/cee/attendance/ApplicationResources.properties

cee-attendance:bank.bankinfo

cee-attendance:bank.bankinfoDescription

5 主要数据表

hr_staff_emolument_welfare

hr_staff_person_info


package com.landray.kmss.cee.attendance.service.spring;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.landray.kmss.cee.sapcall.util.GetSapConn;
import com.landray.kmss.sys.quartz.interfaces.SysQuartzJobContext;
import com.landray.kmss.util.SpringBeanUtil;
import com.sap.conn.jco.JCoDestination;
import com.sap.conn.jco.JCoException;
import com.sap.conn.jco.JCoFunction;
import com.sap.conn.jco.JCoStructure;

/**
 * @author Terry 
 * 员工信息同步SAP
 */

public class CeeAttendanceMainBankInfoJobServiceImp {
	 private static final Log logger = LogFactory.getLog(CeeAttendanceMainBankInfoJobServiceImp.class);
	 public void doBankInfo(SysQuartzJobContext context) throws Exception {
		 
		 Map<String,String> map          = null;
		 Map<String,String> sapReturnMap = null;
		 
		 List<Map<String,String>> list   = getBankInfo();
		  
		 if(list != null && list.size() > 0 ) {
			 for(int i = 0 ;i < list.size() ; i++) {
				 map          = list.get(i);
				 sapReturnMap = doTosap(map);
				 save(sapReturnMap);
			 }
		 }
		 
	 }


	private List<Map<String, String>> getBankInfo() throws Exception {
		
		DataSource dataSource = (DataSource) SpringBeanUtil.getBean("dataSource");
		List<Map<String,String>> list = new ArrayList<Map<String,String>>();
		 Map<String,String> map       = null;
		 
		 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	     Calendar calendar = Calendar.getInstance(); 
	     //calendar.add(calendar.DATE,-1);
	     String yestoday=  sdf.format(calendar.getTime()); //获取昨天的日期"2021-08-09"; // 
	     
	     String sql = "select S.FD_ID,s.FD_PAYROLL_NAME ,s.FD_PAYROLL_BANK,s.FD_PAYROLL_ACCOUNT,s.FD_SURPLUS_ACCOUNT,s.FD_SOCIAL_SECURITY_NUMBER,s.FD_CREATE_TIME,s.FD_CREATOR_ID,s.FD_PERSON_INFO_ID,s.DOC_MAIN_ID ,'CEE'||h.fd_staff_no AS FD_STAFF_NO  " + 
	     		" ,H.FD_NAME ,to_char(s.FD_CREATE_TIME , 'YYYY-MM-DD HH24:MI:SS')  from hr_staff_emolument_welfare s left join hr_staff_person_info h on s.fd_person_info_id = h.fd_id " + 
	     		"        where to_char(s.FD_CREATE_TIME , 'YYYY-MM-DD') = ? ";
	    	
	     logger.info(sql);
	     PreparedStatement ps = null;
	     ResultSet result     = null;
	     Connection conn      = null;
	    	
	    	try {
	    		conn = dataSource.getConnection();
	    		ps = conn.prepareStatement(sql);
	    		ps.setString(1, yestoday);
	            result = ps.executeQuery();
	            while(result.next()) {
	            	map = new HashMap<String, String>();
	            	map.put("FD_ID", result.getString(1));
	            	map.put("FD_PAYROLL_NAME", result.getString(2));
	            	map.put("FD_PAYROLL_BANK", result.getString(3));
	            	map.put("FD_PAYROLL_ACCOUNT", result.getString(4));
	            	map.put("FD_SURPLUS_ACCOUNT", result.getString(5));
	            	map.put("FD_SOCIAL_SECURITY_NUMBER", result.getString(6));
	            	//map.put("FD_CREATE_TIME", result.getString(7));
	            	map.put("FD_CREATOR_ID", result.getString(8));
	            	map.put("FD_PERSON_INFO_ID", result.getString(9));
	            	map.put("DOC_MAIN_ID", result.getString(10));
	            	map.put("FD_STAFF_NO", result.getString(11));
	            	map.put("FD_NAME", result.getString(12));
	            	list.add(map);		
	        	}
	            
			} catch (Exception e) {
				e.printStackTrace();
			}finally {
				result.close();
		    	ps.close();
		    	conn.close();
	        }
		return list;
	}
	

	private Map<String, String> doTosap(Map<String, String> map) {
		Map<String,String> sapReturnMap = new HashMap<String, String>();
		
		JCoDestination jCoDestination;
		JCoFunction function = null;
		try {
			jCoDestination = GetSapConn.getJcoConnection();
			function       = jCoDestination.getRepository().getFunctionTemplate("ZSDIF003_1").getFunction();
			JCoStructure struc   = function.getImportParameterList().getStructure("I_DATA");

	        struc.setValue("PARTNER", map.get("FD_STAFF_NO"));      //业务伙伴编号
	        struc.setValue("NAME_ORG1", map.get("FD_NAME"));        //客户名称
	        struc.setValue("BANKN", map.get("FD_PAYROLL_ACCOUNT")); //银行帐户号码
	        struc.setValue("ACCNAME", map.get("FD_PAYROLL_BANK"));  //银行帐户的名称
	        logger.info(struc.toString()); 
	        function.execute(jCoDestination);
	         
	        sapReturnMap.put("TYPE", function.getExportParameterList().getString("E_TYPE")) ;
	        sapReturnMap.put("MESSAGE", function.getExportParameterList().getString("E_MESSAGE")) ;
	        sapReturnMap.put("PARTNER", function.getExportParameterList().getString("E_PARTNER")) ;
	        logger.info(sapReturnMap.toString());
	        return sapReturnMap;
			
		} catch (JCoException e) {
			e.printStackTrace();
		}
         return sapReturnMap;
		
	}
	
	private void save(Map<String, String> sapReturnMap) {
		// TODO Auto-generated method stub
		
	}
}

3.导入定时任务

参考:

SAP_ABAP_JAVA 系统调用SAP系统 RFC , 实战案例之——供应商主数据(员工信息)同步| Java jco | BP| BAPI |RFC_CVI_EI_INBOUND_MAIN-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Terry谈数字化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值