diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientsService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientsService.java index 6031d79..db3d41f 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientsService.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientsService.java @@ -191,7 +191,7 @@ public class PatientsService { PatientsQuery patientsQuery = new PatientsQuery(); patientsQuery.setYn(YnEnums.YES.getId()); patientsQuery.setType(1); - patientsQuery.setLastMensesEnd(endDate); + patientsQuery.setLastMensesNeEnd(endDate); List patientses = queryPatient(patientsQuery); List list = null; for (Patients patients : patientses) { diff --git a/platform-biz-service/src/main/resources/mainOrm/slave/Users.xml b/platform-biz-service/src/main/resources/mainOrm/slave/Users.xml index 286b144..22b2f3b 100644 --- a/platform-biz-service/src/main/resources/mainOrm/slave/Users.xml +++ b/platform-biz-service/src/main/resources/mainOrm/slave/Users.xml @@ -97,6 +97,12 @@ created = #{created,jdbcType=TIMESTAMP}, + + and modified >= #{gteModified,jdbcType=TIMESTAMP} + + + and created >= #{gteCreated,jdbcType=TIMESTAMP} + remarks = #{remarks,jdbcType=VARCHAR}, diff --git a/platform-dal/src/main/java/com/lyms/platform/query/AntExChuQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/AntExChuQuery.java index b1e09c4..955f63f 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/AntExChuQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/AntExChuQuery.java @@ -26,8 +26,17 @@ public class AntExChuQuery extends BaseQuery implements IConvertToNativeQuery { private Date nextCheckTimeEnd; //大于修改时间 private Date gteModified; + private Date gteCreated; private String pid; + public Date getGteCreated() { + return gteCreated; + } + + public void setGteCreated(Date gteCreated) { + this.gteCreated = gteCreated; + } + public Date getGteModified() { return gteModified; } @@ -146,11 +155,18 @@ public class AntExChuQuery extends BaseQuery implements IConvertToNativeQuery { if(null!=gteModified){ if (null != c) { - c = c.gte(gteModified); + c = c.where("modified").gte(gteModified); } else { c = Criteria.where("modified").gte(gteModified); } } + if(null!=gteCreated){ + if (null != c) { + c = c.where("created").gte(gteCreated); + } else { + c = Criteria.where("created").gte(gteCreated); + } + } if (null != c) { condition = condition.andCondition(new MongoCondition(c)); diff --git a/platform-dal/src/main/java/com/lyms/platform/query/AntExQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/AntExQuery.java index a3b9dda..39b1325 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/AntExQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/AntExQuery.java @@ -28,6 +28,27 @@ public class AntExQuery extends BaseQuery implements IConvertToNativeQuery { private boolean neEnd; + //大于修改时间 + private Date gteModified; + + private Date gteCreated; + + public Date getGteCreated() { + return gteCreated; + } + + public void setGteCreated(Date gteCreated) { + this.gteCreated = gteCreated; + } + + public Date getGteModified() { + return gteModified; + } + + public void setGteModified(Date gteModified) { + this.gteModified = gteModified; + } + public boolean isNeEnd() { return neEnd; } @@ -114,6 +135,21 @@ public class AntExQuery extends BaseQuery implements IConvertToNativeQuery { } isAddStart = Boolean.TRUE; } + if(null!=gteModified){ + if (null != c) { + c = c.where("modified").gte(gteModified); + } else { + c = Criteria.where("modified").gte(gteModified); + } + } + if(null!=gteCreated){ + if (null != c) { + c = c.where("created").gte(gteCreated); + } else { + c = Criteria.where("created").gte(gteCreated); + } + } + if (null != end) { if (isAddStart) { diff --git a/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java index f43050e..b204434 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java @@ -78,6 +78,15 @@ public class PatientsQuery extends BaseQuery implements IConvertToNativeQuery { private Date lastRhTimeStart; private Date lastRhTimeEnd; + private Date lastMensesNeEnd; + + public Date getLastMensesNeEnd() { + return lastMensesNeEnd; + } + + public void setLastMensesNeEnd(Date lastMensesNeEnd) { + this.lastMensesNeEnd = lastMensesNeEnd; + } private String pid; @@ -215,6 +224,16 @@ public class PatientsQuery extends BaseQuery implements IConvertToNativeQuery { //大于修改时间 private Date gteModified; //大于创建时间 + //大于创建时间 + private Date gteCreated; + + public Date getGteCreated() { + return gteCreated; + } + + public void setGteCreated(Date gteCreated) { + this.gteCreated = gteCreated; + } public Date getGteModified() { return gteModified; @@ -681,12 +700,20 @@ public class PatientsQuery extends BaseQuery implements IConvertToNativeQuery { if (null != gteModified) { if (null!=c1) { - c1 = c1.gte(gteModified); + c1 = c1.where("modified").gte(gteModified); } else { c1 = Criteria.where("modified").gte(gteModified); } } + if(null!=gteCreated){ + if (null != c1) { + c1 = c1.where("created").gte(gteCreated); + } else { + c1 = Criteria.where("created").gte(gteCreated); + } + } + // Criteria cr1 = Criteria.where("bookbuildingDate").gte(bookbuildingDateStart).lte(bookbuildingDateEnd); // Criteria cr = cr1.where("lastMenses").gte(lastMensesStart).lte(lastMensesEnd); @@ -710,6 +737,13 @@ public class PatientsQuery extends BaseQuery implements IConvertToNativeQuery { } } + if (null != lastMensesNeEnd) { + if (c1!=null) { + c1 = c1.lt(lastMensesNeEnd); + } else { + c1 = Criteria.where("lastMenses").lt(lastMensesNeEnd); + } + } if (null != dueDateStart) { if(null!=c1){ diff --git a/platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/ConvertHelper.java b/platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/ConvertHelper.java index 2840f76..d80ded3 100644 --- a/platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/ConvertHelper.java +++ b/platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/ConvertHelper.java @@ -1,14 +1,18 @@ package com.lyms.platform.job.index.restore.data; +import com.lyms.platform.biz.service.BasicConfigService; import com.lyms.platform.common.utils.DateUtil; import com.lyms.platform.common.utils.JsonUtil; import com.lyms.platform.common.utils.ReflectionUtils; +import com.lyms.platform.common.utils.StringUtils; import com.lyms.platform.permission.model.Organization; import com.lyms.platform.pojo.AntExChuModel; +import com.lyms.platform.pojo.AntenatalExaminationModel; import com.lyms.platform.pojo.Patients; import com.lymsh.mommybaby.maindata.model.DoctorUsers; import com.lymsh.mommybaby.maindata.model.Hospitals; import com.lymsh.mommybaby.maindata.model.Reports; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.math.NumberUtils; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.support.EncodedResource; @@ -179,7 +183,7 @@ public class ConvertHelper { * @param antExChuModel * @return */ - public static Reports convertAntExChu(AntExChuModel antExChuModel, Date lastMenses) { + public static Reports convertAntExChu(AntExChuModel antExChuModel, Date lastMenses,Map map,String doctorUserName) { Reports reports = new Reports(); //孕期类型 reports.setType(1); @@ -193,7 +197,7 @@ public class ConvertHelper { //产检报告 reports.setCheckType(3); reports.setPublishName(AUTO_WORKER); - + reports.setNextCheckTime(antExChuModel.getNextCheckTime()); Integer dueWeek = null; if (null != antExChuModel.getcDueWeek()) { dueWeek = NumberUtils.toInt(antExChuModel.getcDueWeek()); @@ -201,18 +205,50 @@ public class ConvertHelper { dueWeek = DateUtil.getWeek(lastMenses, antExChuModel.getCheckTime()); } reports.setWeeks(dueWeek); - reports.setResult(convertAntExChuResult(antExChuModel)); + reports.setResult(convertAntExChuResult(antExChuModel, map, doctorUserName)); return reports; } /** + * 转换检查报告 + * + * @param antExChuModel + * @return + */ + public static Reports convertAntExChu(AntenatalExaminationModel antExChuModel, Date lastMenses,Map rhMap,String doctorUserName) { + Reports reports = new Reports(); + //孕期类型 + reports.setType(1); + reports.setPhysicalTime(antExChuModel.getCheckDate()); + reports.setForeignId(antExChuModel.getId()); + reports.setDesignation("复诊"); + reports.setCreated(antExChuModel.getCreated()); + reports.setModified(antExChuModel.getModified()); + reports.setYn(antExChuModel.getYn()); + reports.setPublishId(0); + //产检报告 + reports.setCheckType(3); + reports.setPublishName(AUTO_WORKER); + reports.setNextCheckTime(antExChuModel.getNextCheckTime()); + Integer dueWeek = null; + if (null != antExChuModel.getcDueWeek()) { + dueWeek = NumberUtils.toInt(antExChuModel.getcDueWeek()); + } else { + dueWeek = DateUtil.getWeek(lastMenses, antExChuModel.getCheckDate()); + } + reports.setWeeks(dueWeek); + reports.setResult(convertAntExResult(antExChuModel,rhMap,doctorUserName)); + return reports; + } + + /** * 把初诊转换成json * * @param antExChuModel * @return */ - private static String convertAntExChuResult(AntExChuModel antExChuModel) { + private static String convertAntExChuResult(AntExChuModel antExChuModel,Map bgMap,String doctorUserName) { List list = new ArrayList(); List list2 = getField(antExChuModel); @@ -221,14 +257,77 @@ public class ConvertHelper { String key = properties.getProperty(list2.get(i)); java.util.Map dataMap = new HashMap<>(); if (null != key) { + if ("血压".equals(key)) { + Map map = JsonUtil.str2Obj(antExChuModel.getBp(), Map.class); + if (null != map) { + String ssy =null; + String szy =null; + Object obj1 = map.get("ssy"); + if(null!=obj1){ + //低压 + ssy= map.get("ssy").toString(); + } + obj1 = map.get("szy"); + if(null!=obj1){ + szy= map.get("szy").toString(); + } + //高压 + if (StringUtils.isNotEmpty(szy)) { + java.util.Map dataMap1 = new HashMap<>(); + dataMap1.put("k", "血压(低压)"); + dataMap1.put("v", szy+"mmHg"); + list.add(dataMap1); + } + if (StringUtils.isNotEmpty(ssy)) { + dataMap.put("k", "高压"); + dataMap.put("v", ssy+"mmHg"); + list.add(dataMap); + } + } + continue; + } + //高危 + if ("高危因素".equals(key)) { + List map = JsonUtil.toList(antExChuModel.getHighrisk(), List.class); + if (CollectionUtils.isNotEmpty(map)) { + StringBuilder sb = new StringBuilder(); + for (Object str : map) { + if (null!=str &&org.apache.commons.lang.StringUtils.isNotEmpty(str.toString())) { + String val = bgMap.get(str.toString()); + if(org.apache.commons.lang.StringUtils.isNotEmpty(val)){ + sb.append(val).append("、"); + } + } + } + if(null!=antExChuModel.getOtherHighRisk()&&!"{}".equals(antExChuModel.getOtherHighRisk())){ + Map map1 = JsonUtil.str2Obj(antExChuModel.getOtherHighRisk(),Map.class); + Object rh= map1.get("fxysu"); + if(null!=rh &&StringUtils.isNotEmpty(rh.toString())){ + sb.append(rh); + } + } + //低压 + java.util.Map dataMap1 = new HashMap<>(); + dataMap1.put("k", key); + dataMap1.put("v", sb.toString()); + list.add(dataMap1); + } + continue; + } dataMap.put("k", key); + if("产检医生".equals(key)){ + obj=doctorUserName; + dataMap.put("v", obj); + list.add(dataMap); + continue; + } if (obj instanceof Date) { dataMap.put("v", DateUtil.getyyyy_MM_dd((Date) obj)); } else { - String str =getAntExChuValue(key, antExChuModel); - if(null!=str){ + String str = getAntExChuValue(key, antExChuModel); + if (null != str) { dataMap.put("v", str); - }else{ + } else { dataMap.put("v", obj); } } @@ -240,6 +339,88 @@ public class ConvertHelper { return JsonUtil.array2JsonString(list); } + private static String convertAntExResult(AntenatalExaminationModel antExChuModel,Map hrMap,String doctorUserName) { + List list = new ArrayList(); + + List list2 = getField(antExChuModel); + for (int i = 0; i < list2.size(); i++) { + Object obj = ReflectionUtils.getFieldValue(antExChuModel, list2.get(i)); + String key = properties.getProperty(list2.get(i)); + java.util.Map dataMap = new HashMap<>(); + if (null != key) { + if ("血压".equals(key)) { + Map map = JsonUtil.str2Obj(antExChuModel.getBp(), Map.class); + if (null != map) { + + String ssy =null; + String szy =null; + Object obj1 = map.get("ssy"); + if(null!=obj1){ + //低压 + ssy= map.get("ssy").toString(); + } + obj1 = map.get("szy"); + if(null!=obj1){ + szy= map.get("szy").toString(); + } + if (StringUtils.isNotEmpty(ssy)) { + java.util.Map dataMap1 = new HashMap<>(); + dataMap1.put("k", "血压(低压)"); + dataMap1.put("v", ssy +"mmHg"); + list.add(dataMap1); + } + if (StringUtils.isNotEmpty(szy)) { + dataMap.put("k", "高压"); + dataMap.put("v", szy+ "mmHg"); + list.add(dataMap); + } + } + continue; + } + //高危 + else if ("高危因素".equals(key)) { + List map = JsonUtil.toList(antExChuModel.getRiskFactor(), List.class); + if (CollectionUtils.isNotEmpty(map)) { + StringBuilder sb = new StringBuilder(); + for (Object str : map) { + if (org.apache.commons.lang.StringUtils.isNotEmpty(str.toString())) { + String val = hrMap.get(str.toString()); + if(org.apache.commons.lang.StringUtils.isNotEmpty(val)){ + sb.append(val).append("、"); + } + } + } + if(null!=antExChuModel.getOtherRisk()&&!"{}".equals(antExChuModel.getOtherRisk())){ + Map map1 = JsonUtil.str2Obj(antExChuModel.getOtherRisk(),Map.class); + Object rh= map1.get("fxysu"); + if(null!=rh &&StringUtils.isNotEmpty(rh.toString())){ + sb.append(rh); + } + } + //低压 + java.util.Map dataMap1 = new HashMap<>(); + dataMap1.put("k", key); + dataMap1.put("v", sb.toString()); + list.add(dataMap1); + } + continue; + }else if("产检医生".equals(key)){ + obj=doctorUserName; + } + + dataMap.put("k", key); + if (obj instanceof Date) { + dataMap.put("v", DateUtil.getyyyy_MM_dd((Date) obj)); + } else { + dataMap.put("v", obj); + } + if (null != obj) { + list.add(dataMap); + } + } + } + return JsonUtil.array2JsonString(list); + } private static String getAntExChuValue(String key, AntExChuModel antExChuModel) { StringBuilder sb = new StringBuilder(); @@ -264,17 +445,19 @@ public class ConvertHelper { return replace(map, sb); } - public static void main(String [] args){ - AntExChuModel antExChuModel=new AntExChuModel(); - antExChuModel.setFamilyHistory("{\"yesOrNo\":\"no\"}"); + public static void main(String[] args) { + AntExChuModel antExChuModel = new AntExChuModel(); + antExChuModel.setFamilyHistory("{\"npx\":true,\"sm\":true,\"yesOrNo\":\"yes\"}"); antExChuModel.setPregnancyTimes(3); antExChuModel.setHeight("3.2"); antExChuModel.setYsfyHistory("{\"yesOrNo\":\"yes\",\"yzq3\":true}"); - System.out.print(convertAntExChuResult(antExChuModel)); + antExChuModel.setBp("{\"ssy\":70,\"szy\":120}"); + antExChuModel.setFuwei("11"); + System.out.print(convertAntExChu(antExChuModel,null, null,"").getResult()); } private static String replace(Map map, StringBuilder sb) { - if(null==map){ + if (null == map) { return null; } if ("yes".equals(map.get(YES_OR_NO))) { @@ -295,8 +478,8 @@ public class ConvertHelper { if (map.containsKey("qtText")) { sb.append(map.get("qtText")); } - if(sb.toString().endsWith(",")){ - return sb.substring(0,sb.length()-1); + if (sb.toString().endsWith(",")) { + return sb.substring(0, sb.length() - 1); } } else if ("no".equals(map.get(YES_OR_NO))) { sb.append("无"); @@ -316,4 +499,17 @@ public class ConvertHelper { cachedField.put(antExChuModel.getClass(), fieldName); return fieldName; } + + private static List getField(AntenatalExaminationModel antExChuModel) { + if (cachedField.containsKey(antExChuModel.getClass())) { + return cachedField.get(antExChuModel.getClass()); + } + Field[] field = AntenatalExaminationModel.class.getDeclaredFields(); + List fieldName = new ArrayList<>(); + for (Field f : field) { + fieldName.add(f.getName()); + } + cachedField.put(antExChuModel.getClass(), fieldName); + return fieldName; + } } \ No newline at end of file diff --git a/platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/SyncDataWork.java b/platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/SyncDataWork.java index 4fb45b2..50a8df4 100644 --- a/platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/SyncDataWork.java +++ b/platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/SyncDataWork.java @@ -5,15 +5,18 @@ import com.lyms.platform.biz.service.BasicConfigService; import com.lyms.platform.biz.service.YunBookbuildingService; import com.lyms.platform.common.enums.YnEnums; import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.SystemConfig; import com.lyms.platform.permission.model.Organization; import com.lyms.platform.permission.model.OrganizationQuery; import com.lyms.platform.permission.model.Users; import com.lyms.platform.permission.model.UsersQuery; import com.lyms.platform.permission.service.OrganizationService; import com.lyms.platform.pojo.AntExChuModel; +import com.lyms.platform.pojo.AntenatalExaminationModel; import com.lyms.platform.pojo.BasicConfig; import com.lyms.platform.pojo.Patients; import com.lyms.platform.query.AntExChuQuery; +import com.lyms.platform.query.AntExQuery; import com.lyms.platform.query.BasicConfigQuery; import com.lyms.platform.query.PatientsQuery; import com.lymsh.mommybaby.maindata.enumdata.YnEnum; @@ -25,6 +28,7 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowire; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -42,7 +46,7 @@ import java.util.concurrent.TimeUnit; /** * 同步数据接口 - *

+ *

* Created by Administrator on 2016/9/29 0029. */ @Component @@ -96,33 +100,35 @@ public class SyncDataWork { private MembersService membersService; @Value("#{configProperties['file.path']}") - private String FILE_PATH; + private String FILE_PATH; //最后一次同步时间 - private long lastSyncTime=-1L; + private long lastSyncTime = -1L; /** * */ private java.util.Map orgMapToId = new HashMap<>(); //妈咪贝比的省市区 private java.util.Map mamiRegions = new HashMap<>(); + //高危因素 + private java.util.Map bgHighRisk = new HashMap<>(); /** * mongo 里面省市区的id */ public static final String CHINA_BASIC_ID = "f6c505dd-835a-43d7-b0bb-fdb9eb0b7b31"; - private long readLastSyncTime(){ + private long readLastSyncTime() { try { - if(-1!=lastSyncTime){ + if (-1 != lastSyncTime) { return lastSyncTime; } - RandomAccessFile randomAccessFile=new RandomAccessFile(new File(FILE_PATH),"rw"); - String line =randomAccessFile.readLine(); - if(StringUtils.isNotEmpty(line)){ - lastSyncTime = Long.valueOf(line); - } - }catch (Exception e){ - logger.error("read last sync time error.",e); + RandomAccessFile randomAccessFile = new RandomAccessFile(new File(FILE_PATH), "rw"); + String line = randomAccessFile.readLine(); + if (StringUtils.isNotEmpty(line)) { + lastSyncTime = Long.valueOf(line); + } + } catch (Exception e) { + logger.error("read last sync time error.", e); } return lastSyncTime; } @@ -130,16 +136,17 @@ public class SyncDataWork { /** * 持久化最后一次同步时间 */ - private void writeLastSyncTime(){ + private void writeLastSyncTime() { try { - lastSyncTime=System.currentTimeMillis(); - RandomAccessFile randomAccessFile=new RandomAccessFile(new File(FILE_PATH),"rw"); + lastSyncTime = System.currentTimeMillis(); + RandomAccessFile randomAccessFile = new RandomAccessFile(new File(FILE_PATH), "rw"); randomAccessFile.writeBytes(lastSyncTime + ""); randomAccessFile.close(); - }catch (Exception e){ - logger.error("read last sync time error.",e); + } catch (Exception e) { + logger.error("read last sync time error.", e); } } + /** * 加载全部省市区的数据到内存里面 */ @@ -157,6 +164,25 @@ public class SyncDataWork { } } + private void loadRpHighRisk() { + + BasicConfigQuery regionsQuery = new BasicConfigQuery(); + regionsQuery.setParentId(SystemConfig.HIGH_RISK_ID); + regionsQuery.setYn(YnEnums.YES.getId()); + List basicConfigList = basicConfigService.queryBasicConfig(regionsQuery); + if (CollectionUtils.isNotEmpty(basicConfigList)) { + for (BasicConfig basicConfig : basicConfigList) { + regionsQuery.setParentId(basicConfig.getId()); + List basicConfigList1 = basicConfigService.queryBasicConfig(regionsQuery); + for (BasicConfig basicConfig1 : basicConfigList1) { + bgHighRisk.put(basicConfig1.getId(), basicConfig1.getName()); + } + } + } else { + logger.warn("load loadRpHighRisk error.no data"); + } + } + /** * 加载区域平台的省市区 */ @@ -172,8 +198,8 @@ public class SyncDataWork { } } - private Hospitals fullHospital(Organization organization){ - Hospitals hospitals = ConvertHelper.convertHospital(organization); + private Hospitals fullHospital(Organization organization) { + Hospitals hospitals = ConvertHelper.convertHospital(organization); if (null != organization.getAreaId()) { BasicConfig basicConfig = basicConfigService.getOneBasicConfigById(organization.getAreaId()); if (null != basicConfig) { @@ -200,30 +226,29 @@ public class SyncDataWork { //获取最后一次同步的时间 如果为-1就表示是全量同步 readLastSyncTime(); logger.info("start sync at " + DateUtil.getyyyy_MM_dd(new Date())); - //先加载省市区 + //先加载省市区 loadMamiAllRegion(); + //加载高危数据 + loadRpHighRisk(); OrganizationQuery organizationQuery = new OrganizationQuery(); organizationQuery.setYn(YnEnums.YES.getId()); //查询符合条件的机构 List organizationList = organizationService.queryOrganization(organizationQuery); - CountDownLatch countDownLatch=null;; + CountDownLatch countDownLatch = null; + ; if (CollectionUtils.isNotEmpty(organizationList)) { Hospitals hospitals = null; - countDownLatch =new CountDownLatch(organizationList.size()); + countDownLatch = new CountDownLatch(organizationList.size()); for (Organization organization : organizationList) { HospitalsQuery hospitalsQuery = new HospitalsQuery(); -// hospitalsQuery.setForeignId(organization.getId() + ""); hospitalsQuery.setTitle(organization.getName()); hospitalsQuery.setYn(YnEnums.YES.getId()); List hospitalsList = hospitalsService.queryHospitals(hospitalsQuery); if (CollectionUtils.isNotEmpty(hospitalsList)) { - hospitals=hospitalsList.get(0); -// hospitals = fullHospital(organization); - /* hospitals.setId(hospitalsList.get(0).getId()); - hospitalsService.updateHospitals(hospitals);*/ + hospitals = hospitalsList.get(0); } else { - hospitals= fullHospital(organization); + hospitals = fullHospital(organization); hospitalsService.addHospitals(hospitals); } @@ -232,15 +257,20 @@ public class SyncDataWork { } else { logger.warn("add hospital don't id."); } - workExecutor.execute(new SyncWork(organization.getId() + "",countDownLatch)); + workExecutor.execute(new SyncWork(organization.getId() + "", countDownLatch)); } } countDownLatch.await(); //持久化最后一次同步时间 writeLastSyncTime(); + clearAll(); logger.info("sync end costTime:" + (System.currentTimeMillis() - l) + " ms."); } - + private void clearAll(){ + orgMapToId.clear(); + mamiRegions.clear(); + bgHighRisk.clear(); + } /** * 执行同步的工作线程 */ @@ -251,24 +281,25 @@ public class SyncDataWork { private java.util.Map userMapping = new HashMap<>(); - public SyncWork(String hospitalId,CountDownLatch countDownLatch) { - setName("SyncWork-"+hospitalId); + public SyncWork(String hospitalId, CountDownLatch countDownLatch) { + setName("SyncWork-" + hospitalId); this.hospitalId = hospitalId; - this.countDownLatch=countDownLatch; + this.countDownLatch = countDownLatch; } @Override public void run() { try { - long l =System.currentTimeMillis(); + long l = System.currentTimeMillis(); logger.info("begin sync work hospital:" + hospitalId + ",at time " + DateUtil.getyyyy_MM_dd(new Date())); - StopWatch stopWatch=new StopWatch("SyncWork-"+hospitalId); + StopWatch stopWatch = new StopWatch("SyncWork-" + hospitalId); //查询出该医院所以的医生用户 UsersQuery usersQuery = new UsersQuery(); usersQuery.setYn(YnEnums.YES.getId()); usersQuery.setOrgId(Integer.valueOf(hospitalId)); - if(-1!=lastSyncTime){ + if (-1 != lastSyncTime) { usersQuery.setGteModified(new Date(lastSyncTime)); + usersQuery.setGteCreated(new Date(lastSyncTime)); } stopWatch.start("queryUsers"); List userses = usersService.queryUsers(usersQuery); @@ -283,12 +314,12 @@ public class SyncDataWork { doctorUsersQuery.setYn(YnEnums.YES.getId()); doctorUsersQuery.setHospitalId(orgMapToId.get(hospitalId)); doctorUsersQuery.setUsername(users.getName()); - StopWatch stopWatch1=new StopWatch("SyncWork-"+hospitalId+",userId:"+users.getId()); + StopWatch stopWatch1 = new StopWatch("SyncWork-" + hospitalId + ",userId:" + users.getId()); stopWatch1.start("queryDoctorUsers"); List doctorUsersList = doctorUsersService.queryDoctorUsers(doctorUsersQuery); stopWatch1.stop(); if (CollectionUtils.isNotEmpty(doctorUsersList)) { - doctorUsers=doctorUsersList.get(0); + doctorUsers = doctorUsersList.get(0); /* doctorUsers = ConvertHelper.convertUsers(users); doctorUsers.setHospitalId(orgMapToId.get(hospitalId)); stopWatch1.start("updateDoctorUsers"); @@ -308,34 +339,39 @@ public class SyncDataWork { } logger.info(stopWatch1.toString()); } + logger.info("hospitalId" + hospitalId + ",userMapping :" + userMapping); } PatientsQuery patientsQuery1 = new PatientsQuery(); patientsQuery1.setYn(YnEnums.YES.getId()); patientsQuery1.setHospitalId(hospitalId); - if(-1!=lastSyncTime){ + if (-1 != lastSyncTime) { patientsQuery1.setGteModified(new Date(lastSyncTime)); + patientsQuery1.setGteCreated(new Date(lastSyncTime)); } - StopWatch stopWatch2=new StopWatch("SyncWork-"+hospitalId+"-query patient"); + StopWatch stopWatch2 = new StopWatch("SyncWork-" + hospitalId + "-query patient"); stopWatch2.start("queryPregnantWithQuery"); List patientses = yunBookbuildingService.queryPregnantWithQuery(patientsQuery1); stopWatch2.stop(); logger.info(stopWatch2.toString()); - logger.info("query patient by hospitalId:"+ hospitalId+", list size :" + patientses.size()); - if(CollectionUtils.isNotEmpty(patientses)) { + logger.info("query patient by hospitalId:" + hospitalId + ", list size :" + patientses.size()); + if (CollectionUtils.isNotEmpty(patientses)) { for (Patients patients : patientses) { - StopWatch stopWatch3=new StopWatch("SyncWork-"+hospitalId+"-patient-"+patients.getId()); + StopWatch stopWatch3 = new StopWatch("SyncWork-" + hospitalId + "-patient-" + patients.getId()); com.lymsh.mommybaby.maindata.model.Patients mamiPatient = ConvertHelper.convertPatient(patients); + stopWatch3.start("aouPatients"); //增加建档记录 patientsService.aouPatients(mamiPatient); + stopWatch3.stop(); //绑定用户 bandingMember(mamiPatient); AntExChuQuery antExChuQuery = new AntExChuQuery(); antExChuQuery.setYn(YnEnums.YES.getId()); antExChuQuery.setParentId(patients.getId()); - if(-1!=lastSyncTime){ + if (-1 != lastSyncTime) { antExChuQuery.setGteModified(new Date(lastSyncTime)); + antExChuQuery.setGteCreated(new Date(lastSyncTime)); } DoctorUsersPatientsMaps doctorUsersPatientsMaps = new DoctorUsersPatientsMaps(); @@ -344,16 +380,19 @@ public class SyncDataWork { //门诊患者 doctorUsersPatientsMaps.setGroupId(4); - //设置为待处理 - doctorUsersPatientsMaps.setStatus(1); - doctorUsersPatientsMaps.setStatusName("待处理"); - stopWatch3.start("aouPatients"); + //已分勉 + if (null != patients.getType() && patients.getType() == 3) { + doctorUsersPatientsMaps.setGroupId(7); + } //设置为高危 - if(null!=patients.getRiskScore() &&patients.getRiskScore()>0){ + else if (null != patients.getRiskScore() && patients.getRiskScore() > 0) { doctorUsersPatientsMaps.setGroupId(2); } + //设置为待处理 + doctorUsersPatientsMaps.setStatus(1); + doctorUsersPatientsMaps.setStatusName("待处理"); + - stopWatch3.stop(); doctorUsersPatientsMaps.setPatientId(mamiPatient.getId()); if (StringUtils.isNotEmpty(patients.getBookbuildingDoctor())) { doctorUsersPatientsMaps.setDoctorUserId(userMapping.get(Integer.valueOf(patients.getBookbuildingDoctor()))); @@ -366,8 +405,19 @@ public class SyncDataWork { if (CollectionUtils.isEmpty(antExChuModel)) { continue; } + String doctorUserName = null; for (AntExChuModel antExChuModel1 : antExChuModel) { - Reports reports = ConvertHelper.convertAntExChu(antExChuModel1, patients.getLastMenses()); + + Integer doctorUserId = userMapping.get(Integer.valueOf(antExChuModel1.getProdDoctor())); + if (null != doctorUserId) { + DoctorUsers doctorUsers1 = doctorUsersService.getDoctorUsers(doctorUserId); + if (null != doctorUsers1) { + doctorUserName = doctorUsers1.getUsername(); + } + } + + + Reports reports = ConvertHelper.convertAntExChu(antExChuModel1, patients.getLastMenses(), bgHighRisk, doctorUserName); if (NumberUtils.isNumber(antExChuModel1.getProdDoctor())) { Users users = usersService.getUsers(Integer.valueOf(antExChuModel1.getProdDoctor())); if (null != users) { @@ -393,7 +443,6 @@ public class SyncDataWork { stopWatch3.start("updatePatients"); patientsService.updatePatients(p); stopWatch3.stop(); - logger.info(stopWatch3.toString()); DoctorUsersPatientsMaps reportdoctorUsersPatientsMaps = new DoctorUsersPatientsMaps(); @@ -402,22 +451,110 @@ public class SyncDataWork { //门诊患者 reportdoctorUsersPatientsMaps.setGroupId(4); - if(null!=patients.getRiskScore() &&patients.getRiskScore()>0){ - doctorUsersPatientsMaps.setGroupId(2); + if (null != patients.getRiskScore() && patients.getRiskScore() > 0) { + reportdoctorUsersPatientsMaps.setGroupId(2); } + reportdoctorUsersPatientsMaps.setPatientId(mamiPatient.getId()); //设置为待处理 reportdoctorUsersPatientsMaps.setStatus(1); reportdoctorUsersPatientsMaps.setStatusName("待处理"); - if (StringUtils.isNotEmpty(patients.getBookbuildingDoctor())) { - doctorUsersPatientsMaps.setDoctorUserId(userMapping.get(Integer.valueOf(antExChuModel1.getProdDoctor()))); + if (StringUtils.isNotEmpty(antExChuModel1.getProdDoctor())) { + reportdoctorUsersPatientsMaps.setDoctorUserId(userMapping.get(Integer.valueOf(antExChuModel1.getProdDoctor()))); stopWatch3.start("report aouDoctorUsersPatientsMaps"); doctorUsersPatientsMapsService.aouDoctorUsersPatientsMaps(reportdoctorUsersPatientsMaps); stopWatch3.stop(); } + + if (null != reports.getNextCheckTime()) { + com.lymsh.mommybaby.maindata.model.Patients patients1 = new com.lymsh.mommybaby.maindata.model.Patients(); + patients1.setId(mamiPatient.getId()); + patients1.setNextCheckTime(reports.getNextCheckTime()); + patientsService.updatePatients(patients1); + } + } + AntExQuery antExQuery = new AntExQuery(); + antExQuery.setYn(YnEnums.YES.getId()); + antExQuery.setParentId(patients.getId()); + if (-1 != lastSyncTime) { + antExQuery.setGteModified(new Date(lastSyncTime)); + antExQuery.setGteCreated(new Date(lastSyncTime)); + } + //复诊 + List antList = antenatalExaminationService.queryAntenatalExamination(antExQuery.convertToQuery()); + doctorUserName = null; + if (CollectionUtils.isNotEmpty(antList)) { + for (AntenatalExaminationModel ant : antList) { + + Integer doctorUserId = userMapping.get(Integer.valueOf(ant.getCheckDoctor())); + if (null != doctorUserId) { + DoctorUsers doctorUsers1 = doctorUsersService.getDoctorUsers(doctorUserId); + if (null != doctorUsers1) { + doctorUserName = doctorUsers1.getUsername(); + } + } + + + Reports reports = ConvertHelper.convertAntExChu(ant, patients.getLastMenses(), bgHighRisk, doctorUserName); + + if (NumberUtils.isNumber(ant.getCheckDoctor())) { + Users users = usersService.getUsers(Integer.valueOf(ant.getCheckDoctor())); + if (null != users) { + reports.setDoctorName(users.getName()); + } + } + reports.setPatientId(mamiPatient.getId()); + reports.setAge(patients.getAge()); + reports.setRealName(patients.getUsername()); + if (StringUtils.isNotEmpty(patients.getHospitalId())) { + Organization organization = organizationService.getOrganization(NumberUtils.toInt(patients.getHospitalId())); + if (null != organization) { + reports.setHospitalName(organization.getName()); + } + } + stopWatch3.start("aouReports"); + reportsService.aouReports(reports); + stopWatch3.stop(); + com.lymsh.mommybaby.maindata.model.Patients p = new com.lymsh.mommybaby.maindata.model.Patients(); + p.setLastReportId(reports.getId()); + p.setLastReportDoctorName(reports.getDoctorName()); + p.setId(mamiPatient.getId()); + stopWatch3.start("updatePatients"); + patientsService.updatePatients(p); + stopWatch3.stop(); + + + DoctorUsersPatientsMaps reportdoctorUsersPatientsMaps = new DoctorUsersPatientsMaps(); + reportdoctorUsersPatientsMaps.setCreated(new Date()); + reportdoctorUsersPatientsMaps.setYn(YnEnums.YES.getId()); + + //门诊患者 + reportdoctorUsersPatientsMaps.setGroupId(4); + if (null != patients.getRiskScore() && patients.getRiskScore() > 0) { + reportdoctorUsersPatientsMaps.setGroupId(2); + } + reportdoctorUsersPatientsMaps.setPatientId(mamiPatient.getId()); + //设置为待处理 + reportdoctorUsersPatientsMaps.setStatus(1); + reportdoctorUsersPatientsMaps.setStatusName("待处理"); + if (StringUtils.isNotEmpty(ant.getCheckDoctor())) { + reportdoctorUsersPatientsMaps.setDoctorUserId(userMapping.get(Integer.valueOf(ant.getCheckDoctor()))); + stopWatch3.start("report antchu aouDoctorUsersPatientsMaps"); + doctorUsersPatientsMapsService.aouDoctorUsersPatientsMaps(reportdoctorUsersPatientsMaps); + stopWatch3.stop(); + } + + if (null != reports.getNextCheckTime()) { + com.lymsh.mommybaby.maindata.model.Patients patients1 = new com.lymsh.mommybaby.maindata.model.Patients(); + patients1.setId(mamiPatient.getId()); + patients1.setNextCheckTime(reports.getNextCheckTime()); + patientsService.updatePatients(patients1); + } + } } + logger.info(stopWatch3.toString()); } } - logger.info("hospital "+hospitalId+",costTime:"+(System.currentTimeMillis()-l)); + logger.info("hospital " + hospitalId + ",costTime:" + (System.currentTimeMillis() - l)); } catch (Exception e) { e.printStackTrace(); } finally { @@ -425,9 +562,10 @@ public class SyncDataWork { } } } - private void bandingMember(com.lymsh.mommybaby.maindata.model.Patients patients){ + + private void bandingMember(com.lymsh.mommybaby.maindata.model.Patients patients) { MembersQuery membersQuery = new MembersQuery(); - if(StringUtils.isEmpty(patients.getPhone())){ + if (StringUtils.isEmpty(patients.getPhone())) { return; } membersQuery.setPhone(patients.getPhone()); @@ -438,13 +576,13 @@ public class SyncDataWork { membersQuery.setPatientId(patients.getId()); membersQuery.setYn(YnEnum.yes.getId()); List membersList1 = membersService.queryMembers(membersQuery); - for (Members members:membersList1) { + for (Members members : membersList1) { Members m = new Members(); m.setId(members.getId()); m.setYn(YnEnum.no.getId()); membersService.updateMembers(m); } - for (Members members:membersList) { + for (Members members : membersList) { Members temp = new Members(); temp.setId(members.getId()); temp.setPatientId(patients.getId()); @@ -452,7 +590,7 @@ public class SyncDataWork { temp.setLastMenses(patients.getLastMenses()); temp.setDueDate(patients.getDueDate()); //member status 为2时不需要修改 - if(null==members.getStatus()||2!=members.getStatus() ){ + if (null == members.getStatus() || 2 != members.getStatus()) { temp.setStatus(patients.getType()); } diff --git a/platform-job-index/src/main/java/com/lyms/platform/job/index/web/controller/SyncDataController.java b/platform-job-index/src/main/java/com/lyms/platform/job/index/web/controller/SyncDataController.java index fddfe0e..2a74ccb 100644 --- a/platform-job-index/src/main/java/com/lyms/platform/job/index/web/controller/SyncDataController.java +++ b/platform-job-index/src/main/java/com/lyms/platform/job/index/web/controller/SyncDataController.java @@ -23,8 +23,8 @@ public class SyncDataController { @Qualifier("job-index-syncdataservice") private SyncDataService syncDataService; - @Autowired - private SyncDataWork syncDataWork; +/* @Autowired + private SyncDataWork syncDataWork;*/ /** * 孕妇同步 @@ -52,7 +52,7 @@ public class SyncDataController { @ResponseBody public String syncDataToMami() { try { - syncDataWork.sync(); +// syncDataWork.sync(); } catch (Exception e) { ExceptionUtils.catchException(e, "syncDataToMami error"); } diff --git a/platform-job-index/src/main/resources/lable.properties b/platform-job-index/src/main/resources/lable.properties index 234d883..751c283 100644 --- a/platform-job-index/src/main/resources/lable.properties +++ b/platform-job-index/src/main/resources/lable.properties @@ -1,6 +1,8 @@ dueDate=预产期 +prodDoctor=产检医生 lastMenses=末次月经 cDueWeek=当前孕周 +dirOpinion=指导意见 pastHistory=既往史 familyHistory=家族史 personalHistory=个人史 @@ -23,6 +25,7 @@ yqWeight=孕前体重 baricIndex=体重指数 cestationInfo=本次妊娠情况 gonggao=宫高 +gongGao=宫高 fuwei=腹围 tireNumber1=胎数 heart=心脏 @@ -32,4 +35,17 @@ vagina=阴道 cervical=宫颈 uterus=子宫 fujian=附件 -bp=血压 \ No newline at end of file +bp=血压 +chiefComplaint=主诉 +abdominalCircumference=腹围 +edema=浮肿 +tireNumber=胎数 +hemoglobin=血红蛋白 +urineProtein=尿蛋白 +bChao=B超 +bloodSugar=血糖 +treatmentOpinion=处理意见 +guide=指导 +checkDoctor=产检医生 +highrisk=高危因素 +riskFactor=高危因素 \ No newline at end of file