diff --git a/center.manager/src/main/java/com/lyms/cm/entity/sys/SysPermissions.java b/center.manager/src/main/java/com/lyms/cm/entity/sys/SysPermissions.java
index 9b7d737..df59f61 100644
--- a/center.manager/src/main/java/com/lyms/cm/entity/sys/SysPermissions.java
+++ b/center.manager/src/main/java/com/lyms/cm/entity/sys/SysPermissions.java
@@ -1,9 +1,9 @@
package com.lyms.cm.entity.sys;
-import com.baomidou.mybatisplus.annotations.TableId;
+import java.io.Serializable;
+
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
-import java.io.Serializable;
/**
*
diff --git a/center.manager/src/main/java/com/lyms/cm/entity/sys/SysRolePermissionMaps.java b/center.manager/src/main/java/com/lyms/cm/entity/sys/SysRolePermissionMaps.java
index 578bf00..c90e015 100644
--- a/center.manager/src/main/java/com/lyms/cm/entity/sys/SysRolePermissionMaps.java
+++ b/center.manager/src/main/java/com/lyms/cm/entity/sys/SysRolePermissionMaps.java
@@ -1,9 +1,9 @@
package com.lyms.cm.entity.sys;
-import com.baomidou.mybatisplus.annotations.TableId;
+import java.io.Serializable;
+
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
-import java.io.Serializable;
/**
*
diff --git a/core.sdk/src/main/java/com/lyms/web/controller/BaseController.java b/core.sdk/src/main/java/com/lyms/web/controller/BaseController.java
index a8cbba6..3f101fe 100644
--- a/core.sdk/src/main/java/com/lyms/web/controller/BaseController.java
+++ b/core.sdk/src/main/java/com/lyms/web/controller/BaseController.java
@@ -2,6 +2,8 @@ package com.lyms.web.controller;
import java.io.IOException;
import java.io.PrintWriter;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
@@ -314,5 +316,47 @@ public class BaseController {
}
return new MobileInfo(appVersion, systemVersion, deviceId, width, height, night != 0);
}
+
+ /**
+ *
@Description:获取客户端IP
+ * @param request
+ * @return
+ * 创建人:方承
+ * 创建时间:2016年11月26日
+ * 修改人:
+ * 修改时间:
+ */
+ public static final String getHost(HttpServletRequest request) {
+ String ip = request.getHeader("X-Forwarded-For");
+ if (StrUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getHeader("Proxy-Client-IP");
+ }
+ if (StrUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getHeader("WL-Proxy-Client-IP");
+ }
+ if (StrUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getHeader("X-Real-IP");
+ }
+ if (StrUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getRemoteAddr();
+ }
+ if ("127.0.0.1".equals(ip)) {
+ InetAddress inet = null;
+ try { // 根据网卡取本机配置的IP
+ inet = InetAddress.getLocalHost();
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
+ }
+ ip = inet.getHostAddress();
+ }
+ // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
+ if (ip != null && ip.length() > 15) {
+ if (ip.indexOf(",") > 0) {
+ ip = ip.substring(0, ip.indexOf(","));
+ }
+ }
+ return ip;
+ }
+
}
diff --git a/hospital.web/pom.xml b/hospital.web/pom.xml
index 737e375..be26b8d 100644
--- a/hospital.web/pom.xml
+++ b/hospital.web/pom.xml
@@ -23,6 +23,11 @@
hospital.mac
${project.parent.version}
+
+ com.lyms
+ sync.data
+ ${project.parent.version}
+
diff --git a/mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/generator/.gitignore b/mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/generator/.gitignore
index f5d5a21..1074c7d 100644
--- a/mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/generator/.gitignore
+++ b/mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/generator/.gitignore
@@ -1 +1,2 @@
/MysqlGenerator.java
+/MysqlGeneratorHospital.java
diff --git a/sync.data/pom.xml b/sync.data/pom.xml
new file mode 100644
index 0000000..911ec55
--- /dev/null
+++ b/sync.data/pom.xml
@@ -0,0 +1,17 @@
+
+ 4.0.0
+
+ com.lyms
+ hospital.parent
+ 0.0.1-SNAPSHOT
+
+ sync.data
+
+
+ com.lyms
+ core.sdk
+ ${project.parent.version}
+
+
+
\ No newline at end of file
diff --git a/sync.data/src/main/java/com/lyms/hospital/controller/CenterCallHospitalController.java b/sync.data/src/main/java/com/lyms/hospital/controller/CenterCallHospitalController.java
new file mode 100644
index 0000000..191ae61
--- /dev/null
+++ b/sync.data/src/main/java/com/lyms/hospital/controller/CenterCallHospitalController.java
@@ -0,0 +1,69 @@
+package com.lyms.hospital.controller;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+import com.alibaba.fastjson.JSONObject;
+import com.lyms.spring.PropertiesUtil;
+import com.lyms.sync.data.constants.SyncStatus;
+import com.lyms.sync.data.service.SyncDataBasicService;
+import com.lyms.web.controller.BaseController;
+
+@RestController
+@RequestMapping(value = "/sync", method = RequestMethod.POST)
+public class CenterCallHospitalController extends BaseController {
+
+ private static Logger log = LoggerFactory.getLogger(CenterCallHospitalController.class);
+
+ private static final String ALLOW_IP = PropertiesUtil.getString("sync_allow_ip");
+
+ @Autowired
+ private SyncDataBasicService syncDataBasicService;
+
+ @ResponseBody
+ @RequestMapping(value = "/getNeedSyncData", method = RequestMethod.POST)
+ public String getNeedSyncData(HttpServletRequest request) {
+ if (isAllow(request)) {
+ return getMsg(SyncStatus.SUCCESS,syncDataBasicService.getNeedSyncData());
+ }else{
+ return getMsg(SyncStatus.NOTALLOW);
+ }
+ }
+
+ private boolean isAllow(HttpServletRequest request){
+ String ip = getHost(request);
+ if (ip.equalsIgnoreCase(ALLOW_IP)) {
+ return true;
+ }
+ log.info("不是受理允许的ip【{}】地址请求基础数据同步!", ip);
+ return false;
+ }
+
+ /**
+ * @Description:组装json字符串
+ * @param status
+ * @param dataObj
+ * @return
+ * 创建人:方承
+ * 创建时间:2017年3月13日
+ * 修改人:
+ * 修改时间:
+ */
+ private String getMsg(SyncStatus status,Object ...dataObj){
+ JSONObject json = new JSONObject();
+ json.put("state", status);
+ if(status.equals(SyncStatus.NOTALLOW)){
+ json.put("data", "没有被授权的请求,您的所有信息已经保存,如果您再视图访问,本公司将保留追究法律责任的权利!");
+ }else{
+ json.put("data", JSONObject.toJSONString(dataObj));
+ }
+ return json.toJSONString();
+ }
+
+}
diff --git a/sync.data/src/main/java/com/lyms/sync/data/constants/EventType.java b/sync.data/src/main/java/com/lyms/sync/data/constants/EventType.java
new file mode 100644
index 0000000..cae16c4
--- /dev/null
+++ b/sync.data/src/main/java/com/lyms/sync/data/constants/EventType.java
@@ -0,0 +1,23 @@
+package com.lyms.sync.data.constants;
+
+public enum EventType {
+
+ ADD(1),
+ DELETE(2),
+ UPDATE(3);
+
+ private int type;
+
+ private EventType(int type) {
+ this.setType(type);
+ }
+
+ public int getType() {
+ return type;
+ }
+
+ public void setType(int type) {
+ this.type = type;
+ }
+
+}
diff --git a/sync.data/src/main/java/com/lyms/sync/data/constants/ModuleType.java b/sync.data/src/main/java/com/lyms/sync/data/constants/ModuleType.java
new file mode 100644
index 0000000..f8b58ff
--- /dev/null
+++ b/sync.data/src/main/java/com/lyms/sync/data/constants/ModuleType.java
@@ -0,0 +1,24 @@
+package com.lyms.sync.data.constants;
+
+public enum ModuleType {
+
+ USER("user"),
+ ROLE("role"),
+ ORGANIZATION("org"),
+ DEPARTMENT("dep");
+
+ private String type ;
+
+ private ModuleType(String type) {
+ this.setType(type);
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+}
diff --git a/sync.data/src/main/java/com/lyms/sync/data/constants/SyncStatus.java b/sync.data/src/main/java/com/lyms/sync/data/constants/SyncStatus.java
new file mode 100644
index 0000000..baae114
--- /dev/null
+++ b/sync.data/src/main/java/com/lyms/sync/data/constants/SyncStatus.java
@@ -0,0 +1,24 @@
+package com.lyms.sync.data.constants;
+
+public enum SyncStatus {
+
+ SUCCESS("success"),
+ ERROR("error"),
+ NOTALLOW("notallow");
+
+ private String code;
+
+ private SyncStatus(String code) {
+ this.setCode(code);
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+
+}
diff --git a/sync.data/src/main/java/com/lyms/sync/data/dao/SyncDataBasicMapper.java b/sync.data/src/main/java/com/lyms/sync/data/dao/SyncDataBasicMapper.java
new file mode 100644
index 0000000..f9f9f37
--- /dev/null
+++ b/sync.data/src/main/java/com/lyms/sync/data/dao/SyncDataBasicMapper.java
@@ -0,0 +1,20 @@
+package com.lyms.sync.data.dao;
+
+import com.lyms.sync.data.entity.SyncDataBasic;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+import java.io.Serializable;
+/**
+ *
+ * Mapper接口
+ *
+ *
+ * @author fangcheng
+ * @since 2017-03-13
+ */
+@Repository
+public interface SyncDataBasicMapper extends BaseMapper {
+
+ public Integer deleteLogicById(Serializable id);
+
+}
\ No newline at end of file
diff --git a/sync.data/src/main/java/com/lyms/sync/data/dao/SyncDataBasicMapper.xml b/sync.data/src/main/java/com/lyms/sync/data/dao/SyncDataBasicMapper.xml
new file mode 100644
index 0000000..6fe0b9d
--- /dev/null
+++ b/sync.data/src/main/java/com/lyms/sync/data/dao/SyncDataBasicMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, BID AS bid, MODULE AS module, EVENT AS event, DATA AS data, CREATE_TIME AS createTime, IFSUC AS ifsuc
+
+
diff --git a/sync.data/src/main/java/com/lyms/sync/data/entity/SyncDataBasic.java b/sync.data/src/main/java/com/lyms/sync/data/entity/SyncDataBasic.java
new file mode 100644
index 0000000..595cfc0
--- /dev/null
+++ b/sync.data/src/main/java/com/lyms/sync/data/entity/SyncDataBasic.java
@@ -0,0 +1,115 @@
+package com.lyms.sync.data.entity;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 用户、角色、权限、医院、部门等基础数据同步
+ *
+ *
+ * @author fangcheng
+ * @since 2017-03-13
+ */
+@TableName("SYNC_DATA_BASIC")
+public class SyncDataBasic implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ *
+ */
+ @TableId(value="ID")
+ private String id;
+ /**
+ * 数据对象业务主键
+ */
+ @TableField(value="BID")
+ private String bid;
+ /**
+ * 模块
+ */
+ @TableField(value="MODULE")
+ private String module;
+ /**
+ * 事件,1a,2d,3u
+ */
+ @TableField(value="EVENT")
+ private Integer event;
+ /**
+ * 数据对象
+ */
+ @TableField(value="DATA")
+ private String data;
+ /**
+ * 创建时间
+ */
+ @TableField(value="CREATE_TIME")
+ private Date createTime;
+ /**
+ * 数据上传是否成功
+ */
+ @TableField(value="IFSUC")
+ private Integer ifsuc;
+
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getBid() {
+ return bid;
+ }
+
+ public void setBid(String bid) {
+ this.bid = bid;
+ }
+
+ public String getModule() {
+ return module;
+ }
+
+ public void setModule(String module) {
+ this.module = module;
+ }
+
+ public Integer getEvent() {
+ return event;
+ }
+
+ public void setEvent(Integer event) {
+ this.event = event;
+ }
+
+ public String getData() {
+ return data;
+ }
+
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ public Date getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(Date createTime) {
+ this.createTime = createTime;
+ }
+
+ public Integer getIfsuc() {
+ return ifsuc;
+ }
+
+ public void setIfsuc(Integer ifsuc) {
+ this.ifsuc = ifsuc;
+ }
+
+}
diff --git a/sync.data/src/main/java/com/lyms/sync/data/parse/ParseDataBasicTools.java b/sync.data/src/main/java/com/lyms/sync/data/parse/ParseDataBasicTools.java
new file mode 100644
index 0000000..a074398
--- /dev/null
+++ b/sync.data/src/main/java/com/lyms/sync/data/parse/ParseDataBasicTools.java
@@ -0,0 +1,14 @@
+package com.lyms.sync.data.parse;
+
+/**
+ * @ClassName: 解析基础数据的工具类
+ * @Description: TODO(类描述)
+ * @author 方承
+ * @date 2017年3月13日
+ *
+ */
+public class ParseDataBasicTools {
+
+
+
+}
diff --git a/sync.data/src/main/java/com/lyms/sync/data/service/SyncDataBasicService.java b/sync.data/src/main/java/com/lyms/sync/data/service/SyncDataBasicService.java
new file mode 100644
index 0000000..8118e42
--- /dev/null
+++ b/sync.data/src/main/java/com/lyms/sync/data/service/SyncDataBasicService.java
@@ -0,0 +1,52 @@
+package com.lyms.sync.data.service;
+
+import com.lyms.sync.data.constants.EventType;
+import com.lyms.sync.data.constants.ModuleType;
+import com.lyms.sync.data.entity.SyncDataBasic;
+import com.lyms.web.service.BaseService;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author fangcheng
+ * @since 2017-03-13
+ */
+public interface SyncDataBasicService extends BaseService {
+
+ /**
+ * @Description:逻辑删除,ifDel = 1 为删除,否则为没有删除
+ * @param id 删除主键id
+ * @return 大于0修改成功,否则为失败
+ */
+ public Integer deleteLogicById(Serializable id);
+
+ /**
+ * @Description:添加需要同步的数据
+ * @param bid 业务主键id
+ * @param moduleType 模块类型
+ * @param eventType 时间类型
+ * @param objData 数据对象
+ * @return
+ * 创建人:方承
+ * 创建时间:2017年3月13日
+ * 修改人:
+ * 修改时间:
+ */
+ public boolean addSyncData(String bid, ModuleType moduleType, EventType eventType, Object objData);
+
+
+ /**
+ * @Description:获取所有需要同步的数据列表
+ * @return
+ * 创建人:方承
+ * 创建时间:2017年3月13日
+ * 修改人:
+ * 修改时间:
+ */
+ public List getNeedSyncData();
+
+}
diff --git a/sync.data/src/main/java/com/lyms/sync/data/service/impl/SyncDataBasicServiceImpl.java b/sync.data/src/main/java/com/lyms/sync/data/service/impl/SyncDataBasicServiceImpl.java
new file mode 100644
index 0000000..c1b1886
--- /dev/null
+++ b/sync.data/src/main/java/com/lyms/sync/data/service/impl/SyncDataBasicServiceImpl.java
@@ -0,0 +1,52 @@
+package com.lyms.sync.data.service.impl;
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.springframework.stereotype.Service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.lyms.sync.data.constants.EventType;
+import com.lyms.sync.data.constants.ModuleType;
+import com.lyms.sync.data.dao.SyncDataBasicMapper;
+import com.lyms.sync.data.entity.SyncDataBasic;
+import com.lyms.sync.data.service.SyncDataBasicService;
+import com.lyms.util.DateTimeUtils;
+import com.lyms.util.StrUtils;
+
+/**
+ *
+ * 用户、角色、权限、医院、部门等基础数据同步 服务实现类
+ *
+ *
+ * @author fangcheng
+ * @since 2017-03-13
+ */
+@Service
+public class SyncDataBasicServiceImpl extends ServiceImpl implements SyncDataBasicService {
+
+ public Integer deleteLogicById(Serializable id){
+ return baseMapper.deleteLogicById(id);
+ }
+
+ @Override
+ public boolean addSyncData(String bid,ModuleType moduleType, EventType eventType, Object dataObj) {
+ SyncDataBasic entity = new SyncDataBasic();
+ entity.setId(StrUtils.uuid());
+ entity.setIfsuc(0);
+ entity.setCreateTime(DateTimeUtils.getNow());
+
+ entity.setBid(bid);
+ entity.setModule(moduleType.getType());
+ entity.setEvent(eventType.getType());
+ entity.setData(JSONObject.toJSONString(dataObj));
+ return insert(entity);
+ }
+
+ @Override
+ public List getNeedSyncData() {
+ return selectList(new EntityWrapper().where("IFSUC", "0"));
+ }
+}