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.导入定时任务
参考: