Commit 571c12a725dc47006fbabb580445872da7a02564

Authored by fangcheng
1 parent 913199e234
Exists in master

添加syncdatabasic表格数据同步模块

Showing 8 changed files with 108 additions and 26 deletions

parent/center.manager/src/main/java/com/lyms/cm/controller/sys/SysRemoteController.java View file @ 571c12a
1 1 package com.lyms.cm.controller.sys;
2 2  
3   -import java.io.IOException;
4   -
5 3 import javax.servlet.http.HttpServletRequest;
6 4  
7 5 import org.springframework.http.MediaType;
... ... @@ -22,7 +20,7 @@
22 20  
23 21 @RequestMapping(value = "/sycn", produces = { MediaType.APPLICATION_JSON_VALUE })
24 22 @ResponseBody
25   - public Object push(HttpServletRequest request) throws ClassNotFoundException, IOException {
  23 + public Object push(HttpServletRequest request) throws Exception {
26 24 ChannelData model = SyncUtils.conver(request);
27 25 Object object = SyncHandler.handler(model);
28 26 model.setData(ParamsAdpter.builder().push(object).toJsonString());
parent/center.manager/src/main/java/com/lyms/cm/job/SyncFixJob.java View file @ 571c12a
... ... @@ -96,18 +96,22 @@
96 96 LOG.info("拉取到本地任务: " + ToStringBuilder.reflectionToString(oldData));
97 97 LOG.info("返回结果: " + result);
98 98 System.out.println("执行: " + ToStringBuilder.reflectionToString(data));
99   - Object handlResult = SyncHandler.handler(data);
100   - // 要求处理成功都必须返回true | false;
101   - Boolean tag = (Boolean) handlResult;
102   - if (tag) {
103   - data.setRemote(oldData.getRemote());
104   - data.setData(ParamsAdpter.builder().push(data.getId()).toJsonString());
105   - data.setAck(true);
106   - // 处理成功回执消息
107   - data.setRemoteClazz("com.lyms.hospital.service.sys.impl.SyncDataBasicServiceImpl");
108   - data.setRemoteMethod("updateBasic");
109   - work.ack(data);
110   - }
  99 + try{
  100 + Object handlResult = SyncHandler.handler(data);
  101 + // 要求处理成功都必须返回true | false;
  102 + Boolean tag = (Boolean) handlResult;
  103 + if (tag) {
  104 + data.setRemote(oldData.getRemote());
  105 + data.setData(ParamsAdpter.builder().push(data.getId()).toJsonString());
  106 + data.setAck(true);
  107 + // 处理成功回执消息
  108 + data.setRemoteClazz("com.lyms.hospital.service.sys.impl.SyncDataBasicServiceImpl");
  109 + data.setRemoteMethod("updateBasic");
  110 + work.ack(data);
  111 + }
  112 + }catch (Exception e) {
  113 + LOG.error("拉取任务执行失败:{}",e);
  114 + }
111 115 }
112 116 }
113 117 }
parent/center.manager/src/main/java/com/lyms/cm/job/SyncTableJob.java View file @ 571c12a
  1 +package com.lyms.cm.job;
  2 +
  3 +import java.io.Serializable;
  4 +import java.util.List;
  5 +import java.util.concurrent.atomic.AtomicBoolean;
  6 +
  7 +import org.slf4j.Logger;
  8 +import org.slf4j.LoggerFactory;
  9 +import org.springframework.beans.factory.annotation.Autowired;
  10 +import org.springframework.data.redis.core.RedisTemplate;
  11 +
  12 +import com.alibaba.druid.support.json.JSONUtils;
  13 +import com.alibaba.fastjson.JSONObject;
  14 +import com.baomidou.mybatisplus.mapper.EntityWrapper;
  15 +import com.lyms.base.common.entity.sys.SyncDataBasic;
  16 +import com.lyms.base.common.service.sys.SyncDataBasicService;
  17 +import com.lyms.sync.ParamsAdpter;
  18 +import com.lyms.sync.SyncCallback;
  19 +import com.lyms.sync.SyncCenter;
  20 +import com.lyms.sync.SyncHandler;
  21 +import com.lyms.sync.SyncCenter.Work;
  22 +import com.lyms.sync.channel.ChannelData;
  23 +import com.lyms.sync.queue.SyncQueue;
  24 +import com.lyms.util.HttpUtils;
  25 +import com.lyms.util.JsonUtils;
  26 +
  27 +/**
  28 + * <li>@ClassName: SyncTableJob
  29 + * <li>@Description: 同步任务执行器,获取SYNC_DATA_BASIC表格的数据进行处理
  30 + * <li>@author 方承
  31 + * <li>@date 2017年5月5日
  32 + * <li>
  33 + */
  34 +public class SyncTableJob {
  35 +
  36 + private static Logger log = LoggerFactory.getLogger(SyncTableJob.class);
  37 +
  38 + @Autowired
  39 + private SyncDataBasicService syncDataBasicService;
  40 +
  41 + public void excute() {
  42 + List<SyncDataBasic> dataList = syncDataBasicService.selectList(new EntityWrapper<SyncDataBasic>().where("IFSUC=0"));
  43 + if(dataList != null ){
  44 + log.debug("=======开始进行 SYNC_DATA_BASIC 表格数据的同步=======");
  45 + for(SyncDataBasic entity : dataList){
  46 + try{
  47 + ChannelData data = JsonUtils.jsonToBean(entity.getData(), ChannelData.class);
  48 + Object handResult = SyncHandler.handler(data);
  49 + if (data.getLoop()) {
  50 + data = (ChannelData) handResult;
  51 + } else {
  52 + data.setData(ParamsAdpter.builder().push(handResult).toJsonString());
  53 + }
  54 + entity.setIfsuc(1);
  55 + syncDataBasicService.updateById(entity);
  56 + }catch (Exception e) {
  57 + log.error("【SYNC_DATA_BASIC】表格数据的同步错误:SyncDataBasic = {} {}",JSONObject.toJSON(entity),e);
  58 + }
  59 + }
  60 + }
  61 + }
  62 +
  63 +
  64 +}
