Commit 3e83c8128f12f4addcfe08b84d7c48af6f95b7c4

Authored by [wangbo]
1 parent dafeb79cc5

孕妇追访历史数据处理

Showing 4 changed files with 140 additions and 28 deletions

platform-dal/src/main/java/com/lyms/platform/query/ResidentsArchiveQuery.java View file @ 3e83c81
... ... @@ -101,6 +101,11 @@
101 101 private String id;
102 102 //创建时间
103 103 private Date created;
  104 +
  105 + private Date createdStart;
  106 +
  107 + private Date createdEnd;
  108 +
104 109 //修改时间
105 110 private Date modified;
106 111 //有效标识符(1: 有效 2: 无效)
107 112  
... ... @@ -127,7 +132,22 @@
127 132 //追访状态 0 正常 1. 待追访 2.已终止
128 133 private Integer followupStatus;
129 134  
  135 + public Date getCreatedStart() {
  136 + return createdStart;
  137 + }
130 138  
  139 + public void setCreatedStart(Date createdStart) {
  140 + this.createdStart = createdStart;
  141 + }
  142 +
  143 + public Date getCreatedEnd() {
  144 + return createdEnd;
  145 + }
  146 +
  147 + public void setCreatedEnd(Date createdEnd) {
  148 + this.createdEnd = createdEnd;
  149 + }
  150 +
131 151 public Integer getFollowupStatus() {
132 152 return followupStatus;
133 153 }
... ... @@ -270,6 +290,16 @@
270 290 c1 = Criteria.where("buildDay").gte(buildDateStart).lte(buildDateEnd);
271 291 }
272 292 }
  293 +
  294 +
  295 + if (null != createdStart && null != createdEnd) {
  296 + if (null != c1) {
  297 + c1 = c1.where("created").gte(createdStart).lte(createdEnd);
  298 + } else {
  299 + c1 = Criteria.where("created").gte(createdStart).lte(createdEnd);
  300 + }
  301 + }
  302 +
