From 1129ab96272cb80be762ebf9ff0151347f7adb88 Mon Sep 17 00:00:00 2001 From: fangcheng Date: Sat, 6 May 2017 13:01:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8A=82=E7=82=B9=E6=95=B0?= =?UTF-8?q?=E6=8D=AEpush=E5=88=B0=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/common/dao/sys/SyncDataBasicMapper.java | 2 + .../base/common/dao/sys/SyncDataBasicMapper.xml | 11 +++- .../lyms/base/common/entity/sys/SyncDataBasic.java | 16 +++++- .../common/service/sys/SyncDataBasicService.java | 12 ++++ .../service/sys/impl/SyncDataBasicServiceImpl.java | 7 +++ .../lyms/cm/controller/sync/SyncController.java | 47 +++++++++++++++ .../src/main/resources/xml/app-shiro.xml | 1 + .../com/lyms/hospital/job/SyncPushToCenterJob.java | 67 ++++++++++++++++++++++ .../src/main/resources/dev/conf.properties | 3 +- .../src/main/resources/xml/app-timer.xml | 22 +++++++ 10 files changed, 184 insertions(+), 4 deletions(-) create mode 100644 parent/center.manager/src/main/java/com/lyms/cm/controller/sync/SyncController.java create mode 100644 parent/hospital.web/src/main/java/com/lyms/hospital/job/SyncPushToCenterJob.java create mode 100644 parent/hospital.web/src/main/resources/xml/app-timer.xml diff --git a/parent/base.common/src/main/java/com/lyms/base/common/dao/sys/SyncDataBasicMapper.java b/parent/base.common/src/main/java/com/lyms/base/common/dao/sys/SyncDataBasicMapper.java index 2be286b..f5e8ffb 100644 --- a/parent/base.common/src/main/java/com/lyms/base/common/dao/sys/SyncDataBasicMapper.java +++ b/parent/base.common/src/main/java/com/lyms/base/common/dao/sys/SyncDataBasicMapper.java @@ -32,4 +32,6 @@ public interface SyncDataBasicMapper extends BaseMapper { */ public Integer updateBatchByIds(List ids); + public Integer errorCountAdd(Serializable id); + } \ No newline at end of file diff --git a/parent/base.common/src/main/java/com/lyms/base/common/dao/sys/SyncDataBasicMapper.xml b/parent/base.common/src/main/java/com/lyms/base/common/dao/sys/SyncDataBasicMapper.xml index 5890479..4312118 100644 --- a/parent/base.common/src/main/java/com/lyms/base/common/dao/sys/SyncDataBasicMapper.xml +++ b/parent/base.common/src/main/java/com/lyms/base/common/dao/sys/SyncDataBasicMapper.xml @@ -9,11 +9,12 @@ + - ID AS id, DATA AS data, CREATE_TIME AS createTime, IFSUC AS ifsuc + ID AS id, DATA AS data, CREATE_TIME AS createTime, IFSUC AS ifsuc,ERROR_COUNT AS errorCount @@ -22,11 +23,17 @@ - update from as sb set sb.ifsuc=1 + update as sb set sb.ifsuc=1 where sb.id in #{item} + + + update SYNC_DATA_BASIC set ERROR_COUNT= ERROR_COUNT + 1 + where id = #{id} + + diff --git a/parent/base.common/src/main/java/com/lyms/base/common/entity/sys/SyncDataBasic.java b/parent/base.common/src/main/java/com/lyms/base/common/entity/sys/SyncDataBasic.java index 19f320a..466db64 100644 --- a/parent/base.common/src/main/java/com/lyms/base/common/entity/sys/SyncDataBasic.java +++ b/parent/base.common/src/main/java/com/lyms/base/common/entity/sys/SyncDataBasic.java @@ -42,7 +42,13 @@ public class SyncDataBasic implements Serializable { */ @TableField(value = "IFSUC") private Integer ifsuc; - + + + /** + * 错误次数 + */ + @TableField(value = "ERROR_COUNT") + private Integer errorCount; public String getId() { return id; } @@ -75,4 +81,12 @@ public class SyncDataBasic implements Serializable { this.ifsuc = ifsuc; } + public Integer getErrorCount() { + return errorCount; + } + + public void setErrorCount(Integer errorCount) { + this.errorCount = errorCount; + } + } diff --git a/parent/base.common/src/main/java/com/lyms/base/common/service/sys/SyncDataBasicService.java b/parent/base.common/src/main/java/com/lyms/base/common/service/sys/SyncDataBasicService.java index b634b88..f3fd506 100644 --- a/parent/base.common/src/main/java/com/lyms/base/common/service/sys/SyncDataBasicService.java +++ b/parent/base.common/src/main/java/com/lyms/base/common/service/sys/SyncDataBasicService.java @@ -59,5 +59,17 @@ public interface SyncDataBasicService extends BaseService { *
  • 修改时间: */ public boolean addSyncData(SyncParamEnum syncParamConf,Object ...dataObjects); + + + /** + *
  • @Description:错误次数添加 + *
  • @param id + *
  • @return + *
  • 创建人:方承 + *
  • 创建时间:2017年5月6日 + *
  • 修改人: + *
  • 修改时间: + */ + public boolean errorCountAdd(Serializable id); } diff --git a/parent/base.common/src/main/java/com/lyms/base/common/service/sys/impl/SyncDataBasicServiceImpl.java b/parent/base.common/src/main/java/com/lyms/base/common/service/sys/impl/SyncDataBasicServiceImpl.java index b2ef9d4..27f2e00 100644 --- a/parent/base.common/src/main/java/com/lyms/base/common/service/sys/impl/SyncDataBasicServiceImpl.java +++ b/parent/base.common/src/main/java/com/lyms/base/common/service/sys/impl/SyncDataBasicServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.transaction.annotation.Transactional; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.baomidou.mybatisplus.toolkit.SqlUtils; import com.lyms.base.common.dao.sys.SyncDataBasicMapper; import com.lyms.base.common.entity.sys.SyncDataBasic; import com.lyms.base.common.enums.SyncParamEnum; @@ -94,4 +95,10 @@ public class SyncDataBasicServiceImpl extends ServiceImpl= 1 ? true : false; } + @Override + public boolean errorCountAdd(Serializable id) { + Integer tag = baseMapper.errorCountAdd(id); + return tag >= 1 ? true : false; + } + } diff --git a/parent/center.manager/src/main/java/com/lyms/cm/controller/sync/SyncController.java b/parent/center.manager/src/main/java/com/lyms/cm/controller/sync/SyncController.java new file mode 100644 index 0000000..e85044c --- /dev/null +++ b/parent/center.manager/src/main/java/com/lyms/cm/controller/sync/SyncController.java @@ -0,0 +1,47 @@ +package com.lyms.cm.controller.sync; + +import java.io.IOException; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.lyms.sync.ParamsAdpter; +import com.lyms.sync.SyncHandler; +import com.lyms.sync.SyncUtils; +import com.lyms.sync.channel.ChannelData; +import com.lyms.web.controller.BaseController; + +/** + *
  • @ClassName: RouterController + *
  • @Description: 远程接口调用数据处理分发 + *
  • @author maliang + *
  • @date 2017年3月14日 + *
  • + */ +@RestController +@RequestMapping("/sync") +public class SyncController extends BaseController { + + private static final Logger log = LoggerFactory.getLogger(SyncController.class); + + @RequestMapping(value = "/push", produces = { MediaType.APPLICATION_JSON_VALUE }) + public Object push(HttpServletRequest request) throws Exception { + ChannelData data = SyncUtils.conver(request); + log.debug("中心接受到节点推送数据:" + ToStringBuilder.reflectionToString(data)); + Object handResult = SyncHandler.handler(data); + if (data.getLoop()) { + data = (ChannelData) handResult; + } else { + data.setData(ParamsAdpter.builder().push(handResult).toJsonString()); + } + return data; + } + + +} diff --git a/parent/center.manager/src/main/resources/xml/app-shiro.xml b/parent/center.manager/src/main/resources/xml/app-shiro.xml index 0dce952..23746ca 100644 --- a/parent/center.manager/src/main/resources/xml/app-shiro.xml +++ b/parent/center.manager/src/main/resources/xml/app-shiro.xml @@ -49,6 +49,7 @@ /remote/** =anon /logout = logout /static/** = anon + /sync/** = anon /authenticated = authc /** = user,forceLogout diff --git a/parent/hospital.web/src/main/java/com/lyms/hospital/job/SyncPushToCenterJob.java b/parent/hospital.web/src/main/java/com/lyms/hospital/job/SyncPushToCenterJob.java new file mode 100644 index 0000000..c2341a3 --- /dev/null +++ b/parent/hospital.web/src/main/java/com/lyms/hospital/job/SyncPushToCenterJob.java @@ -0,0 +1,67 @@ +package com.lyms.hospital.job; + +import java.util.List; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.lyms.base.common.entity.sys.SyncDataBasic; +import com.lyms.base.common.service.sys.SyncDataBasicService; +import com.lyms.sync.channel.ChannelData; +import com.lyms.util.HttpUtils; +import com.lyms.util.JsonUtils; + +/** + *
  • @ClassName: SyncTableJob + *
  • @Description: 同步任务执行器,获取SYNC_DATA_BASIC表格的数据进行推送到中心 + *
  • @author 方承 + *
  • @date 2017年5月5日 + *
  • + */ +public class SyncPushToCenterJob { + @Value("${center.syncpush.url}") + private String CENTER_SYNCPUSH_URL; + + private static final int ERROR_COUNT_MAX = 4; + + private static Logger log = LoggerFactory.getLogger(SyncPushToCenterJob.class); + + @Autowired + private SyncDataBasicService syncDataBasicService; + + @SuppressWarnings("unused") + public void excute() { + if(null != CENTER_SYNCPUSH_URL && CENTER_SYNCPUSH_URL.startsWith("http")){ + List dataList = syncDataBasicService.selectList(new EntityWrapper().where("IFSUC=0").and("ERROR_COUNT < {0}", ERROR_COUNT_MAX)); + if(dataList != null ){ + log.debug("=======开始进行 SYNC_DATA_BASIC 表格数据的推送到中心======="); + for(SyncDataBasic entity : dataList){ + try{ + ChannelData data = JsonUtils.jsonToBean(entity.getData(), ChannelData.class); + data.setRemote(CENTER_SYNCPUSH_URL); + log.debug("节点推送数据:"+ToStringBuilder.reflectionToString(data)); + String result = HttpUtils.REMOTE.post(data); + if(result == null){//远程无法访问等情况 + syncDataBasicService.errorCountAdd(entity.getId()); + return; + } + ChannelData model = JsonUtils.jsonToBean(result, ChannelData.class); + entity.setIfsuc(1); + syncDataBasicService.updateById(entity); + log.debug("中心处后数据:"+result); + }catch (Exception e) { + syncDataBasicService.errorCountAdd(entity.getId()); + log.error("【SYNC_DATA_BASIC】表格数据的的推送到中心错误:SyncDataBasic = {} {}",JSONObject.toJSON(entity),e); + } + } + } + } + } + + +} diff --git a/parent/hospital.web/src/main/resources/dev/conf.properties b/parent/hospital.web/src/main/resources/dev/conf.properties index ef302e9..fd2e0da 100644 --- a/parent/hospital.web/src/main/resources/dev/conf.properties +++ b/parent/hospital.web/src/main/resources/dev/conf.properties @@ -1,2 +1,3 @@ token.prefix=token:user: -isCenterOperateSyncToNode=false \ No newline at end of file +isCenterOperateSyncToNode=false +center.syncpush.url=http://localhost:8080/center.manager/sync/push \ No newline at end of file diff --git a/parent/hospital.web/src/main/resources/xml/app-timer.xml b/parent/hospital.web/src/main/resources/xml/app-timer.xml new file mode 100644 index 0000000..e9d2ddb --- /dev/null +++ b/parent/hospital.web/src/main/resources/xml/app-timer.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + \ No newline at end of file -- 1.8.3.1