作者 朱兆平

给九州发送数据,双CLIENT,同时发送货运数据 和 通关数据

... ... @@ -52,8 +52,18 @@ public class Main {
//数据仓库给九州的发送程序
Timer timer = new Timer();
IMFNoDelaySender CangKu2Jiuzhou = new IMFNoDelaySender(client,"data/fid_index.txt");
//从配置文件读取sql语句,发送货运数据
String sql_select=ConfigUtils.SQl;
String sqlmax = ConfigUtils.SQlMax;
IMFNoDelaySender CangKu2Jiuzhou = new IMFNoDelaySender(client,"data/fid_index.txt",sql_select,sqlmax);
CangKu2Jiuzhou.start();
//发送通关数据
String sql_select1=ConfigUtils.SQl1;
String sqlmax1 = ConfigUtils.SQlMax1;
IMFNoDelaySender CangKu2Jiuzhou_tg = new IMFNoDelaySender(client,"data/fid_index.txt",sql_select1,sqlmax1);
CangKu2Jiuzhou_tg.start();
// timer.schedule(CangKu2Jiuzhou, 10000L, 1200000L);
}
... ...
... ... @@ -28,10 +28,14 @@ public class IMFNoDelaySender extends Thread{
private Dao dao = (DaoImpl)SystemBean.getBean("dao");
private IMFClient client;
private String indexFileName; //记录发送数据的节点
private String sql;
private String sqlMax;
public IMFNoDelaySender(IMFClient client, String fileName) {
public IMFNoDelaySender(IMFClient client, String fileName,String sql,String sqlMax) {
this.indexFileName = fileName;
this.client = client;
this.sql=sql;
this.sqlMax=sqlMax;
}
public void run() {
... ... @@ -46,12 +50,16 @@ public class IMFNoDelaySender extends Thread{
//初始化读取
logger.info("job start:");
int lastFID = Utils.readFIDIndex(this.indexFileName);
int maxFID = this.dao.getMaxFID();
int maxFID = this.dao.getMaxFID(sqlMax);
logger.info("lastFID=" + lastFID + " maxFID=" + maxFID);
int is_ok = 0;
if (maxFID > lastFID) {
List<MessageBak> list = this.dao.getRecordByFID(lastFID); //查询大于[FID]350的报文
//这里修改从FID_INDEX文件读取的FID ,改为取搜索结果的rownum,此处FID代表ROWNUM
String sqlformat = String.format(sql, lastFID, lastFID, ConfigUtils.RECORD_COUNT);
logger.info(sqlformat);
List<MessageBak> list = this.dao.getRecordByFID(lastFID,sqlformat); //查询大于[FID]350的报文
//如果两个发送者,要用到这里
Map<Integer, XMLHeader> map = ConfigUtils.XML_HEADER_MAP;
Iterator var7 = list.iterator();
... ... @@ -65,7 +73,7 @@ public class IMFNoDelaySender extends Thread{
if (m.getContent() != null) {
int times = 0;
//配置文件里面有几个sender 这里循环几次
for(Iterator var10 = map.keySet().iterator(); var10.hasNext(); Thread.sleep((long)ConfigUtils.SEND_MESSAGE_INTERVAL)) {
for(Iterator var10 = map.keySet().iterator(); var10.hasNext(); times++) {
Integer key = (Integer)var10.next();
XMLHeader header = (XMLHeader)map.get(key);
logger.info("key=" + key + " value=" + ((XMLHeader)map.get(key)).toString());
... ...
... ... @@ -15,11 +15,11 @@ public interface Dao {
void delete(int var1);
List<MessageBak> getRecordByFID(int var1);
List<MessageBak> getRecordByFID(int var1,String var2);
int getRecordCount();
int getMaxFID();
int getMaxFID(String var1);
void update(int var1, int var2);
}
... ...
... ... @@ -113,17 +113,13 @@ public class DaoImpl implements Dao {
this.jdbcTemplate.update("delete from T_ETL_MESSAGE where fid=" + fid);
}
public int getMaxFID() {
String sqlmax = "select max(fid) from MESSAGE_BAK WHERE (FID>%s and FID<%s+%s) AND (TYPE='CLR' OR TYPE='ES1' OR TYPE='IS1' OR STYP = 'BSTA' OR STYP = 'FZE_RCF' OR STYP = 'FSU_FOH' OR STYP = 'FSU_DEP' OR STYP = 'COST' OR STYP = 'ABME' OR STYP = 'FZE_DEP' OR STYP = 'FSU_RCF') ORDER BY FID\n";
sqlmax = ConfigUtils.SQlMax;
public int getMaxFID(String sqlmax) {
// String sqlmax = "select max(fid) from MESSAGE_BAK WHERE (FID>%s and FID<%s+%s) AND (TYPE='CLR' OR TYPE='ES1' OR TYPE='IS1' OR STYP = 'BSTA' OR STYP = 'FZE_RCF' OR STYP = 'FSU_FOH' OR STYP = 'FSU_DEP' OR STYP = 'COST' OR STYP = 'ABME' OR STYP = 'FZE_DEP' OR STYP = 'FSU_RCF') ORDER BY FID\n";
return this.jdbcTemplate.queryForInt(sqlmax);
}
public List<MessageBak> getRecordByFID(int fid) {
//从配置文件读取sql语句
String sql_select=ConfigUtils.SQl;
String sql = String.format(sql_select, fid, fid, ConfigUtils.RECORD_COUNT); //这里修改从FID_INDEX文件读取的FID ,改为取搜索结果的rownum,此处FID代表ROWNUM
logger.info(sql);
public List<MessageBak> getRecordByFID(int fid,String sql) {
final LobHandler lobHandler = new DefaultLobHandler();
final ArrayList xmlList = new ArrayList();
... ...
... ... @@ -32,6 +32,8 @@ public class ConfigUtils {
public static String SNDR = "";
public static String SQl="";
public static String SQlMax="";
public static String SQl1="";
public static String SQlMax1="";
public static Map<String, String> XTYPE_MAP = new HashMap();
public ConfigUtils() {
... ... @@ -60,6 +62,8 @@ public class ConfigUtils {
IMF_PASSWORD = config.getProperty("imf_password").trim();
SQl = config.getProperty("sql");
SQlMax = config.getProperty("sqlmax");
SQl1 = config.getProperty("sql1");
SQlMax1 = config.getProperty("sqlmax1");
String interval = config.getProperty("interval").trim();
String record_count = config.getProperty("record_count").trim();
logger.info(String.format("role=%s", ROLE));
... ...