From 3e83c8128f12f4addcfe08b84d7c48af6f95b7c4 Mon Sep 17 00:00:00 2001 From: "[wangbo]" Date: Mon, 26 Aug 2019 18:02:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=95=E5=A6=87=E8=BF=BD=E8=AE=BF=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lyms/platform/query/ResidentsArchiveQuery.java | 30 +++++++++ .../web/controller/TrackDownController.java | 4 +- .../operate/web/facade/TrackDownFacade.java | 78 ++++++++++++++-------- .../operate/web/worker/ChaseVisitHistory.java | 56 ++++++++++++++++ 4 files changed, 140 insertions(+), 28 deletions(-) create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/ChaseVisitHistory.java diff --git a/platform-dal/src/main/java/com/lyms/platform/query/ResidentsArchiveQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/ResidentsArchiveQuery.java index 5d16fd6..8200098 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/ResidentsArchiveQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/ResidentsArchiveQuery.java @@ -101,6 +101,11 @@ public class ResidentsArchiveQuery extends BaseQuery implements IConvertToNative private String id; //创建时间 private Date created; + + private Date createdStart; + + private Date createdEnd; + //修改时间 private Date modified; //有效标识符(1: 有效 2: 无效) @@ -127,6 +132,21 @@ public class ResidentsArchiveQuery extends BaseQuery implements IConvertToNative //追访状态 0 正常 1. 待追访 2.已终止 private Integer followupStatus; + public Date getCreatedStart() { + return createdStart; + } + + public void setCreatedStart(Date createdStart) { + this.createdStart = createdStart; + } + + public Date getCreatedEnd() { + return createdEnd; + } + + public void setCreatedEnd(Date createdEnd) { + this.createdEnd = createdEnd; + } public Integer getFollowupStatus() { return followupStatus; @@ -271,6 +291,16 @@ public class ResidentsArchiveQuery extends BaseQuery implements IConvertToNative } } + + if (null != createdStart && null != createdEnd) { + if (null != c1) { + c1 = c1.where("created").gte(createdStart).lte(createdEnd); + } else { + c1 = Criteria.where("created").gte(createdStart).lte(createdEnd); + } + } + + if (null != ageMin) { c1 = Criteria.where("age").gte(ageMin); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TrackDownController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TrackDownController.java index 46a8f0f..3d52704 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TrackDownController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TrackDownController.java @@ -146,8 +146,8 @@ public class TrackDownController extends BaseController { * 孕妇追访管理历史数据处理 */ @RequestMapping(value = "/historyData", method = RequestMethod.GET) - public void historyData(Date startTime, Date endTime) { - downFacade.historyData(startTime, endTime); + public void historyData(Date startTime, Date endTime, String hospitalId) { + downFacade.historyData(startTime, endTime, hospitalId); } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java index cec409b..edc88e9 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java @@ -13,6 +13,8 @@ import com.lyms.platform.operate.web.request.TrackDownQueryRequest; import com.lyms.platform.operate.web.result.HighScoreResult; import com.lyms.platform.operate.web.utils.CommonsHelper; import com.lyms.platform.operate.web.utils.ResponseUtil; +import com.lyms.platform.operate.web.worker.ChaseVisitHistory; +import com.lyms.platform.operate.web.worker.babyStatisticalProbabilityWorker; import com.lyms.platform.permission.model.ServiceListQuery; import com.lyms.platform.pojo.*; import com.lyms.platform.query.*; @@ -20,10 +22,12 @@ import org.apache.commons.collections.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.domain.Sort; 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.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; @@ -31,6 +35,8 @@ import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.Callable; +import java.util.concurrent.Future; /** @@ -1090,32 +1096,52 @@ public class TrackDownFacade { * 孕妇追访历史数据处理 */ - private long start; - - public void historyData(Date startTime, Date endTime) { - //1.处理妇女表中的预约字段 - List trackDownRecord = mongoTemplate.find(Query.query(Criteria.where("created").gte(startTime).lte(endTime)), TrackDownRecord.class); - System.out.println(trackDownRecord.size()); - TrackDownRecord trackDown = new TrackDownRecord(); - ResidentsArchiveModel residentsArchiveModel = new ResidentsArchiveModel(); - Patients patients = new Patients(); - - System.out.println(System.currentTimeMillis()); - start = System.currentTimeMillis(); - for (TrackDownRecord track : trackDownRecord) { - System.out.println("id:" + track.getId()); - trackDown.setAppointmentDate(track.getCreated()); - trackDown.setStop("0"); - residentsArchiveModel.setStop("0"); - residentsArchiveModel.setFollowupTime(track.getCreated()); - patients.setStop("0"); - patients.setFollowupTime(track.getCreated()); - patientsService.updatePatientOne(patients, track.getParentId()); - residentsArchiveService.updateResident(residentsArchiveModel, track.getResidentsArchiveId()); - trackDownRecordService.updateTrackDown(trackDown, track.getId()); + @Autowired + @Qualifier("commonThreadPool") + private ThreadPoolTaskExecutor commonThreadPool; + + @Autowired + private PremaritalCheckupService premaritalCheckupService; + + public void historyData(Date startTime, Date endTime, String hospitalId) { + if (null != startTime && null != endTime && StringUtils.isNotEmpty(hospitalId)) { + //1.处理是否妇女是否有婚检 + ResidentsArchiveQuery query = new ResidentsArchiveQuery(); + List> dataRequest = new ArrayList<>(); + query.setCreatedStart(startTime); + query.setCreatedEnd(endTime); + query.setHospitalId(hospitalId); + List archiveModels = residentsArchiveService.queryResident(query); + if (CollectionUtils.isNotEmpty(archiveModels)) { + int batchSize = 5; + int ends = 0; + List futures = new ArrayList<>(); + for (int i = 0; i < archiveModels.size(); i += batchSize) { + ends = (ends + batchSize); + if (ends > archiveModels.size()) { + ends = archiveModels.size(); + } + List mlist = archiveModels.subList(i, ends); + Callable c = new ChaseVisitHistory(mlist, residentsArchiveService,mongoTemplate); + Future f = commonThreadPool.submit(c); + if (f != null) { + futures.add(f); + } + } + if (CollectionUtils.isNotEmpty(futures)) { + for (Future f : futures) { + try { + dataRequest.add((Map) f.get()); + } catch (Exception e) { + ExceptionUtils.catchException(e, "fm list error."); + } + } + } + } + + } - System.out.println("结束时间:" + (System.currentTimeMillis() - start)); - } + } -} \ No newline at end of file +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/ChaseVisitHistory.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/ChaseVisitHistory.java new file mode 100644 index 0000000..11b7d63 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/ChaseVisitHistory.java @@ -0,0 +1,56 @@ +package com.lyms.platform.operate.web.worker; + +import com.lyms.platform.biz.service.PremaritalCheckupService; +import com.lyms.platform.biz.service.ResidentsArchiveService; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.pojo.Patients; +import com.lyms.platform.pojo.PremaritalCheckup; +import com.lyms.platform.pojo.ResidentsArchiveModel; +import com.lyms.platform.query.PremaritalCheckupQuery; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; + +import java.util.List; +import java.util.Map; +import java.util.concurrent.Callable; + +public class ChaseVisitHistory implements Callable> { + + private List archiveModel; + + private ResidentsArchiveService residentsArchiveService; + + private MongoTemplate mongoTemplate; + + public ChaseVisitHistory(List archiveModel, ResidentsArchiveService residentsArchiveService, MongoTemplate mongoTemplate) { + this.archiveModel = archiveModel; + this.residentsArchiveService = residentsArchiveService; + this.mongoTemplate = mongoTemplate; + + } + + @Override + public Map call() throws Exception { + for (ResidentsArchiveModel archive : archiveModel) { + PremaritalCheckup checkup = mongoTemplate.findOne(Query.query(Criteria.where("parentId").is(archive.getId())), PremaritalCheckup.class); + if (null != checkup) { + archive.setCheckup("1"); + } else { + archive.setCheckup("0"); + } + Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("cardNo").is(archive.getCertificateNum())), Patients.class); + if (null != patients) { + archive.setPregnantBuild("1"); + } else { + archive.setPregnantBuild("0"); + } + //默认正常 + archive.setStop("0"); + + residentsArchiveService.updateResident(archive, archive.getId()); + + } + return null; + } +} -- 1.8.3.1