SycnFixJob.java 2.39 KB
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
package com.lyms.cm.job;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;

import com.lyms.sycn.ParamsHandler;
import com.lyms.sycn.SycnCallback;
import com.lyms.sycn.SycnCenter;
import com.lyms.sycn.SycnCenter.Work;
import com.lyms.sycn.SycnHandler;
import com.lyms.sycn.channel.ChannelData;
import com.lyms.util.HttpUtils;
import com.lyms.util.JsonUtils;

/**
* <li>@ClassName: SycnJob
* <li>@Description: 同步任务执行器,依赖spring
* <li>@author maliang
* <li>@date 2017年3月14日
* <li>
*/
public class SycnFixJob {
private Logger LOG = LoggerFactory.getLogger(getClass());

@Autowired
public SycnCenter center;

public void excute() {
// 拉取远端数据
LOG.debug("执行拉取远程数据任务...");
final Work work = center.buildWork();
try {
work.pullFix(new SycnCallback() {
@Override
public void callBack(Object object) {
if (object instanceof ChannelData) {
ChannelData oldData = (ChannelData) object;
if (oldData != null && StringUtils.isNotBlank(oldData.getId())) {
// 任务发送执行
System.out.println("拉取到本地任务: " + ToStringBuilder.reflectionToString(oldData));
String result = HttpUtils.REMOTE.post(oldData);
System.out.println("返回结果: " + result);
if (StringUtils.isBlank(result))
return;
ChannelData data = JsonUtils.jsonToBean(result, ChannelData.class);
// 处理回执消息
if (data != null && data.getAck()) {
// 拉取到数据执行本地方法
System.out.println("执行: " + ToStringBuilder.reflectionToString(data));
Object handlResult = SycnHandler.handler(data);
// 要求处理成功都必须返回true | false;
Boolean tag = (Boolean) handlResult;
if (tag) {
data.setRemote(oldData.getRemote());
data.setData(ParamsHandler.builder().push(data.getId()).toJsonString());
data.setAck(true);
// 处理成功回执消息
data.setRemoteClazz("com.lyms.hospital.service.sys.impl.SyncDataBasicServiceImpl");
data.setRemoteMethod("updateBasic");
work.ack(data);
}
}
}
}
}
});
} catch (Exception e) {
LOG.error("同步数据错误 {}", e);
}
}

}