parent/center.manager/src/main/resources/xml/app-timer.xml View file @ 571c12a
... ... @@ -16,10 +16,12 @@
16 16 <task:scheduled-tasks>
17 17 <task:scheduled ref="syncTmpJob" method="excute" cron="*/10 * * * * ?"/>
18 18 <task:scheduled ref="syncFixJob" method="excute" cron="*/30 * * * * ?"/>
  19 + <task:scheduled ref="syncTableJob" method="excute" cron="*/30 * * * * ?"/>
19 20 </task:scheduled-tasks>
20 21  
21 22 <bean class="com.lyms.cm.job.SyncTmpJob" id="syncTmpJob"/>
22 23 <bean class="com.lyms.cm.job.SyncFixJob" id="syncFixJob"/>
  24 + <bean class="com.lyms.cm.job.SyncTableJob" id="syncTableJob"/>
23 25  
24 26 </beans>
parent/core.sdk/src/main/java/com/lyms/common/db/DBPasswordCallback.java View file @ 571c12a
... ... @@ -15,10 +15,11 @@
15 15 import com.lyms.util.Base64Utils;
16 16  
17 17 /**
18   - * 数据库密码回调解密
19   - *
20   - * @author ShenHuaJie
21   - * @version 2016年5月20日 下午3:18:25
  18 + * <li>@ClassName: DBPasswordCallback
  19 + * <li>@Description: 数据库密码回调解密
  20 + * <li>@author 方承
  21 + * <li>@date 2017年5月5日
  22 + * <li>
22 23 */
23 24 @SuppressWarnings("serial")
24 25 public class DBPasswordCallback extends DruidPasswordCallback {
... ... @@ -39,7 +40,19 @@
39 40 }
40 41 }
41 42  
42   - // 请使用该方法加密后,把密文写入classpath:/config/jdbc.properties
  43 + /**
  44 + * 数据库密码回调解密
  45 + * <!--数据源加密操作-->
  46 + <bean id="dbPasswordCallback" class="com.lyms.common.db.DBPasswordCallback" lazy-init="true"/>
  47 +
  48 + <bean id="readDataSource" class="com.alibaba.druid.pool.DruidDataSource"
  49 + destroy-method="close" init-method="init" lazy-init="true">
  50 + <property name="password" value="${password}"/>
  51 +
  52 + <property name="connectionProperties" value="password=${password}"/>
  53 + <property name="passwordCallback" ref="dbPasswordCallback"/>
  54 + </bean>
  55 + */
