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.sync.ParamsAdpter; import com.lyms.sync.SyncCallback; import com.lyms.sync.SyncCenter; import com.lyms.sync.SyncHandler; import com.lyms.sync.SyncCenter.Work; import com.lyms.sync.channel.ChannelData; import com.lyms.util.HttpUtils; import com.lyms.util.JsonUtils; /** *
  • @ClassName: SycnJob *
  • @Description: 同步任务执行器,依赖spring *
  • @author maliang *
  • @date 2017年3月14日 *
  • */ public class SyncFixJob { private Logger LOG = LoggerFactory.getLogger(getClass()); @Autowired public SyncCenter center; public void excute() { // 拉取远端数据 LOG.debug("执行拉取远程数据任务..."); final Work work = center.buildWork(); try { work.pullFix(new SyncCallback() { @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 = SyncHandler.handler(data); // 要求处理成功都必须返回true | false; Boolean tag = (Boolean) handlResult; if (tag) { data.setRemote(oldData.getRemote()); data.setData(ParamsAdpter.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); } } }