273 303  
274 304 if (null != ageMin) {
275 305 c1 = Criteria.where("age").gte(ageMin);
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TrackDownController.java View file @ 3e83c81
... ... @@ -146,8 +146,8 @@
146 146 * 孕妇追访管理历史数据处理
147 147 */
148 148 @RequestMapping(value = "/historyData", method = RequestMethod.GET)
149   - public void historyData(Date startTime, Date endTime) {
150   - downFacade.historyData(startTime, endTime);
  149 + public void historyData(Date startTime, Date endTime, String hospitalId) {
  150 + downFacade.historyData(startTime, endTime, hospitalId);
151 151 }
152 152  
153 153 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java View file @ 3e83c81
... ... @@ -13,6 +13,8 @@
13 13 import com.lyms.platform.operate.web.result.HighScoreResult;
14 14 import com.lyms.platform.operate.web.utils.CommonsHelper;
15 15 import com.lyms.platform.operate.web.utils.ResponseUtil;
  16 +import com.lyms.platform.operate.web.worker.ChaseVisitHistory;
  17 +import com.lyms.platform.operate.web.worker.babyStatisticalProbabilityWorker;
16 18 import com.lyms.platform.permission.model.ServiceListQuery;
17 19 import com.lyms.platform.pojo.*;
18 20 import com.lyms.platform.query.*;
19 21  
... ... @@ -20,10 +22,12 @@
20 22 import org.slf4j.Logger;
21 23 import org.slf4j.LoggerFactory;
22 24 import org.springframework.beans.factory.annotation.Autowired;
  25 +import org.springframework.beans.factory.annotation.Qualifier;
23 26 import org.springframework.data.domain.Sort;
24 27 import org.springframework.data.mongodb.core.MongoTemplate;
25 28 import org.springframework.data.mongodb.core.query.Criteria;
26 29 import org.springframework.data.mongodb.core.query.Query;
  30 +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
27 31 import org.springframework.stereotype.Component;
28 32  
29 33 import javax.annotation.PostConstruct;
... ... @@ -31,6 +35,8 @@
31 35 import javax.servlet.http.HttpServletResponse;
32 36 import java.text.SimpleDateFormat;
33 37 import java.util.*;
  38 +import java.util.concurrent.Callable;
  39 +import java.util.concurrent.Future;
34 40  
35 41  
36 42 /**
37 43  
38 44  
39 45  
40 46  
... ... @@ -1090,33 +1096,53 @@
1090 1096 * 孕妇追访历史数据处理
1091 1097 */
1092 1098  
1093   - private long start;
  1099 + @Autowired
  1100 + @Qualifier("commonThreadPool")
  1101 + private ThreadPoolTaskExecutor commonThreadPool;
1094 1102  
1095   - public void historyData(Date startTime, Date endTime) {
1096   - //1.处理妇女表中的预约字段
1097   - List<TrackDownRecord> trackDownRecord = mongoTemplate.find(Query.query(Criteria.where("created").gte(startTime).lte(endTime)), TrackDownRecord.class);
1098   - System.out.println(trackDownRecord.size());
1099   - TrackDownRecord trackDown = new TrackDownRecord();
1100   - ResidentsArchiveModel residentsArchiveModel = new ResidentsArchiveModel();
1101   - Patients patients = new Patients();
  1103 + @Autowired
  1104 + private PremaritalCheckupService premaritalCheckupService;
1102 1105  
1103   - System.out.println(System.currentTimeMillis());
1104   - start = System.currentTimeMillis();
1105   - for (TrackDownRecord track : trackDownRecord) {
1106   - System.out.println("id:" + track.getId());
1107   - trackDown.setAppointmentDate(track.getCreated());
1108   - trackDown.setStop("0");
1109   - residentsArchiveModel.setStop("0");
1110   - residentsArchiveModel.setFollowupTime(track.getCreated());
1111   - patients.setStop("0");
1112   - patients.setFollowupTime(track.getCreated());
1113   - patientsService.updatePatientOne(patients, track.getParentId());
1114   - residentsArchiveService.updateResident(residentsArchiveModel, track.getResidentsArchiveId());
1115   - trackDownRecordService.updateTrackDown(trackDown, track.getId());
  1106 + public void historyData(Date startTime, Date endTime, String hospitalId) {
  1107 + if (null != startTime && null != endTime && StringUtils.isNotEmpty(hospitalId)) {
  1108 + //1.处理是否妇女是否有婚检
  1109 + ResidentsArchiveQuery query = new ResidentsArchiveQuery();
  1110 + List<Map<String, Integer>> dataRequest = new ArrayList<>();
  1111 + query.setCreatedStart(startTime);
  1112 + query.setCreatedEnd(endTime);
  1113 + query.setHospitalId(hospitalId);
  1114 + List<ResidentsArchiveModel> archiveModels = residentsArchiveService.queryResident(query);
  1115 + if (CollectionUtils.isNotEmpty(archiveModels)) {
  1116 + int batchSize = 5;
  1117 + int ends = 0;
  1118 + List<Future> futures = new ArrayList<>();
  1119 + for (int i = 0; i < archiveModels.size(); i += batchSize) {
  1120 + ends = (ends + batchSize);
  1121 + if (ends > archiveModels.size()) {
  1122 + ends = archiveModels.size();
  1123 + }
  1124 + List<ResidentsArchiveModel> mlist = archiveModels.subList(i, ends);
  1125 + Callable c = new ChaseVisitHistory(mlist, residentsArchiveService,mongoTemplate);
  1126 + Future f = commonThreadPool.submit(c);
  1127 + if (f != null) {
  1128 + futures.add(f);
  1129 + }
  1130 + }
  1131 + if (CollectionUtils.isNotEmpty(futures)) {
  1132 + for (Future f : futures) {
  1133 + try {
  1134 + dataRequest.add((Map<String, Integer>) f.get());
  1135 + } catch (Exception e) {
  1136 + ExceptionUtils.catchException(e, "fm list error.");
  1137 + }
  1138 + }
  1139 + }
  1140 + }
  1141 +
  1142 +
1116 1143 }
1117   - System.out.println("结束时间:" + (System.currentTimeMillis() - start));
1118   - }
1119 1144  
  1145 + }
1120 1146  
1121 1147 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/ChaseVisitHistory.java View file @ 3e83c81
  1 +package com.lyms.platform.operate.web.worker;
  2 +
  3 +import com.lyms.platform.biz.service.PremaritalCheckupService;
  4 +import com.lyms.platform.biz.service.ResidentsArchiveService;
  5 +import com.lyms.platform.common.utils.StringUtils;
  6 +import com.lyms.platform.pojo.Patients;
  7 +import com.lyms.platform.pojo.PremaritalCheckup;
  8 +import com.lyms.platform.pojo.ResidentsArchiveModel;
  9 +import com.lyms.platform.query.PremaritalCheckupQuery;
  10 +import org.springframework.data.mongodb.core.MongoTemplate;
  11 +import org.springframework.data.mongodb.core.query.Criteria;
  12 +import org.springframework.data.mongodb.core.query.Query;
  13 +
  14 +import java.util.List;
  15 +import java.util.Map;
  16 +import java.util.concurrent.Callable;
  17 +
  18 +public class ChaseVisitHistory implements Callable<Map<String, Integer>> {
  19 +
  20 + private List<ResidentsArchiveModel> archiveModel;
  21 +
  22 + private ResidentsArchiveService residentsArchiveService;
  23 +
  24 + private MongoTemplate mongoTemplate;
  25 +
  26 + public ChaseVisitHistory(List<ResidentsArchiveModel> archiveModel, ResidentsArchiveService residentsArchiveService, MongoTemplate mongoTemplate) {
  27 + this.archiveModel = archiveModel;
  28 + this.residentsArchiveService = residentsArchiveService;
  29 + this.mongoTemplate = mongoTemplate;
  30 +
  31 + }
  32 +
  33 + @Override
  34 + public Map<String, Integer> call() throws Exception {
  35 + for (ResidentsArchiveModel archive : archiveModel) {
  36 + PremaritalCheckup checkup = mongoTemplate.findOne(Query.query(Criteria.where("parentId").is(archive.getId())), PremaritalCheckup.class);
  37 + if (null != checkup) {
  38 + archive.setCheckup("1");
  39 + } else {
  40 + archive.setCheckup("0");
  41 + }
  42 + Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("cardNo").is(archive.getCertificateNum())), Patients.class);
  43 + if (null != patients) {
  44 + archive.setPregnantBuild("1");
  45 + } else {
  46 + archive.setPregnantBuild("0");
  47 + }
  48 + //默认正常
  49 + archive.setStop("0");
  50 +
  51 + residentsArchiveService.updateResident(archive, archive.getId());
  52 +
  53 + }
  54 + return null;
  55 + }
  56 +}