43 56 public static void main(String[] args) throws InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException, InvalidKeySpecException, Exception {
44 57 String encrypt = Base64Utils.encode(DES.encrypt("root".getBytes(), key));
45 58 System.out.println(encrypt);
parent/core.sdk/src/main/java/com/lyms/sync/SyncHandler.java View file @ 571c12a
... ... @@ -32,12 +32,12 @@
32 32 */
33 33 private static final SyncCenter center = SyncCenter.install();
34 34  
35   - public static Object handler(ChannelData data) {
  35 + public static Object handler(ChannelData data) throws Exception{
36 36 try {
37 37 return invoke(data);
38 38 } catch (Exception e) {
39 39 LOG.error("执行方法错误: {}", e);
40   - return false;
  40 + throw e;
41 41 }
42 42 }
43 43  
parent/hospital.web/src/main/java/com/lyms/hospital/controller/LoginController.java View file @ 571c12a
... ... @@ -117,7 +117,7 @@
117 117 @RequestParam(value = "password", required = false) String password,
118 118 AjaxResult ajaxResult,
119 119 HttpServletResponse response) {
120   - System.out.println("ShiroWebUtils.getCurrentUser()="+JSONObject.toJSONString(ShiroWebUtils.getCurrentUser()));
  120 + System.out.println(JSONObject.toJSON(ShiroWebUtils.getCurrentUser()));
121 121 ajaxResult.setSuccess(false);
122 122 if (StringUtils.isEmpty(account) && (StringUtils.isEmpty(code) || StringUtils.isEmpty(password))) {
123 123 ajaxResult.setMessage("登录账户或者验证码为空,请输入!");
... ... @@ -139,6 +139,7 @@
139 139 return ajaxResult;
140 140 }
141 141 }
  142 + System.out.println(ShiroWebUtils.getCurrentUser());
142 143 Users users = ShiroWebUtils.getCurrentUser();
143 144 //Organizations organizations = organizationsService.selectById( users.getOrgId());
144 145 Map<String, Object> result = InstanceUtils.newHashMap();
parent/hospital.web/src/main/java/com/lyms/hospital/controller/RouterController.java View file @ 571c12a
... ... @@ -31,7 +31,7 @@
31 31 private static final Logger log = LoggerFactory.getLogger(RouterController.class);
32 32  
33 33 @RequestMapping(value = "/pull", produces = { MediaType.APPLICATION_JSON_VALUE })
34   - public Object pull(HttpServletRequest request) throws ClassNotFoundException, IOException {
  34 + public Object pull(HttpServletRequest request) throws Exception {
35 35 ChannelData data = SyncUtils.conver(request);
36 36 log.debug("节点数据被中心拉取:" + ToStringBuilder.reflectionToString(data));
37 37 Object handResult = SyncHandler.handler(data);
38 38  
... ... @@ -45,10 +45,10 @@
45 45 }
46 46  
47 47 @RequestMapping(value = "/push", produces = { MediaType.APPLICATION_JSON_VALUE })
48   - public Object push(HttpServletRequest request) throws ClassNotFoundException, IOException {
  48 + public Object push(HttpServletRequest request) throws Exception {
49 49 ChannelData data = SyncUtils.conver(request);
50 50 log.debug("中心推送数据到节点:" + ToStringBuilder.reflectionToString(data));
51   - Object handResult = SyncHandler.handler(data);
  51 + Object handResult = SyncHandler.handler(data);
52 52 if (data.getLoop()) {
53 53 data = (ChannelData) handResult;
54 54 } else {