From 34060a2b55e819fd89bd8f5fb181a2e1d33effaf Mon Sep 17 00:00:00 2001 From: jiangjiazhi Date: Thu, 27 Oct 2016 16:08:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BD=AC=E8=AF=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../job/index/restore/data/ConvertHelper.java | 60 ++- .../job/index/restore/data/HighScoreResult.java | 176 +++++++ .../platform/job/index/restore/data/Runner.java | 19 +- .../job/index/restore/data/SyncDataWork.java | 540 +++++++++++++++++---- 4 files changed, 684 insertions(+), 111 deletions(-) create mode 100644 platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/HighScoreResult.java 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 d80ded3..14dd4f4 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 @@ -6,9 +6,7 @@ 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.lyms.platform.pojo.*; import com.lymsh.mommybaby.maindata.model.DoctorUsers; import com.lymsh.mommybaby.maindata.model.Hospitals; import com.lymsh.mommybaby.maindata.model.Reports; @@ -97,7 +95,32 @@ public class ConvertHelper { e.printStackTrace(); } } + public static com.lymsh.mommybaby.maindata.model.Patients convertToMamiBaby(BabyModel babyModel) { + com.lymsh.mommybaby.maindata.model.Patients patients = new com.lymsh.mommybaby.maindata.model.Patients(); + //新生儿类型为2 + patients.setType(2); + patients.setForeignId(babyModel.getId()); + patients.setGender(babyModel.getSex()); + patients.setCreated(babyModel.getCreated()); + patients.setModified(babyModel.getModified()); + patients.setYn(babyModel.getYn()); + patients.setBirth(babyModel.getBirth()); + patients.setDueDate(babyModel.getDueDate()); + patients.setAge(DateUtil.getAge(babyModel.getBirth())); + patients.setPublishId(0); + patients.setPublishName(AUTO_WORKER); + patients.setServiceType(babyModel.getServiceType()); + patients.setUsername(babyModel.getName()); + return patients; + } + public static Reports convertToBabyCheck(BabyCheckModel babyCheckModel,BabyModel babyModel) { + Reports reports = new Reports(); + reports.setYn(babyCheckModel.getYn()); + reports.setType(2); + reports.setAge(DateUtil.getAge(babyModel.getBirth())); + return reports; + } /** * mongo的建档信息转换成mysql的患者信息 * @@ -120,7 +143,7 @@ public class ConvertHelper { localPatient.setVip(patients.getVip()); localPatient.setCrisis(0); //孕妇 - localPatient.setType(1); + localPatient.setType(patients.getType()); localPatient.setPublishId(0); localPatient.setPublishName(AUTO_WORKER); return localPatient; @@ -198,13 +221,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()); - } else { - dueWeek = DateUtil.getWeek(lastMenses, antExChuModel.getCheckTime()); - } - reports.setWeeks(dueWeek); + reports.setWeeks(DateUtil.getWeek(lastMenses, antExChuModel.getCheckTime())); reports.setResult(convertAntExChuResult(antExChuModel, map, doctorUserName)); return reports; @@ -231,13 +248,8 @@ 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()); - } else { - dueWeek = DateUtil.getWeek(lastMenses, antExChuModel.getCheckDate()); - } - reports.setWeeks(dueWeek); + + reports.setWeeks(DateUtil.getWeek(lastMenses, antExChuModel.getCheckDate())); reports.setResult(convertAntExResult(antExChuModel,rhMap,doctorUserName)); return reports; } @@ -274,12 +286,12 @@ public class ConvertHelper { //高压 if (StringUtils.isNotEmpty(szy)) { java.util.Map dataMap1 = new HashMap<>(); - dataMap1.put("k", "血压(低压)"); + dataMap1.put("k", "血压低压"); dataMap1.put("v", szy+"mmHg"); list.add(dataMap1); } if (StringUtils.isNotEmpty(ssy)) { - dataMap.put("k", "高压"); + dataMap.put("k", "血压(高)"); dataMap.put("v", ssy+"mmHg"); list.add(dataMap); } @@ -363,15 +375,15 @@ public class ConvertHelper { if(null!=obj1){ szy= map.get("szy").toString(); } - if (StringUtils.isNotEmpty(ssy)) { + if (StringUtils.isNotEmpty(szy)) { java.util.Map dataMap1 = new HashMap<>(); dataMap1.put("k", "血压(低压)"); - dataMap1.put("v", ssy +"mmHg"); + dataMap1.put("v", szy +"mmHg"); list.add(dataMap1); } - if (StringUtils.isNotEmpty(szy)) { + if (StringUtils.isNotEmpty(ssy)) { dataMap.put("k", "高压"); - dataMap.put("v", szy+ "mmHg"); + dataMap.put("v", ssy+ "mmHg"); list.add(dataMap); } } diff --git a/platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/HighScoreResult.java b/platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/HighScoreResult.java new file mode 100644 index 0000000..6b9b67e --- /dev/null +++ b/platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/HighScoreResult.java @@ -0,0 +1,176 @@ +package com.lyms.platform.job.index.restore.data; + +import com.lyms.platform.common.utils.StringUtils; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * Created by Administrator on 2016/8/2 0002. + */ +public class HighScoreResult { + + //高危因素 + private List highRisk = new ArrayList(); + //风险等级颜色 + private List level = new ArrayList(); + //高危评分 + private Integer score = 0; + + public List getHighRisk() { + return highRisk; + } + + public List getLevel() { + return /*filter(*/level/*)*/; + } + + public static List filter(List level){ + List list = new ArrayList(); + List addEdList = new ArrayList(); + for(java.util.Map map :level){ + if(!addEdList.contains(map.get("name"))){ + list.add(map); + addEdList.add(map.get("name")); + } + } + return list; + } + + public void setLevel(List level) { + this.level = level; + } + + public void setHighRisk(List highRisk) { + this.highRisk = highRisk; + } + + public Integer getScore() { + if (null == score) { + return 0; + } + return score; + } + + + public String getScoreStr(){ + if(null==score || 0==score){ + return ""; + } + return score+""; + } + + public List getLevelId() { + if (null == level) { + return Collections.emptyList(); + } + List idList = new ArrayList<>(); + for (int i1 = 0; i1 < level.size(); i1++) { + java.util.Map map = (java.util.Map) level.get(i1); + String name = map.get("id"); + if (StringUtils.isNotEmpty(name)) { + idList.add(name); + } + } + return idList; + } + + public List getHighId() { + if (null == highRisk) { + return Collections.emptyList(); + } + List idList = new ArrayList<>(); + for (int i1 = 0; i1 < highRisk.size(); i1++) { + java.util.Map map = (java.util.Map) highRisk.get(i1); + String id = map.get("id"); + if (StringUtils.isNotEmpty(id)) { + idList.add(id); + } + } + return idList; + } + + public String getOtherHigh(){ + if (null == highRisk) { + return ""; + } + StringBuilder stringBuilder=new StringBuilder(); + for (int i1 = 0; i1 < highRisk.size(); i1++) { + java.util.Map map = (java.util.Map) highRisk.get(i1); + String id = map.get("id"); + if (StringUtils.isEmpty(id)) { + stringBuilder.append(map.get("name")).append(","); + } + } + if(stringBuilder.length()>0){ + stringBuilder.setLength(stringBuilder.length()-1); + } + return stringBuilder.toString(); + } + + public void setScore(Integer score) { + this.score = score; + } + + public String getLevelStr() { + StringBuilder stringBuilder = new StringBuilder(); + if (null == level) { + return ""; + } + for (int i1 = 0; i1 < level.size(); i1++) { + java.util.Map map = (java.util.Map) level.get(i1); + String name = map.get("name"); + if (stringBuilder.indexOf(name) == -1) { + stringBuilder.append(map.get("name")).append(", "); + } + } + if (stringBuilder.length() >= 2) { + stringBuilder.setLength(stringBuilder.length() - 2); + } + return stringBuilder.toString(); + } + + public String getLevelStr(List levelList) { + StringBuilder stringBuilder = new StringBuilder(); + if (null == levelList) { + return ""; + } + for (int i1 = 0; i1 < levelList.size(); i1++) { + java.util.Map map = (java.util.Map) levelList.get(i1); + String name = map.get("name"); + if (stringBuilder.indexOf(name) == -1) { + stringBuilder.append(map.get("name")).append(", "); + } + } + if (stringBuilder.length() >= 2) { + stringBuilder.setLength(stringBuilder.length() - 2); + } + return stringBuilder.toString(); + } + public String gethighRiskStr() { + StringBuilder stringBuilder = new StringBuilder(); + if (null == highRisk) { + return ""; + } + for (int i1 = 0; i1 < highRisk.size(); i1++) { + java.util.Map map = (java.util.Map) highRisk.get(i1); + stringBuilder.append(map.get("name")).append(", "); + } + if (stringBuilder.length() >= 2) { + stringBuilder.setLength(stringBuilder.length() - 2); + } + return stringBuilder.toString(); + } + public List gethighRiskList(){ + List list=new ArrayList<>(); + if (null == highRisk) { + return list; + } + for (int i1 = 0; i1 < highRisk.size(); i1++) { + java.util.Map map = (java.util.Map) highRisk.get(i1); + list.add(map.get("name")); + } + return list; + } +} diff --git a/platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/Runner.java b/platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/Runner.java index 873d0dd..fa2fa74 100644 --- a/platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/Runner.java +++ b/platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/Runner.java @@ -1,17 +1,32 @@ package com.lyms.platform.job.index.restore.data; +import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.query.PatientsQuery; import org.apache.log4j.PropertyConfigurator; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; +import java.util.Date; + /** * Created by Administrator on 2016/9/29 0029. */ public class Runner { public static void main(String[] args)throws Exception{ - PropertyConfigurator.configure("D:\\git resouce\\regional-platform\\platform-job-index\\target\\classes\\log4j_config.xml"); + /* PropertyConfigurator.configure("D:\\git resouce\\regional-platform\\platform-job-index\\target\\classes\\log4j_config.xml"); ApplicationContext applicationContext=new ClassPathXmlApplicationContext("classpath:/spring/applicationContext-sync-data.xml"); SyncDataWork syncDataWork = applicationContext.getBean(SyncDataWork.class); - syncDataWork.sync(); + syncDataWork.sync();*/ + + long lastSyncTime=System.currentTimeMillis(); + PatientsQuery patientsQuery1 = new PatientsQuery(); + patientsQuery1.setYn(YnEnums.YES.getId()); +// patientsQuery1.setHospitalId(hospitalId); + if (-1 != lastSyncTime) { + patientsQuery1.setGteModified(new Date(lastSyncTime)); + patientsQuery1.setGteCreated(new Date(lastSyncTime)); + } + patientsQuery1.setCreated(new Date()); + System.out.println(patientsQuery1.convertToQuery().convertToMongoQuery());; } } 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 50a8df4..b565762 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 @@ -1,44 +1,37 @@ package com.lyms.platform.job.index.restore.data; -import com.lyms.platform.biz.service.AntenatalExaminationService; -import com.lyms.platform.biz.service.BasicConfigService; -import com.lyms.platform.biz.service.YunBookbuildingService; +import com.lyms.platform.biz.service.*; +import com.lyms.platform.common.enums.RiskDefaultTypeEnum; import com.lyms.platform.common.enums.YnEnums; import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.JsonUtil; 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.pojo.*; +import com.lyms.platform.query.*; import com.lyms.platform.query.PatientsQuery; +import com.lymsh.mommybaby.maindata.enumdata.RiskColorEnum; import com.lymsh.mommybaby.maindata.enumdata.YnEnum; import com.lymsh.mommybaby.maindata.model.*; +import com.lymsh.mommybaby.maindata.model.Patients; import com.lymsh.mommybaby.maindata.service.*; +import com.lymsh.mommybaby.maindata.service.PatientsService; import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.io.FileUtils; 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; import org.springframework.util.StopWatch; - import java.io.File; import java.io.RandomAccessFile; -import java.util.Date; -import java.util.HashMap; -import java.util.List; +import java.util.*; import java.util.concurrent.CountDownLatch; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; @@ -54,6 +47,7 @@ public class SyncDataWork { private Logger logger = LoggerFactory.getLogger("sync-data"); + private Logger ERROR_LOGGER = LoggerFactory.getLogger("COMMON-ERROR"); @Autowired private OrganizationService organizationService; @@ -98,6 +92,14 @@ public class SyncDataWork { private DoctorUsersPatientsMapsService doctorUsersPatientsMapsService; @Autowired private MembersService membersService; + @Autowired + private RiskDetailsService riskDetailsService; + @Autowired + private RisksService risksService; + @Autowired + private BabyCheckService babyCheckService; + @Autowired + private BabyService babyService; @Value("#{configProperties['file.path']}") private String FILE_PATH; @@ -111,12 +113,21 @@ public class SyncDataWork { private java.util.Map mamiRegions = new HashMap<>(); //高危因素 private java.util.Map bgHighRisk = new HashMap<>(); - + private static Map map = new HashMap<>(); /** * mongo 里面省市区的id */ public static final String CHINA_BASIC_ID = "f6c505dd-835a-43d7-b0bb-fdb9eb0b7b31"; + + static { + map.put("橙色", RiskColorEnum.Orange); + map.put("黄色", RiskColorEnum.Yellow); + map.put("红色", RiskColorEnum.Red); + map.put("紫色", RiskColorEnum.Purple); + map.put("绿色", RiskColorEnum.Green); + } + private long readLastSyncTime() { try { if (-1 != lastSyncTime) { @@ -221,6 +232,35 @@ public class SyncDataWork { return hospitals; } + private void loadRpBaby(String hospitalId) { + BabyModelQuery babyModelQuery = new BabyModelQuery(); + babyModelQuery.setHospitalId(hospitalId); + babyModelQuery.setYn(YnEnums.YES.getId()); + if (-1 != lastSyncTime) { + babyModelQuery.setGteModified(new Date(lastSyncTime)); + babyModelQuery.setGteCreated(new Date(lastSyncTime)); + } + List babyModels= babyService.queryBabyWithQuery(babyModelQuery); + if(CollectionUtils.isNotEmpty(babyModels)){ + for(BabyModel babyModel:babyModels){ + Patients patients= ConvertHelper.convertToMamiBaby(babyModel); + patientsService.aouPatients(patients); + + BabyCheckModelQuery babyCheckModelQuery=new BabyCheckModelQuery(); + babyCheckModelQuery.setYn(YnEnums.YES.getId()); + babyCheckModelQuery.setBuildId(babyModel.getId()); + babyCheckModelQuery.setHospitalId(hospitalId); + List babyCheckModels= babyCheckService.queryBabyCheckRecord(babyCheckModelQuery); + if(CollectionUtils.isNotEmpty(babyCheckModels)){ + for(BabyCheckModel babyCheckModel:babyCheckModels){ + Reports reports= ConvertHelper.convertToBabyCheck(babyCheckModel, babyModel); + reportsService.aouReports(reports); + } + } + } + } + } + public void sync() throws InterruptedException { long l = System.currentTimeMillis(); //获取最后一次同步的时间 如果为-1就表示是全量同步 @@ -236,7 +276,6 @@ public class SyncDataWork { //查询符合条件的机构 List organizationList = organizationService.queryOrganization(organizationQuery); CountDownLatch countDownLatch = null; - ; if (CollectionUtils.isNotEmpty(organizationList)) { Hospitals hospitals = null; countDownLatch = new CountDownLatch(organizationList.size()); @@ -263,14 +302,33 @@ public class SyncDataWork { countDownLatch.await(); //持久化最后一次同步时间 writeLastSyncTime(); - clearAll(); +// clearAll(); + //单独同步秦皇岛 + syncQHDWork(); logger.info("sync end costTime:" + (System.currentTimeMillis() - l) + " ms."); } - private void clearAll(){ + + private void clearAll() { orgMapToId.clear(); mamiRegions.clear(); bgHighRisk.clear(); } + + private void syncQHDWork() { + Timer timer = new Timer(); + timer.schedule(new TimerTask() { + @Override + public void run() { + logger.info("syncQHDWork start ." + DateUtil.getymdhm(new Date())); + CountDownLatch countDownLatch = new CountDownLatch(1); + String hospitalId = "216"; + new SyncWork(hospitalId, countDownLatch).start(); + logger.info("syncQHDWork end ." + DateUtil.getymdhm(new Date())); + } + }, 600000, 300000); + } + + /** * 执行同步的工作线程 */ @@ -287,60 +345,67 @@ public class SyncDataWork { this.countDownLatch = countDownLatch; } + /** + * 查询医院下的用户 + * + * @return + */ + private List queryUser() { + StopWatch stopWatch = new StopWatch("SyncWork-" + hospitalId); + //查询出该医院所以的医生用户 + UsersQuery usersQuery = new UsersQuery(); + usersQuery.setYn(YnEnums.YES.getId()); + usersQuery.setOrgId(Integer.valueOf(hospitalId)); + /* if (-1 != lastSyncTime) { + usersQuery.setGteModified(new Date(lastSyncTime)); + usersQuery.setGteCreated(new Date(lastSyncTime)); + }*/ + stopWatch.start("queryUsers"); + List userses = usersService.queryUsers(usersQuery); + stopWatch.stop(); + logger.info(stopWatch.toString()); + return userses; + } + + private void loadDoctorUsers() { + List userses = queryUser(); + DoctorUsers doctorUsers = null; + if (CollectionUtils.isNotEmpty(userses)) { + for (Users users : userses) { + DoctorUsersQuery doctorUsersQuery = new DoctorUsersQuery(); + doctorUsersQuery.setYn(YnEnums.YES.getId()); + doctorUsersQuery.setHospitalId(orgMapToId.get(hospitalId)); + doctorUsersQuery.setUsername(users.getName()); + 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); + } else { + //医生用户转换 + doctorUsers = ConvertHelper.convertUsers(users); + doctorUsers.setHospitalId(orgMapToId.get(hospitalId)); + stopWatch1.start("addDoctorUsers"); + doctorUsersService.addDoctorUsers(doctorUsers); + stopWatch1.stop(); + } + if (null != doctorUsers) { + userMapping.put(users.getId(), doctorUsers.getId()); + } + logger.info(stopWatch1.toString()); + } + logger.info("hospitalId" + hospitalId + ",userMapping :" + userMapping); + } + } + @Override public void run() { try { 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); - //查询出该医院所以的医生用户 - UsersQuery usersQuery = new UsersQuery(); - usersQuery.setYn(YnEnums.YES.getId()); - usersQuery.setOrgId(Integer.valueOf(hospitalId)); - if (-1 != lastSyncTime) { - usersQuery.setGteModified(new Date(lastSyncTime)); - usersQuery.setGteCreated(new Date(lastSyncTime)); - } - stopWatch.start("queryUsers"); - List userses = usersService.queryUsers(usersQuery); - stopWatch.stop(); - logger.info(stopWatch.toString()); - DoctorUsers doctorUsers = null; - - if (CollectionUtils.isNotEmpty(userses)) { - for (Users users : userses) { - DoctorUsersQuery doctorUsersQuery = new DoctorUsersQuery(); -// doctorUsersQuery.setForeignId(users.getId() + ""); - doctorUsersQuery.setYn(YnEnums.YES.getId()); - doctorUsersQuery.setHospitalId(orgMapToId.get(hospitalId)); - doctorUsersQuery.setUsername(users.getName()); - 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 = ConvertHelper.convertUsers(users); - doctorUsers.setHospitalId(orgMapToId.get(hospitalId)); - stopWatch1.start("updateDoctorUsers"); - doctorUsersService.updateDoctorUsers(doctorUsers); - stopWatch1.stop();*/ - } else { - //医生用户转换 - doctorUsers = ConvertHelper.convertUsers(users); - doctorUsers.setHospitalId(orgMapToId.get(hospitalId)); - stopWatch1.start("addDoctorUsers"); - doctorUsersService.addDoctorUsers(doctorUsers); - stopWatch1.stop(); - } + logger.info("begin sync work hospital:" + hospitalId + ",at time " + DateUtil.getyyyy_MM_dd_hms(new Date())); - if (null != doctorUsers) { - userMapping.put(users.getId(), doctorUsers.getId()); - } - logger.info(stopWatch1.toString()); - } - logger.info("hospitalId" + hospitalId + ",userMapping :" + userMapping); - } + loadDoctorUsers(); PatientsQuery patientsQuery1 = new PatientsQuery(); patientsQuery1.setYn(YnEnums.YES.getId()); @@ -351,14 +416,23 @@ public class SyncDataWork { } StopWatch stopWatch2 = new StopWatch("SyncWork-" + hospitalId + "-query patient"); stopWatch2.start("queryPregnantWithQuery"); - List patientses = yunBookbuildingService.queryPregnantWithQuery(patientsQuery1); + 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)) { - for (Patients patients : patientses) { + for (com.lyms.platform.pojo.Patients patients : patientses) { StopWatch stopWatch3 = new StopWatch("SyncWork-" + hospitalId + "-patient-" + patients.getId()); com.lymsh.mommybaby.maindata.model.Patients mamiPatient = ConvertHelper.convertPatient(patients); + if (StringUtils.isNotEmpty(mamiPatient.getPhone())) { + MembersQuery membersQuery = new MembersQuery(); + membersQuery.setPhone(mamiPatient.getPhone()); + List memberses = membersService.queryMembers(membersQuery); + if (CollectionUtils.isNotEmpty(memberses)) { + mamiPatient.setMemberId(memberses.get(0).getId()); + } + } + stopWatch3.start("aouPatients"); //增加建档记录 patientsService.aouPatients(mamiPatient); @@ -366,14 +440,6 @@ public class SyncDataWork { //绑定用户 bandingMember(mamiPatient); - AntExChuQuery antExChuQuery = new AntExChuQuery(); - antExChuQuery.setYn(YnEnums.YES.getId()); - antExChuQuery.setParentId(patients.getId()); - if (-1 != lastSyncTime) { - antExChuQuery.setGteModified(new Date(lastSyncTime)); - antExChuQuery.setGteCreated(new Date(lastSyncTime)); - } - DoctorUsersPatientsMaps doctorUsersPatientsMaps = new DoctorUsersPatientsMaps(); doctorUsersPatientsMaps.setCreated(new Date()); doctorUsersPatientsMaps.setYn(YnEnums.YES.getId()); @@ -392,7 +458,6 @@ public class SyncDataWork { doctorUsersPatientsMaps.setStatus(1); doctorUsersPatientsMaps.setStatusName("待处理"); - doctorUsersPatientsMaps.setPatientId(mamiPatient.getId()); if (StringUtils.isNotEmpty(patients.getBookbuildingDoctor())) { doctorUsersPatientsMaps.setDoctorUserId(userMapping.get(Integer.valueOf(patients.getBookbuildingDoctor()))); @@ -401,13 +466,21 @@ public class SyncDataWork { stopWatch3.stop(); } + AntExChuQuery antExChuQuery = new AntExChuQuery(); + antExChuQuery.setYn(YnEnums.YES.getId()); + antExChuQuery.setParentId(patients.getId()); + if (-1 != lastSyncTime) { + antExChuQuery.setGteModified(new Date(lastSyncTime)); + antExChuQuery.setGteCreated(new Date(lastSyncTime)); + } List antExChuModel = antenatalExaminationService.queryAntExChu(antExChuQuery); if (CollectionUtils.isEmpty(antExChuModel)) { continue; } + + handLastRisk(patients, mamiPatient.getId()); String doctorUserName = null; for (AntExChuModel antExChuModel1 : antExChuModel) { - Integer doctorUserId = userMapping.get(Integer.valueOf(antExChuModel1.getProdDoctor())); if (null != doctorUserId) { DoctorUsers doctorUsers1 = doctorUsersService.getDoctorUsers(doctorUserId); @@ -415,7 +488,9 @@ public class SyncDataWork { doctorUserName = doctorUsers1.getUsername(); } } - + /* stopWatch3.start("handlRiskChu"); + handlRiskChu(antExChuModel1, mamiPatient.getId()); + stopWatch3.stop();*/ Reports reports = ConvertHelper.convertAntExChu(antExChuModel1, patients.getLastMenses(), bgHighRisk, doctorUserName); if (NumberUtils.isNumber(antExChuModel1.getProdDoctor())) { @@ -436,6 +511,8 @@ public class SyncDataWork { 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()); @@ -492,8 +569,9 @@ public class SyncDataWork { doctorUserName = doctorUsers1.getUsername(); } } - - + /* stopWatch3.start("handRiskFu"); + handRiskFu(ant, mamiPatient.getId()); + stopWatch3.stop();*/ Reports reports = ConvertHelper.convertAntExChu(ant, patients.getLastMenses(), bgHighRisk, doctorUserName); if (NumberUtils.isNumber(ant.getCheckDoctor())) { @@ -556,13 +634,305 @@ public class SyncDataWork { } logger.info("hospital " + hospitalId + ",costTime:" + (System.currentTimeMillis() - l)); } catch (Exception e) { - e.printStackTrace(); + ERROR_LOGGER.error("sync worker error.hospitalId:" + hospitalId, e); } finally { countDownLatch.countDown(); } } } + private void handRiskFu(AntenatalExaminationModel antEx, Integer patientId) { + Risks risks = new Risks(); + risks.setCreated(antEx.getCreated()); + risks.setYn(YnEnums.YES.getId()); + risks.setModified(antEx.getModified()); + + risks.setPatientId(patientId); + List list2 = JsonUtil.toList(antEx.getRiskFactor(), List.class); + HighScoreResult highScoreResult = queryRisk(list2, patientId); + + if (null != antEx && !"{}".equals(antEx.getOtherRisk())) { + Map map = JsonUtil.str2Obj(antEx.getOtherRisk(), Map.class); + //风险因素 + Map map1 = new HashMap(); + map1.put("id", ""); + Object obj = map.get("fxysu"); + if (null != obj && !"null".equals(obj.toString()) && !"".equals(obj.toString())) { + map1.put("name", map.get("fxysu")); + highScoreResult.getHighRisk().add(map1); + } + RiskDetails riskDetails = new RiskDetails(); + //风险评分 + Object idObj = map.get("fxpf"); + if (null != idObj && !"null".equals(idObj.toString()) && !"".equals(idObj.toString())) { + BasicConfig basicConfig = basicConfigService.getOneBasicConfigById(idObj.toString()); + riskDetails.setScore(NumberUtils.toInt(basicConfig.getName())); + highScoreResult.setScore(highScoreResult.getScore() + NumberUtils.toInt(basicConfig.getName(), 0)); + } + Object idObj1 = map.get("fyyse"); + if (null != idObj1 && !"null".equals(idObj1.toString()) && !"".equals(idObj1.toString())) { + BasicConfig basicConfig = basicConfigService.getOneBasicConfigById(idObj1.toString()); + if (null != basicConfig) { + Map map2 = new HashMap<>(); + map2.put("id", basicConfig.getId()); + String name = basicConfig.getName(); + if (name.indexOf("预警") > -1) { + name = name.replace("预警", ""); + } + map2.put("name", name); + RiskColorEnum riskColorEnum = SyncDataWork.map.get(name); + riskDetails.setCrisis(riskColorEnum == null ? null : riskColorEnum.getId()); + map2.put("color", "risk_" + RiskDefaultTypeEnum.getColor(name)); + highScoreResult.getLevel().add(map2); + } + } + Object obj1 = map1.get("name"); + if (null != obj1) { + riskDetails.setTitle(map1.get("name").toString()); + riskDetails.setPublishName("system-worker"); + riskDetails.setPublishId(0); + riskDetails.setYn(YnEnums.YES.getId()); + riskDetails.setCreated(new Date()); + riskDetails.setModified(new Date()); + riskDetails.setPatientId(patientId); + if (StringUtils.isNotEmpty(riskDetails.getTitle())) { + riskDetailsService.addRiskDetails(riskDetails); + } + } + } + String srt = highScoreResult.gethighRiskStr(); + risks.setTitle(srt); + risks.setReason(srt); + Integer crisis = null; + if (CollectionUtils.isNotEmpty(highScoreResult.getLevel())) { + crisis = 0; + for (Object map1 : highScoreResult.getLevel()) { + Map tmp = (Map) map1; + String name = tmp.get("name") == null ? null : (String) tmp.get("name"); + if (null != name) { + RiskColorEnum colorEnum = map.get(name); + crisis = crisis & colorEnum.getId(); + } + } + } + if (StringUtils.isNotEmpty(risks.getTitle())) { + risks.setCrisis(crisis); + risks.setPublishId(0); + risks.setPublishName("system-worker"); + risksService.addRisks(risks); + } + } + + private void handLastRisk(com.lyms.platform.pojo.Patients patients, Integer patientId) { + risksService.deleteRisk(patientId); + riskDetailsService.deleteRiskDetails(patientId); + StringBuilder sb = new StringBuilder(); + List data = new ArrayList<>(); + try { + int score = 0; + RiskColorEnum riskColorEnum = null; + if (CollectionUtils.isNotEmpty(patients.getRiskFactorId())) { + for (String id : patients.getRiskFactorId()) { + BasicConfig basicConfig = basicConfigService.getOneBasicConfigById(id); + if (null != basicConfig) { + RiskDetails riskDetails = new RiskDetails(); + if (StringUtils.isNotEmpty(basicConfig.getCode())) { + score += NumberUtils.toInt(basicConfig.getCode(), 0); + riskDetails.setScore(NumberUtils.toInt(basicConfig.getCode())); + } + BasicConfig basicConfig1 = basicConfigService.getOneBasicConfigById(basicConfig.getParentId()); + sb.append(basicConfig.getName()).append('、'); + String name = basicConfig1.getName(); + if (name.indexOf("预警") > -1) { + name = name.replace("预警", ""); + } + riskColorEnum = SyncDataWork.map.get(name); + if (null != riskColorEnum) { + data.add(riskColorEnum); + } + riskDetails.setCreated(new Date()); + riskDetails.setYn(YnEnums.YES.getId()); + riskDetails.setModified(new Date()); + riskDetails.setPatientId(patientId); + riskDetails.setTitle(basicConfig.getName()); + riskDetails.setCrisis(riskColorEnum == null ? null : riskColorEnum.getId()); + riskDetails.setPublishId(0); + riskDetails.setPublishName("system-worker"); + riskDetailsService.addRiskDetails(riskDetails); + } + } + } + + } catch (Exception e) { + ERROR_LOGGER.error("convert high risk error.", e); + } + Risks risks = new Risks(); + risks.setCreated(new Date()); + risks.setYn(YnEnums.YES.getId()); + risks.setModified(new Date()); + risks.setPatientId(patientId); + + String srt = sb.toString(); + risks.setTitle(srt); + risks.setReason(srt); + Integer crisis = null; + if (CollectionUtils.isNotEmpty(data)) { + crisis = 0; + for (RiskColorEnum risk : data) { + crisis = crisis & risk.getId(); + } + } + risks.setCrisis(crisis); + risks.setPublishId(0); + risks.setPublishName("system-worker"); + risksService.addRisks(risks); + } + + + private void handlRiskChu(AntExChuModel antExChuModel, Integer patientId) { + + risksService.deleteRisk(patientId); + riskDetailsService.deleteRiskDetails(patientId); + Risks risks = new Risks(); + risks.setCreated(antExChuModel.getCreated()); + risks.setYn(YnEnums.YES.getId()); + risks.setModified(antExChuModel.getModified()); + + risks.setPatientId(patientId); + HighScoreResult highScoreResult = new HighScoreResult(); + try { + List list2 = JsonUtil.toList(antExChuModel.getHighrisk(), List.class); + highScoreResult = queryRisk(list2, patientId); + } catch (Exception e) { + ERROR_LOGGER.error("convert high risk error.", e); + } + + if (null != antExChuModel && !"{}".equals(antExChuModel.getOtherHighRisk())) { + Map map = JsonUtil.str2Obj(antExChuModel.getOtherHighRisk(), Map.class); + //风险因素 + Map map1 = new HashMap(); + map1.put("id", ""); + Object obj = map.get("fxysu"); + if (null != obj && !"null".equals(obj.toString()) && !"".equals(obj.toString())) { + map1.put("name", map.get("fxysu")); + highScoreResult.getHighRisk().add(map1); + } + RiskDetails riskDetails = new RiskDetails(); + //风险评分 + Object idObj = map.get("fxpf"); + if (null != idObj && !"null".equals(idObj.toString()) && !"".equals(idObj.toString())) { + BasicConfig basicConfig = basicConfigService.getOneBasicConfigById(idObj.toString()); + riskDetails.setScore(NumberUtils.toInt(basicConfig.getName())); + highScoreResult.setScore(highScoreResult.getScore() + NumberUtils.toInt(basicConfig.getName(), 0)); + } + Object idObj1 = map.get("fyyse"); + if (null != idObj1 && !"null".equals(idObj1.toString()) && !"".equals(idObj1.toString())) { + BasicConfig basicConfig = basicConfigService.getOneBasicConfigById(idObj1.toString()); + if (null != basicConfig) { + Map map2 = new HashMap<>(); + map2.put("id", basicConfig.getId()); + String name = basicConfig.getName(); + if (name.indexOf("预警") > -1) { + name = name.replace("预警", ""); + } + map2.put("name", name); + RiskColorEnum riskColorEnum = SyncDataWork.map.get(name); + riskDetails.setCrisis(riskColorEnum == null ? null : riskColorEnum.getId()); + map2.put("color", "risk_" + RiskDefaultTypeEnum.getColor(name)); + highScoreResult.getLevel().add(map2); + } + } + Object obj1 = map1.get("name"); + if (null != obj1) { + riskDetails.setTitle(obj1.toString()); + riskDetails.setPublishName("system-worker"); + riskDetails.setPublishId(0); + riskDetails.setYn(YnEnums.YES.getId()); + riskDetails.setCreated(new Date()); + riskDetails.setModified(new Date()); + riskDetails.setPatientId(patientId); + riskDetailsService.addRiskDetails(riskDetails); + } + } + String srt = highScoreResult.gethighRiskStr(); + risks.setTitle(srt); + risks.setReason(srt); + Integer crisis = null; + if (CollectionUtils.isNotEmpty(highScoreResult.getLevel())) { + crisis = 0; + for (Object map1 : highScoreResult.getLevel()) { + Map tmp = (Map) map1; + String name = tmp.get("name") == null ? null : (String) tmp.get("name"); + if (null != name) { + RiskColorEnum colorEnum = map.get(name); + crisis = crisis & colorEnum.getId(); + } + } + } + risks.setCrisis(crisis); + risks.setPublishId(0); + risks.setPublishName("system-worker"); + risksService.addRisks(risks); + } + + public HighScoreResult queryRisk(List id, Integer parentId) { + HighScoreResult highScoreResult = new HighScoreResult(); + BasicConfigQuery basicConfigQuery = new BasicConfigQuery(); + List data = new ArrayList(); + List dat1a = new ArrayList(); + Integer score = null; + if (CollectionUtils.isNotEmpty(id)) { + score = 0; + for (String i : id) { + basicConfigQuery.setId(i); + List basicConfigs = basicConfigService.queryBasicConfig(basicConfigQuery); + if (CollectionUtils.isNotEmpty(basicConfigs)) { + Integer crisis = null; + for (BasicConfig basicConfig : basicConfigs) { + Map map = new HashMap<>(); + map.put("id", basicConfig.getId()); + map.put("name", basicConfig.getName()); + map.put("code", basicConfig.getCode()); + RiskDetails riskDetails = new RiskDetails(); + if (StringUtils.isNotEmpty(basicConfig.getCode())) { + score += NumberUtils.toInt(basicConfig.getCode(), 0); + riskDetails.setScore(NumberUtils.toInt(basicConfig.getCode())); + } + riskDetails.setCreated(new Date()); + riskDetails.setYn(YnEnums.YES.getId()); + riskDetails.setModified(new Date()); + riskDetails.setPatientId(parentId); + riskDetails.setTitle(basicConfig.getName()); + + riskDetails.setPublishId(0); + riskDetails.setPublishName("system-worker"); + BasicConfig basicConfig1 = basicConfigService.getOneBasicConfigById(basicConfig.getParentId()); + if (null != basicConfig1) { + Map map1 = new HashMap<>(); + map1.put("id", basicConfig1.getId()); + String name = basicConfig1.getName(); + if (name.indexOf("预警") > -1) { + name = name.replace("预警", ""); + } + map1.put("name", name); + crisis = SyncDataWork.map.get(name) == null ? null : SyncDataWork.map.get(name).getId(); + map1.put("color", "risk_" + RiskDefaultTypeEnum.getColor(name)); + dat1a.add(map1); + } + riskDetails.setCrisis(crisis); + riskDetailsService.addRiskDetails(riskDetails); + data.add(map); + } + } + } + } + highScoreResult.setHighRisk(data); + highScoreResult.setScore(score); + highScoreResult.setLevel(dat1a); + return highScoreResult; + } + + private void bandingMember(com.lymsh.mommybaby.maindata.model.Patients patients) { MembersQuery membersQuery = new MembersQuery(); if (StringUtils.isEmpty(patients.getPhone())) { -- 1.8.3.1