diff --git a/parent/base.common/src/main/java/com/lyms/base/common/enums/SyncParamConf.java b/parent/base.common/src/main/java/com/lyms/base/common/enums/SyncParamConf.java
new file mode 100644
index 0000000..f8aa5a5
--- /dev/null
+++ b/parent/base.common/src/main/java/com/lyms/base/common/enums/SyncParamConf.java
@@ -0,0 +1,39 @@
+package com.lyms.base.common.enums;
+
+public enum SyncParamConf {
+
+
+
+
+ USER_INSERT(com.lyms.base.common.service.user.impl.UsersServiceImpl.class.getName(),"addUser"),
+ USER_UPDATE(com.lyms.base.common.service.user.impl.UsersServiceImpl.class.getName(),"updateUser"),
+ USER_DELETE(com.lyms.base.common.service.user.impl.UsersServiceImpl.class.getName(),"delete");
+
+
+ private String remoteClazz;
+
+ public String getRemoteClazz() {
+ return remoteClazz;
+ }
+
+ public void setRemoteClazz(String remoteClazz) {
+ this.remoteClazz = remoteClazz;
+ }
+
+ public String getRemoteMethod() {
+ return remoteMethod;
+ }
+
+ public void setRemoteMethod(String remoteMethod) {
+ this.remoteMethod = remoteMethod;
+ }
+
+ private String remoteMethod;
+
+ private SyncParamConf(String remoteClazz,String remoteMethod) {
+ this.remoteClazz = remoteClazz;
+ this.remoteMethod = remoteMethod;
+ }
+
+
+}
diff --git a/parent/center.manager/src/main/java/com/lyms/cm/job/SyncFixJob.java b/parent/center.manager/src/main/java/com/lyms/cm/job/SyncFixJob.java
index e71cb9d..fa2238c 100644
--- a/parent/center.manager/src/main/java/com/lyms/cm/job/SyncFixJob.java
+++ b/parent/center.manager/src/main/java/com/lyms/cm/job/SyncFixJob.java
@@ -16,6 +16,7 @@ import com.lyms.sync.SyncHandler;
import com.lyms.sync.channel.ChannelData;
import com.lyms.util.HttpUtils;
import com.lyms.util.JsonUtils;
+import com.lyms.util.StrUtils;
/**
*
@ClassName: SycnJob
@@ -55,7 +56,7 @@ public class SyncFixJob {
return;
ChannelData data = JsonUtils.jsonToBean(result, ChannelData.class);
// 处理回执消息
- if (data != null && data.getAck()) {
+ if (data != null && data.getAck() && StrUtils.isNotEmpty(data.getRemoteClazz()) && StrUtils.isNotEmpty(data.getRemoteMethod())) {
// 拉取到数据执行本地方法
System.out.println("执行: " + ToStringBuilder.reflectionToString(data));
Object handlResult = SyncHandler.handler(data);
diff --git a/parent/center.manager/src/main/java/com/lyms/cm/util/SyncComponent.java b/parent/center.manager/src/main/java/com/lyms/cm/util/SyncComponent.java
new file mode 100644
index 0000000..c1d6005
--- /dev/null
+++ b/parent/center.manager/src/main/java/com/lyms/cm/util/SyncComponent.java
@@ -0,0 +1,66 @@
+package com.lyms.cm.util;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.lyms.base.common.entity.organ.OrganGroup;
+import com.lyms.base.common.enums.SyncParamConf;
+import com.lyms.base.common.service.organ.OrganGroupService;
+import com.lyms.sync.ParamsAdpter;
+import com.lyms.sync.SyncCenter;
+import com.lyms.util.CollectionUtils;
+import com.lyms.util.InstanceUtils;
+import com.lyms.util.StrUtils;
+
+@Component
+public class SyncComponent {
+
+ @Autowired
+ public SyncCenter center;
+
+ @Autowired
+ private OrganGroupService organGroupService;
+
+ private List getAllGroupIpList() {
+ List ipList = InstanceUtils.newArrayList();
+ List list = organGroupService.selectList(new EntityWrapper().where("ifDel=0"));
+ if (CollectionUtils.isNotEmpty(list)) {
+ for (OrganGroup group : list) {
+ if (StrUtils.isNotEmpty(group.getClientaddress())) {
+ ipList.add(group.getClientaddress());
+ }
+ }
+ }
+ return ipList;
+ }
+
+ /**
+ * @Description:添加一个同步操作
+ * @param syncParamConf
+ * @param data data和对应方法参数个数和类型一致
+ * @return
+ * 创建人:方承
+ * 创建时间:2017年4月11日
+ * 修改人:
+ * 修改时间:
+ */
+ public boolean addSyncOperation(SyncParamConf syncParamConf, Object... data) {
+ List ipList = getAllGroupIpList();
+ ParamsAdpter adpter = null;
+ if (data != null && data.length > 0) {
+ adpter = ParamsAdpter.builder();
+ for (int i = 0; i < data.length; i++) {
+ adpter.push(data[i]);
+ }
+ }
+ for (String ip : ipList) {
+ String id = StrUtils.uuid();
+ center.pushTmp(id, ip, syncParamConf.getRemoteClazz(), syncParamConf.getRemoteMethod(), adpter);
+ }
+ return true;
+ }
+
+}
diff --git a/parent/center.manager/src/main/resources/logback.xml b/parent/center.manager/src/main/resources/logback.xml
index 4faa9d0..0967721 100644
--- a/parent/center.manager/src/main/resources/logback.xml
+++ b/parent/center.manager/src/main/resources/logback.xml
@@ -40,7 +40,7 @@
-
+
diff --git a/parent/center.manager/src/main/resources/xml/app-timer.xml b/parent/center.manager/src/main/resources/xml/app-timer.xml
index e5bc983..3d89b7a 100644
--- a/parent/center.manager/src/main/resources/xml/app-timer.xml
+++ b/parent/center.manager/src/main/resources/xml/app-timer.xml
@@ -14,7 +14,7 @@
-
+
diff --git a/parent/center.manager/src/test/java/center/manager/test/user/SyncTest.java b/parent/center.manager/src/test/java/center/manager/test/user/SyncTest.java
new file mode 100644
index 0000000..0bf0e0d
--- /dev/null
+++ b/parent/center.manager/src/test/java/center/manager/test/user/SyncTest.java
@@ -0,0 +1,25 @@
+package center.manager.test.user;
+
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.lyms.base.common.entity.user.Users;
+import com.lyms.base.common.enums.SyncParamConf;
+import com.lyms.cm.util.SyncComponent;
+
+public class SyncTest extends BaseTest {
+
+ @Autowired
+ private SyncComponent syncComponent;
+
+ @Test
+ public void testpushSync(){
+ String name = "test123";
+ Users entity = new Users();
+ entity.setId(name);
+ entity.setAccount(name);
+ entity.setName(name);
+ syncComponent.addSyncOperation(SyncParamConf.USER_INSERT, entity,null);
+ }
+
+}
diff --git a/parent/center.manager/src/test/java/center/manager/test/user/WorkTest.java b/parent/center.manager/src/test/java/center/manager/test/user/WorkTest.java
index 61c8cf8..b437b22 100644
--- a/parent/center.manager/src/test/java/center/manager/test/user/WorkTest.java
+++ b/parent/center.manager/src/test/java/center/manager/test/user/WorkTest.java
@@ -33,7 +33,7 @@ public class WorkTest extends BaseTest {
@Test
public void pushFix() {
String id = StrUtils.uuid();
- String remote = "http://127.0.0.1:8080/hospital.web/remote/sycn";
+ String remote = "http://127.0.0.1:8080/hospital.web/remote/sync";
String remoteClazz = "com.lyms.hospital.service.sys.impl.SyncDataBasicServiceImpl";
String remoteMethod = "selectOne";
center.pushFix(id, remote, remoteClazz, remoteMethod, null);
@@ -50,7 +50,7 @@ public class WorkTest extends BaseTest {
@Test
public void pushTmp() {
String id = StrUtils.uuid();
- String remote = "http://127.0.0.1:9090/hospital.web/remote/sycn";
+ String remote = "http://127.0.0.1:9090/hospital.web/remote/sync";
String remoteClazz = "com.lyms.hospital.service.sys.impl.SyncDataBasicServiceImpl";
String remoteMethod = "selectOne";
// 参数构建如下注释方式
diff --git a/parent/hospital.web/src/main/java/com/lyms/hospital/controller/RouterController.java b/parent/hospital.web/src/main/java/com/lyms/hospital/controller/RouterController.java
index ff6d4e8..f77a1b5 100644
--- a/parent/hospital.web/src/main/java/com/lyms/hospital/controller/RouterController.java
+++ b/parent/hospital.web/src/main/java/com/lyms/hospital/controller/RouterController.java
@@ -26,8 +26,8 @@ import com.lyms.web.controller.BaseController;
@RequestMapping("/remote")
public class RouterController extends BaseController {
- @RequestMapping(value = "/sycn", produces = { MediaType.APPLICATION_JSON_VALUE })
- public Object remote(HttpServletRequest request) throws ClassNotFoundException, IOException {
+ @RequestMapping(value = "/pull", produces = { MediaType.APPLICATION_JSON_VALUE })
+ public Object pull(HttpServletRequest request) throws ClassNotFoundException, IOException {
ChannelData data = SyncUtils.conver(request);
System.out.println("接受到数据: " + ToStringBuilder.reflectionToString(data));
Object handResult = SyncHandler.handler(data);
@@ -39,5 +39,19 @@ public class RouterController extends BaseController {
data.setAck(true);
return data;
}
+
+ @RequestMapping(value = "/push", produces = { MediaType.APPLICATION_JSON_VALUE })
+ public Object push(HttpServletRequest request) throws ClassNotFoundException, IOException {
+ ChannelData data = SyncUtils.conver(request);
+ System.out.println("接受到数据: " + 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/hospital.web/src/main/java/com/lyms/hospital/service/sys/SyncDataBasicService.java b/parent/hospital.web/src/main/java/com/lyms/hospital/service/sys/SyncDataBasicService.java
index 338ebec..a9d64c4 100644
--- a/parent/hospital.web/src/main/java/com/lyms/hospital/service/sys/SyncDataBasicService.java
+++ b/parent/hospital.web/src/main/java/com/lyms/hospital/service/sys/SyncDataBasicService.java
@@ -3,6 +3,7 @@ package com.lyms.hospital.service.sys;
import java.io.Serializable;
import java.util.List;
+import com.lyms.base.common.enums.SyncParamConf;
import com.lyms.hospital.entity.sys.SyncDataBasic;
import com.lyms.sync.channel.ChannelData;
import com.lyms.web.service.BaseService;
@@ -47,5 +48,16 @@ public interface SyncDataBasicService extends BaseService {
public ChannelData selectOne();
public Boolean updateBasic(Serializable id);
+ /**
+ * @Description:向同步库插入一个需要提交给center的同步任务
+ * @param syncParamConf
+ * @param dataObjects 对象方法参数列表
+ * @return
+ * 创建人:方承
+ * 创建时间:2017年4月11日
+ * 修改人:
+ * 修改时间:
+ */
+ public boolean addSyncData(SyncParamConf syncParamConf,Object ...dataObjects);
}
diff --git a/parent/hospital.web/src/main/java/com/lyms/hospital/service/sys/impl/SyncDataBasicServiceImpl.java b/parent/hospital.web/src/main/java/com/lyms/hospital/service/sys/impl/SyncDataBasicServiceImpl.java
index fd5ebf4..ce6013b 100644
--- a/parent/hospital.web/src/main/java/com/lyms/hospital/service/sys/impl/SyncDataBasicServiceImpl.java
+++ b/parent/hospital.web/src/main/java/com/lyms/hospital/service/sys/impl/SyncDataBasicServiceImpl.java
@@ -1,6 +1,7 @@
package com.lyms.hospital.service.sys.impl;
import java.io.Serializable;
+import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
@@ -9,11 +10,14 @@ import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.lyms.base.common.enums.SyncParamConf;
import com.lyms.hospital.dao.sys.SyncDataBasicMapper;
import com.lyms.hospital.entity.sys.SyncDataBasic;
import com.lyms.hospital.service.sys.SyncDataBasicService;
+import com.lyms.sync.ParamsAdpter;
import com.lyms.sync.channel.ChannelData;
import com.lyms.util.JsonUtils;
+import com.lyms.util.StrUtils;
/**
*
@@ -25,43 +29,69 @@ import com.lyms.util.JsonUtils;
*/
@Service
public class SyncDataBasicServiceImpl extends ServiceImpl
- implements SyncDataBasicService {
+ implements SyncDataBasicService {
- @Autowired
- private SyncDataBasicMapper basicMapper;
+ @Autowired
+ private SyncDataBasicMapper basicMapper;
- public Integer deleteLogicById(Serializable id) {
- return baseMapper.deleteLogicById(id);
- }
+ public Integer deleteLogicById(Serializable id) {
+ return baseMapper.deleteLogicById(id);
+ }
- @Override
- @Transactional
- public Boolean updateBasic(List ids) {
- Integer tag = basicMapper.updateBatchByIds(ids);
- return tag >= 1 ? Boolean.TRUE : Boolean.FALSE;
- }
+ @Override
+ @Transactional
+ public Boolean updateBasic(List ids) {
+ Integer tag = basicMapper.updateBatchByIds(ids);
+ return tag >= 1 ? Boolean.TRUE : Boolean.FALSE;
+ }
- @Override
- public Boolean updateBasic(Serializable id) {
- SyncDataBasic dataBasic = baseMapper.selectById(id);
- dataBasic.setIfsuc(1);
- Integer tag = baseMapper.updateById(dataBasic);
- return tag >= 1;
- }
+ @Override
+ public Boolean updateBasic(Serializable id) {
+ SyncDataBasic dataBasic = baseMapper.selectById(id);
+ dataBasic.setIfsuc(1);
+ Integer tag = baseMapper.updateById(dataBasic);
+ return tag >= 1;
+ }
- @Override
- public ChannelData selectOne() {
- EntityWrapper ew = new EntityWrapper();
- ew.where("ifsuc=0");
- List datas = baseMapper.selectList(ew);
+ @Override
+ public ChannelData selectOne() {
+ EntityWrapper ew = new EntityWrapper();
+ ew.where("ifsuc=0");
+ List datas = baseMapper.selectList(ew);
- // 单条同步,避免过于复杂的消息回执
- SyncDataBasic basic = datas != null && datas.size() > 0 ? datas.get(0) : null;
- if (basic != null) {
- ChannelData data = JsonUtils.jsonToBean(basic.getData(), ChannelData.class);
- return data;
- }
- return ChannelData.emtpy();
- }
+ // 单条同步,避免过于复杂的消息回执
+ SyncDataBasic basic = datas != null && datas.size() > 0 ? datas.get(0) : null;
+ if (basic != null) {
+ ChannelData data = JsonUtils.jsonToBean(basic.getData(), ChannelData.class);
+ return data;
+ }
+ return ChannelData.emtpy();
+ }
+
+ @Override
+ public boolean addSyncData(SyncParamConf syncParamConf, Object... dataObjects) {
+ SyncDataBasic entity = new SyncDataBasic();
+ String uid = StrUtils.uuid();
+ entity.setId(uid);
+ Date now = new Date();
+ entity.setCreateTime(now);
+
+ ChannelData cdata = new ChannelData();
+ cdata.setAck(true);
+ ParamsAdpter adpter = ParamsAdpter.builder();
+ for(Object param : dataObjects){
+ adpter.push(param);
+ }
+ cdata.setData(adpter.toJsonString());
+ cdata.setId(uid);
+ cdata.setLoop(false);
+ cdata.setRemoteClazz(syncParamConf.getRemoteClazz());
+ cdata.setRemoteMethod(syncParamConf.getRemoteMethod());
+ cdata.setTs(now.getTime());
+
+ entity.setData(cdata.toJsonString());
+ Integer tag = baseMapper.insert(entity);
+ return tag >= 1 ? true : false;
+ }
}
diff --git a/parent/hospital.web/src/main/resources/app-context.xml b/parent/hospital.web/src/main/resources/app-context.xml
index 3065608..02ee4ff 100644
--- a/parent/hospital.web/src/main/resources/app-context.xml
+++ b/parent/hospital.web/src/main/resources/app-context.xml
@@ -16,6 +16,7 @@
+ classpath:conf.properties
classpath:jdbc.properties
classpath:redis.properties
diff --git a/parent/hospital.web/src/main/resources/dev/conf.properties b/parent/hospital.web/src/main/resources/dev/conf.properties
new file mode 100644
index 0000000..78afdc7
--- /dev/null
+++ b/parent/hospital.web/src/main/resources/dev/conf.properties
@@ -0,0 +1 @@
+token.prefix=token:user:
\ No newline at end of file
diff --git a/parent/hospital.web/src/test/java/test/hospital/sync/SyncTest.java b/parent/hospital.web/src/test/java/test/hospital/sync/SyncTest.java
new file mode 100644
index 0000000..4242409
--- /dev/null
+++ b/parent/hospital.web/src/test/java/test/hospital/sync/SyncTest.java
@@ -0,0 +1,28 @@
+package test.hospital.sync;
+
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.lyms.base.common.entity.user.Users;
+import com.lyms.base.common.enums.SyncParamConf;
+import com.lyms.hospital.service.sys.SyncDataBasicService;
+import com.lyms.util.DateTimeUtils;
+
+import test.hospital.BaseServiceTest;
+
+public class SyncTest extends BaseServiceTest{
+
+ @Autowired
+ private SyncDataBasicService syncDataBasicService;
+
+ @Test
+ public void addSync(){
+ Users u = new Users();
+ String uid = DateTimeUtils.getDateTime();
+ u.setId(uid);
+ u.setAccount(uid);
+ u.setName(uid);
+ syncDataBasicService.addSyncData(SyncParamConf.USER_INSERT, u,null);
+ }
+
+}