diff --git a/platform-common/src/main/java/com/lyms/platform/common/dao/BaseSyncDataDao.java b/platform-common/src/main/java/com/lyms/platform/common/dao/BaseSyncDataDao.java new file mode 100644 index 0000000..ecbd073 --- /dev/null +++ b/platform-common/src/main/java/com/lyms/platform/common/dao/BaseSyncDataDao.java @@ -0,0 +1,14 @@ +package com.lyms.platform.common.dao; + +/** + * 区域和线上数据相互同步 + */ +public interface BaseSyncDataDao { + + void save(T entity); + + void update(T entity); + + void delete(T entity); + +} diff --git a/platform-common/src/main/java/com/lyms/platform/common/dao/BaseSyncDataDaoImpl.java b/platform-common/src/main/java/com/lyms/platform/common/dao/BaseSyncDataDaoImpl.java new file mode 100644 index 0000000..3b40df6 --- /dev/null +++ b/platform-common/src/main/java/com/lyms/platform/common/dao/BaseSyncDataDaoImpl.java @@ -0,0 +1,64 @@ +package com.lyms.platform.common.dao; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.lyms.platform.common.enums.CrudEnums; +import com.lyms.platform.common.enums.SyncStatusEnmus; +import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.pojo.SyncRegionDataModel; +import com.lyms.platform.common.utils.MongoConvertHelper; +import com.lyms.platform.common.utils.ReflectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.core.query.Update; +import org.springframework.util.Assert; + +import java.util.Date; + +/** + * Created by lt on 2017/11/6 0006 + */ +public class BaseSyncDataDaoImpl implements BaseSyncDataDao { + + @Autowired + protected MongoTemplate mongoTemplate; + + @Override + public void save(T entity) { + mongoTemplate.save(entity); + syncData(entity, CrudEnums.CREATE); + } + + @Override + public void update(T entity) { + Update update = MongoConvertHelper + .convertToNativeUpdate(ReflectionUtils.getUpdateField(entity)); + JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(entity)); + mongoTemplate.updateFirst(Query.query(Criteria.where("id").is(jsonObject.getString("id"))), update, entity.getClass()); + syncData(entity, CrudEnums.UPDATE); + } + + @Override + public void delete(T entity) { + JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(entity)); + jsonObject.put("yn", YnEnums.NO.getId()); + entity = (T) JSON.parseObject(JSON.toJSONString(entity), entity.getClass()); + update(entity); + } + + private void syncData(T entity, CrudEnums crudEnums) { + Assert.notNull(entity, "entity must not be null!"); + Assert.notNull(crudEnums, "crudEnums must not be null!"); + + SyncRegionDataModel syncModel = new SyncRegionDataModel(); + syncModel.setAction(crudEnums.getAction()); + syncModel.setClassName(entity.getClass().getName()); + syncModel.setCreated(new Date()); + syncModel.setJsonData(JSON.toJSONString(entity)); + syncModel.setStatus(SyncStatusEnmus.WAITING_FOR_SYNC.getType()); + mongoTemplate.save(syncModel); + } + +} diff --git a/platform-common/src/main/java/com/lyms/platform/common/dao/SyncTestModel.java b/platform-common/src/main/java/com/lyms/platform/common/dao/SyncTestModel.java new file mode 100644 index 0000000..69b29e9 --- /dev/null +++ b/platform-common/src/main/java/com/lyms/platform/common/dao/SyncTestModel.java @@ -0,0 +1,94 @@ +package com.lyms.platform.common.dao; + +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +@Document(collection="lyms_sync_test_model") +public class SyncTestModel { + + private String id; + + private Integer yn; + + private String name; + + private Date created; + + private List list; + + private List> mapList; + + private Map map; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Integer getYn() { + return yn; + } + + public void setYn(Integer yn) { + this.yn = yn; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + public List> getMapList() { + return mapList; + } + + public void setMapList(List> mapList) { + this.mapList = mapList; + } + + public Map getMap() { + return map; + } + + public void setMap(Map map) { + this.map = map; + } + + @Override + public String toString() { + return "SyncTestModel{" + + "id='" + id + '\'' + + ", yn=" + yn + + ", name='" + name + '\'' + + ", created=" + created + + ", list=" + list + + ", mapList=" + mapList + + ", map=" + map + + '}'; + } +} diff --git a/platform-common/src/main/java/com/lyms/platform/common/dao/SyncTestModelDao.java b/platform-common/src/main/java/com/lyms/platform/common/dao/SyncTestModelDao.java new file mode 100644 index 0000000..243512f --- /dev/null +++ b/platform-common/src/main/java/com/lyms/platform/common/dao/SyncTestModelDao.java @@ -0,0 +1,7 @@ +package com.lyms.platform.common.dao; + +/** + * Created by lt on 2017/11/6 0006 + */ +public interface SyncTestModelDao extends BaseSyncDataDao { +} diff --git a/platform-common/src/main/java/com/lyms/platform/common/dao/SyncTestModelDaoImpl.java b/platform-common/src/main/java/com/lyms/platform/common/dao/SyncTestModelDaoImpl.java new file mode 100644 index 0000000..8afb312 --- /dev/null +++ b/platform-common/src/main/java/com/lyms/platform/common/dao/SyncTestModelDaoImpl.java @@ -0,0 +1,7 @@ +package com.lyms.platform.common.dao; + +import org.springframework.stereotype.Repository; + +@Repository +public class SyncTestModelDaoImpl extends BaseSyncDataDaoImpl implements SyncTestModelDao { +} diff --git a/platform-common/src/main/java/com/lyms/platform/common/enums/CrudEnums.java b/platform-common/src/main/java/com/lyms/platform/common/enums/CrudEnums.java new file mode 100644 index 0000000..2db5e83 --- /dev/null +++ b/platform-common/src/main/java/com/lyms/platform/common/enums/CrudEnums.java @@ -0,0 +1,18 @@ +package com.lyms.platform.common.enums; + +public enum CrudEnums { + CREATE("CREATE"), + READ("READ"), + UPDATE("UPDATE"), + DELETE("DELETE"); + + private String action; + + CrudEnums(String action) { + this.action = action; + } + + public String getAction() { + return action; + } +} diff --git a/platform-common/src/main/java/com/lyms/platform/common/enums/SyncStatusEnmus.java b/platform-common/src/main/java/com/lyms/platform/common/enums/SyncStatusEnmus.java new file mode 100644 index 0000000..a5a04d7 --- /dev/null +++ b/platform-common/src/main/java/com/lyms/platform/common/enums/SyncStatusEnmus.java @@ -0,0 +1,34 @@ +package com.lyms.platform.common.enums; + +/** + * Created by lt on 2017/11/6 0006 + */ +public enum SyncStatusEnmus { + + WAITING_FOR_SYNC(1, "等待同步"), + SYNCHRONIZATION(2, "已同步"); + + private Integer type; + private String desc; + + SyncStatusEnmus(Integer type, String desc) { + this.type = type; + this.desc = desc; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/platform-common/src/main/java/com/lyms/platform/common/pojo/SyncRegionDataModel.java b/platform-common/src/main/java/com/lyms/platform/common/pojo/SyncRegionDataModel.java new file mode 100644 index 0000000..e19c85c --- /dev/null +++ b/platform-common/src/main/java/com/lyms/platform/common/pojo/SyncRegionDataModel.java @@ -0,0 +1,79 @@ +package com.lyms.platform.common.pojo; + +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; + +@Document(collection = "lyms_sync_region_data") +public class SyncRegionDataModel { + + private String id; + + private Date created; + + private Date modified; + + private String action; + + private String className; + + private String jsonData; + + private Integer status; // 1:未同步 , 2:已同步 + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Date getModified() { + return modified; + } + + public void setModified(Date modified) { + this.modified = modified; + } + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getJsonData() { + return jsonData; + } + + public void setJsonData(String jsonData) { + this.jsonData = jsonData; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } +} diff --git a/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java b/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java index 4d4e393..c1f41ce 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java +++ b/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java @@ -970,6 +970,9 @@ public class DateUtil { Integer betweenDay = DateUtil.getDays(start, end); Integer week = betweenDay / 7; Integer day = betweenDay % 7; + if(week > 42) { + return "已分娩"; + } return "孕" + week + "周" + (day > 0 ? "+" + day + "天" : ""); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SyncRegionDataController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SyncRegionDataController.java new file mode 100644 index 0000000..67206b3 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SyncRegionDataController.java @@ -0,0 +1,23 @@ +package com.lyms.platform.operate.web.controller; + +import com.lyms.platform.common.dao.SyncTestModel; +import com.lyms.platform.common.dao.SyncTestModelDao; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +@RequestMapping("/sync/region") +public class SyncRegionDataController { + @Autowired + private SyncTestModelDao syncTestModelDao; + + @RequestMapping("/test/save") + @ResponseBody + public String test(SyncTestModel syncTestModel) { + syncTestModelDao.save(syncTestModel); + return "ok"; + } + +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java index c3a8d1f..3c6e899 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java @@ -1,5 +1,6 @@ package com.lyms.platform.operate.web.controller; +import com.alibaba.fastjson.JSON; import com.lyms.hospitalapi.dzfy.DzfyFmService; import com.lyms.hospitalapi.qhdfy.QhdfyFmService; import com.lyms.hospitalapi.qhdfy.QhdfyHisService; @@ -21,11 +22,13 @@ import com.lyms.platform.permission.model.OrganizationQuery; import com.lyms.platform.permission.service.OrganizationService; import com.lyms.platform.pojo.*; import com.lyms.platform.query.*; +import com.mongodb.Mongo; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.data.authentication.UserCredentials; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; @@ -1203,8 +1206,21 @@ public class TestController { return "syncDzFmByPhone finish"; } - public static void main(String[] a) { - try { + public static void main(String[] a) throws Exception { + Mongo mongo = new Mongo("119.90.57.26", 10001); + UserCredentials credentials = new UserCredentials("platform", "platform123"); + MongoTemplate mongoTemplate = new MongoTemplate(mongo, "platform", credentials); + PatientWeight pw = mongoTemplate.findById("123", PatientWeight.class); + Map s = new HashMap<>(); + s.put("name", "1"); + s.put("name2", "12"); + pw.setDayWeights(s); + String json = JSON.toJSONString(pw); + String clazz = "com.lyms.platform.pojo.PatientWeight"; + JSON.parseObject(json, Class.forName(clazz)); + mongoTemplate.save(pw); + + /* try { List list = FileUtils.readLines(new File("D:\\QHD.csv"), "gbk"); List linenums = new ArrayList<>(); for (String line : list) { @@ -1225,7 +1241,7 @@ public class TestController { // FileUtils.writeStringToFile(new File("d:\\temp\\qhdfy_lost_data.csv"), sb.toString()); } catch (Exception e) { e.printStackTrace(); - } + }*/ } @RequestMapping("/poll") diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java index d9bde46..b9c2963 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java @@ -777,8 +777,8 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService String householdAddress = findName(patient.getProvinceId()) + findName(patient.getCityId()) + findName(patient.getAreaId()) + findName(patient.getStreetId()) + patient.getAddress(); temp.put("householdAddress", householdAddress.replace("null", "")); /** 户籍地 */ temp.put("lastMenses", DateUtil.getyyyy_MM_dd(patient.getLastMenses())); - temp.put("week", DateUtil.getWeek(patient.getLastMenses(), new Date()) > 42 ? "已分娩" : DateUtil.getWeekDesc(patient.getLastMenses(), new Date())); /** 当前孕周 */ - temp.put("buildWeek", DateUtil.getWeek(patient.getLastMenses(), patient.getBookbuildingDate()) > 42 ? "已分娩" : DateUtil.getWeekDesc(patient.getLastMenses(), patient.getBookbuildingDate())); /** 建档孕周 */ + temp.put("week", DateUtil.getWeekDesc(patient.getLastMenses(), new Date())); /** 当前孕周 */ + temp.put("buildWeek", DateUtil.getWeekDesc(patient.getLastMenses(), patient.getBookbuildingDate())); /** 建档孕周 */ temp.put("buildDate", DateUtil.getyyyy_MM_dd(patient.getBookbuildingDate())); /** 建档日期 */ temp.put("doctorName", couponMapper.getUserName(patient.getBookbuildingDoctor())); temp.put("hospitalName", couponMapper.findHospitalNameById(patient.getHospitalId()));