Commit 799706fe7902185b6299ed89f085694ffb33397d

Authored by yangfei
1 parent 65e1913b29

追访概况

Showing 11 changed files with 284 additions and 120 deletions

platform-dal/src/main/java/com/lyms/platform/pojo/Patients.java View file @ 799706f
... ... @@ -266,7 +266,7 @@
266 266 private Integer gender;
267 267  
268 268 private Date birth;
269   - //1孕妇 3 产妇
  269 + //1孕妇 2儿童 3 产妇
270 270 private Integer type;
271 271  
272 272 private String foreignSubId;
... ... @@ -1166,6 +1166,7 @@
1166 1166 TrackDownRecord downRecord = new TrackDownRecord();
1167 1167 downRecord.setParentId(getId());
1168 1168 downRecord.setPid(getPid());
  1169 + downRecord.setProvinceRegisterId(getProvinceRegisterId());
1169 1170 downRecord.setLastMenses(getLastMenses());
1170 1171 downRecord.setUsername(getUsername());
1171 1172 downRecord.setCityRegisterId(getCityRegisterId());
... ... @@ -1175,7 +1176,6 @@
1175 1176 downRecord.setAddressRegister(getAddressRegister());
1176 1177 downRecord.setPhone(getPhone());
1177 1178 downRecord.setStreetRegisterId(getStreetRegisterId());
1178   - downRecord.setAreaRegisterId(getAreaRegisterId());
1179 1179 //默认值
1180 1180 downRecord.setHospitalId(getHospitalId());
1181 1181 downRecord.setSource(getId());
platform-dal/src/main/java/com/lyms/platform/pojo/ResidentsArchiveModel.java View file @ 799706f
... ... @@ -443,6 +443,7 @@
443 443 record.setCityRegisterId(getCityId());
444 444 record.setUsername(getUsername());
445 445 record.setStreetRegisterId(getStreetId());
  446 + record.setProvinceRegisterId(getProvinceId());
446 447 record.setPhone(getPhone());
447 448 record.setHospitalId(getHospitalId());
448 449 record.setSource(getId());
platform-dal/src/main/java/com/lyms/platform/query/ResidentsArchiveQuery.java View file @ 799706f
... ... @@ -87,6 +87,10 @@
87 87 private String buildDoctor;
88 88 //建档日期
89 89 private Date buildDay;
  90 + //建档开始日期
  91 + private Date startBuildDay;
  92 + //建档结束日期
  93 + private Date endBuildDay;
90 94  
91 95 /* table info */
92 96  
... ... @@ -210,6 +214,20 @@
210 214 }
211 215 }
212 216  
  217 + if (null != startBuildDay) {
  218 + c1 = Criteria.where("buildDay").gte(startBuildDay);
  219 + }
  220 +
  221 + if (null != endBuildDay) {
  222 + if (null != c1) {
  223 + c1 = c1.lte(endBuildDay);
  224 + } else {
  225 + c1 = Criteria.where("buildDay").lte(endBuildDay);
  226 + }
  227 + }
  228 +
  229 +
  230 +
213 231 if (StringUtils.isNotBlank(queryNo)) {
214 232 MongoCondition c = MongoCondition.newInstance();
215 233 MongoCondition con1 = MongoCondition.newInstance("phone", queryNo, MongoOper.IS);
... ... @@ -229,6 +247,22 @@
229 247 condition = condition.andCondition(new MongoCondition(c1));
230 248 }
231 249 return condition.toMongoQuery();
  250 + }
  251 +
  252 + public Date getStartBuildDay() {
  253 + return startBuildDay;
  254 + }
  255 +
  256 + public void setStartBuildDay(Date startBuildDay) {
  257 + this.startBuildDay = startBuildDay;
  258 + }
  259 +
  260 + public Date getEndBuildDay() {
  261 + return endBuildDay;
  262 + }
  263 +
  264 + public void setEndBuildDay(Date endBuildDay) {
  265 + this.endBuildDay = endBuildDay;
232 266 }
233 267  
234 268 public List<String> getHospitalIds() {
platform-dal/src/main/java/com/lyms/platform/query/TrackDownRecordQuery.java View file @ 799706f
... ... @@ -220,22 +220,22 @@
220 220 }
221 221  
222 222 if (StringUtils.isNotEmpty(provinceId)) {
223   - condition = condition.and("provinceId", provinceId, MongoOper.IS);
  223 + condition = condition.and("provinceRegisterId", provinceId, MongoOper.IS);
224 224 }
225 225 if (StringUtils.isNotEmpty(residentsArchiveId)) {
226 226 condition = condition.and("residentsArchiveId", residentsArchiveId, MongoOper.IS);
227 227 }
228 228 if (StringUtils.isNotEmpty(cityId)) {
229   - condition = condition.and("cityId", cityId, MongoOper.IS);
  229 + condition = condition.and("cityRegisterId", cityId, MongoOper.IS);
230 230 }
231 231 if (StringUtils.isNotEmpty(areaId)) {
232   - condition = condition.and("areaId", areaId, MongoOper.IS);
  232 + condition = condition.and("areaRegisterId", areaId, MongoOper.IS);
233 233 }
234 234 if (StringUtils.isNotEmpty(hospitalId)) {
235 235 condition = condition.and("hospitalId", hospitalId, MongoOper.IS);
236 236 }
237 237 if (StringUtils.isNotEmpty(streetId)) {
238   - condition = condition.and("streetId", streetId, MongoOper.IS);
  238 + condition = condition.and("streetRegisterId", streetId, MongoOper.IS);
239 239 }
240 240 if (null != trackType) {
241 241 condition = condition.and("trackType", trackType, MongoOper.IS);
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TrackDownController.java View file @ 799706f
... ... @@ -15,6 +15,8 @@
15 15 import javax.servlet.http.HttpServletRequest;
16 16 import javax.servlet.http.HttpServletResponse;
17 17 import java.util.Date;
  18 +import java.util.HashMap;
  19 +import java.util.Map;
18 20  
19 21 /**
20 22 * 追访
... ... @@ -47,8 +49,11 @@
47 49 @ResponseBody
48 50 @TokenRequired
49 51 @RequestMapping(value = "/all", method = RequestMethod.GET)
50   - public BaseResponse all(Date buildStart, Date buildEnd, Date checkStart, Date checkEnd, Date fmStart, Date fmEnd, String key, @RequestParam Integer page, @RequestParam Integer limit, HttpServletRequest request) {
51   - return trackDownService.all(buildStart, buildEnd, checkStart, checkEnd, fmStart, fmEnd, key, page, limit, getUserId(request));
  52 + public BaseResponse all(Date buildStart, Date buildEnd, Date checkStart, Date checkEnd, Date fmStart, Date fmEnd, String key,Integer type, @RequestParam Integer page, @RequestParam Integer limit, HttpServletRequest request) {
  53 + Map<String,Object> map = new HashMap<>();
  54 +
  55 + // downFacade.all(map);
  56 + return trackDownService.all(buildStart, buildEnd, checkStart, checkEnd, fmStart, fmEnd, key, page, limit, getUserId(request),type);
52 57 }
53 58  
54 59 @ResponseBody
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java View file @ 799706f
... ... @@ -413,6 +413,12 @@
413 413 trackDownRecord.setId(trackDownRecord1.getId());
414 414 }
415 415 }
  416 + int week = DateUtil.getWeek2(patient.getLastMenses(),new Date());
  417 +
  418 + if(week>20){//不能做产前筛查追访,产前检查追访
  419 + trackDownRecord.setTrackType(TrackDownDateEnums.I.getId());
  420 + }
  421 +
416 422 trackDownService.addOrupdateTrackDownRecord(userId, trackDownRecord);
417 423 }
418 424  
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ResidentsArchiveFacade.java View file @ 799706f
... ... @@ -587,9 +587,7 @@
587 587 * @return
588 588 */
589 589 public BaseResponse queryResidentsArchives(ResidentsArchiveQueryRequest queryRequest,Integer userId,String need){
590   -
591 590 List<Map> data = new ArrayList<>();
592   -
593 591 String hospitalId = autoMatchFacade.getHospitalId(userId);
594 592  
595 593 //查询条件
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java View file @ 799706f
... ... @@ -5,6 +5,7 @@
5 5 import com.lyms.platform.common.enums.TrackDownDateEnums;
6 6 import com.lyms.platform.common.enums.YnEnums;
7 7 import com.lyms.platform.common.result.BaseObjectResponse;
  8 +import com.lyms.platform.common.result.BaseResponse;
8 9 import com.lyms.platform.common.result.PageResult;
9 10 import com.lyms.platform.common.result.RespBuilder;
10 11 import com.lyms.platform.common.utils.DateUtil;
... ... @@ -45,6 +46,10 @@
45 46 @Component
46 47 public class TrackDownFacade {
47 48  
  49 +
  50 +
  51 +
  52 +
48 53 /**
49 54 * 构建返回字段
50 55 */
51 56  
52 57  
... ... @@ -109,12 +114,16 @@
109 114 }
110 115  
111 116 /**
112   - * 处理建档时候的追访功能
113   - *
114   - * @param patients
  117 + * 追访概况备选方案
  118 + * @param map
  119 + * @return
115 120 */
116   - public void aop4Patient(Patients patients) {
  121 + public BaseResponse all(Map<String, Object> map) {
117 122  
  123 + TrackDownRecordQuery query = new TrackDownRecordQuery();
  124 + List<TrackDownRecord> trackDownRecords = trackDownRecordService.queryTrackDown(query);
  125 +
  126 + return new BaseResponse();
118 127 }
119 128  
120 129 /**
... ... @@ -252,7 +261,6 @@
252 261 public BaseObjectResponse list(TrackDownQueryRequest downQueryRequest, Integer userId) {
253 262 //转换为本地的查询条件
254 263 TrackDownRecordQuery downRecordQuery = convertNaviteQuery(downQueryRequest, userId);
255   -
256 264 List<TrackDownRecord> downRecordList = trackDownRecordService.queryTrackDown(downRecordQuery);
257 265 List<Map> data = new ArrayList<>();
258 266 TrackDownTypeHandler downTypeHandler = trackDownTypeHandlerMap.get(downQueryRequest.getTrackType());
... ... @@ -462,7 +470,7 @@
462 470 }
463 471 }
464 472 //产检次数
465   - temp.put("checkCount", mongoTemplate.count(Query.query(Criteria.where("parentId").is(parentId).and("hospitalId").is(hospitalId)), AntenatalExaminationModel.class) + mongoTemplate.count(Query.query(Criteria.where("parentId").is(parentId)), AntExChuModel.class));
  473 + temp.put("checkCount", mongoTemplate.count(Query.query(Criteria.where("parentId").is(parentId).and("hospitalId").is(hospitalId).and("yn").is(1)), AntenatalExaminationModel.class) + mongoTemplate.count(Query.query(Criteria.where("parentId").is(parentId).and("yn").is(1)), AntExChuModel.class));
466 474 Criteria criteria = Criteria.where("yn").is(1).and("parentId").is(downRecord.getParentId());
467 475 if (TrackDownDateEnums.C.getId() == downRecord.getTrackType()) {
468 476 criteria.and("trackDownDateType").in(3, 9);
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownJobFacade.java View file @ 799706f
... ... @@ -112,11 +112,11 @@
112 112 @PostConstruct
113 113 private void init() {
114 114 //婚前检查数据加载
115   - downJobHandlers.add(new HJTrackDownDataLoader());
  115 + // downJobHandlers.add(new HJTrackDownDataLoader());
116 116 //怀孕建档数据加载
117 117 // downJobHandlers.add(new HYTrackDownDataLoader());
118 118 //产检数据加载
119   - // downJobHandlers.add(new CJTrackDownDataLoader());
  119 + downJobHandlers.add(new CJTrackDownDataLoader());
120 120 //分娩数据加载,有自动任务处理
121 121 // downJobHandlers.add(new FMTrackDownDataLoader());
122 122 //产后访视和产后复查的数据加载 产后访视和产后复查的规则一样
... ... @@ -146,6 +146,7 @@
146 146 public void execute() {
147 147 int page = 0;
148 148 List<Patients> data = null;
  149 +
149 150 do {
150 151 PatientsQuery patientsQuery1 = new PatientsQuery();
151 152 patientsQuery1.setYn(YnEnums.YES.getId());
... ... @@ -157,6 +158,7 @@
157 158  
158 159 //查询妇女建档
159 160 data = patientsService.queryPatient(patientsQuery1);
  161 + System.out.println("开始处理产检追访数据!一共"+patientsQuery1.getCount()+",当前第:"+page+"页");
160 162 if (CollectionUtils.isNotEmpty(data)) {
161 163 for (Patients model : data) {
162 164 handOneByOne(model);
163 165  
... ... @@ -164,11 +166,14 @@
164 166 }
165 167 page++;
166 168 } while (CollectionUtils.isNotEmpty(data) && data.size() == limit);
  169 + System.out.println("处理产检追访数据结束!");
167 170 }
168 171  
169 172 //孕妇档案生成产检追访
170 173 @Override
171 174 public void handOneByOne(Patients model) {
  175 +
  176 + logger.info("CJTrackDownDataLoader addTrackDown by id :" + model.getId());
172 177 //添加产检追访信息
173 178 TrackDownRecord trackDownRecord = model.build();
174 179 //根据patient查询是否存在追访信息
... ... @@ -191,6 +196,10 @@
191 196 trackDownRecord.setId(trackDownRecord1.getId());
192 197 }
193 198 }
  199 + int week = DateUtil.getWeek2(model.getLastMenses(),new Date());
  200 + if(week>20){//不能做产前筛查追访,显示产前检查追访
  201 + trackDownRecord.setTrackType(TrackDownDateEnums.I.getId());
  202 + }
194 203 trackDownService.addOrupdateTrackDownRecord(model.getOperator(), trackDownRecord);
195 204 }
196 205 }
... ... @@ -207,6 +216,7 @@
207 216 public void execute() {
208 217 int page = 0;
209 218 List<PremaritalCheckup> data = null;
  219 + System.out.println("开始处理怀孕建档追访数据!");
210 220 do {
211 221 PremaritalCheckupQuery premaritalCheckupQuery = new PremaritalCheckupQuery();
212 222 premaritalCheckupQuery.setYn(YnEnums.YES.getId());
... ... @@ -225,6 +235,7 @@
225 235 }
226 236 page++;
227 237 } while (CollectionUtils.isNotEmpty(data) && data.size() == limit);
  238 + System.out.println("处理怀孕建档追访数据结束!");
228 239 }
229 240  
230 241 /**
... ... @@ -246,6 +257,8 @@
246 257 ResidentsArchiveModel resid = residentsArchiveService.getResident(model.getParentId());
247 258 if (null != resid) {
248 259 TrackDownRecord downRecord = resid.build();
  260 + downRecord.setTrackType(TrackDownDateEnums.B.getId());
  261 +
249 262 TrackDownRecordQuery downRecordQuery = new TrackDownRecordQuery();
250 263 downRecordQuery.setSource(model.getId());
251 264 List<TrackDownRecord> records = trackDownRecordService.queryTrackDown(downRecordQuery);
... ... @@ -268,11 +281,7 @@
268 281 downRecord.setId(trackDownRecord1.getId());
269 282 }
270 283 }
271   - //新增婚前检查,男的结束流程,女的进入怀孕建档)
272   - if (downRecord.getSex().equals(SystemConfig.WOMAN_ID)) {
273   - //新增婚检追访信息
274   - downRecord.setTrackType(TrackDownDateEnums.B.getId());
275   - } else if (downRecord.getSex().equals(SystemConfig.MAN_ID)) {//男结束流程
  284 + if (downRecord.getSex().equals(SystemConfig.MAN_ID)) {//男结束流程
276 285 //新增婚检追访信息
277 286 downRecord.setStatus(0);
278 287 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/ITrackDownService.java View file @ 799706f
... ... @@ -16,7 +16,7 @@
16 16  
17 17 BaseObjectResponse list(String provinceId, String cityId, String areaId, String streetId, String key, Integer trackType, Integer page, Integer limit, Integer userId);
18 18  
19   - BaseObjectResponse all(Date buildStart, Date buildEnd, Date checkStart, Date checkEnd, Date fmStart, Date fmEnd, String key, Integer page, Integer limit, Integer userId);
  19 + BaseObjectResponse all(Date buildStart, Date buildEnd, Date checkStart, Date checkEnd, Date fmStart, Date fmEnd, String key, Integer page, Integer limit, Integer userId,Integer type);
20 20  
21 21 BaseObjectResponse info(String patientId, Integer trackType);
22 22  
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TrackDownServiceImpl.java View file @ 799706f
1 1 package com.lyms.platform.operate.web.service.impl;
2 2  
3   -import com.lyms.platform.biz.service.PatientsService;
4   -import com.lyms.platform.biz.service.ResidentsArchiveService;
5   -import com.lyms.platform.biz.service.TrackDownRecordService;
6   -import com.lyms.platform.biz.service.TrackDownService;
  3 +import com.lyms.platform.biz.service.*;
7 4 import com.lyms.platform.common.enums.*;
8 5 import com.lyms.platform.common.result.*;
9 6 import com.lyms.platform.common.utils.DateUtil;
10 7 import com.lyms.platform.common.utils.EnumUtil;
11 8 import com.lyms.platform.common.utils.StringUtils;
  9 +import com.lyms.platform.common.utils.SystemConfig;
12 10 import com.lyms.platform.operate.web.facade.AutoMatchFacade;
13 11 import com.lyms.platform.operate.web.service.ITrackDownService;
14 12 import com.lyms.platform.operate.web.utils.CollectionUtils;
... ... @@ -16,6 +14,7 @@
16 14 import com.lyms.platform.operate.web.utils.ResponseUtil;
17 15 import com.lyms.platform.permission.dao.master.CouponMapper;
18 16 import com.lyms.platform.pojo.*;
  17 +import com.lyms.platform.query.*;
19 18 import org.springframework.beans.factory.annotation.Autowired;
20 19 import org.springframework.data.domain.Sort;
21 20 import org.springframework.data.mongodb.core.MongoTemplate;
22 21  
23 22  
24 23  
25 24  
26 25  
27 26  
28 27  
29 28  
30 29  
31 30  
32 31  
33 32  
34 33  
35 34  
36 35  
37 36  
38 37  
39 38  
40 39  
41 40  
... ... @@ -44,116 +43,218 @@
44 43 @Autowired
45 44 private CouponMapper couponMapper;
46 45  
  46 + @Autowired
  47 + private AntExRecordService recordService;
  48 +
  49 + @Autowired
  50 + private SieveService sieveService;
  51 + @Autowired
  52 + private PostReviewService postReviewService;
  53 +
  54 + /**
  55 + * @param buildStart
  56 + * @param buildEnd
  57 + * @param checkStart
  58 + * @param checkEnd
  59 + * @param fmStart
  60 + * @param fmEnd
  61 + * @param key
  62 + * @param page
  63 + * @param limit
  64 + * @param userId
  65 + * @param type 1-妇女建档、2-怀孕建档
  66 + * @return
  67 + */
47 68 @Override
48   - public BaseObjectResponse all(Date buildStart, Date buildEnd, Date checkStart, Date checkEnd, Date fmStart, Date fmEnd, String key, Integer page, Integer limit, Integer userId) {
  69 + public BaseObjectResponse all(Date buildStart, Date buildEnd, Date checkStart, Date checkEnd, Date fmStart, Date fmEnd, String key, Integer page, Integer limit, Integer userId, Integer type) {
49 70 String hospitalId = autoMatchFacade.getHospitalId(userId);
50   - Criteria patientCriteria = new Criteria();
51   - Criteria residentCriteria = new Criteria();
52   - patientCriteria.and("yn").is(1).and("hospitalId").is(hospitalId);
53   - residentCriteria.and("yn").is(1).and("hospitalId").is(hospitalId);
54   - if (buildStart != null && buildEnd != null) {
55   - residentCriteria.and("buildDay").gte(buildStart).lt(DateUtil.addDay(buildEnd, 1));
56   - }
57   - if (checkStart != null && checkEnd != null) {
58   - patientCriteria.and("bookbuildingDate").gte(checkStart).lt(DateUtil.addDay(checkEnd, 1));
59   - }
60   - if (fmStart != null && fmEnd != null) {
61   - patientCriteria.and("fmDate").gte(fmStart).lt(DateUtil.addDay(fmEnd, 1));
62   - }
63   - if (StringUtils.isNotEmpty(key)) {
64   - patientCriteria.orOperator(Criteria.where("phone").regex(key), Criteria.where("username").regex(key), Criteria.where("cardNo").is(key));
65   - residentCriteria.orOperator(Criteria.where("phone").regex(key), Criteria.where("username").regex(key), Criteria.where("certificateNum").is(key));
66   - }
67   - PageResult mongoPage = findMongoPage(Patients.class, Query.query(patientCriteria).with(new Sort(Sort.Direction.DESC, "created")), page, limit);
68   - List<Patients> patients = (List<Patients>) mongoPage.getGrid();
69   - boolean doPage = false;
70   - if (patients.size() >= limit) {
71   - patients = (List<Patients>) mongoPage.getGrid();
72   - } else {
73   - patients = mongoTemplate.find(Query.query(patientCriteria), Patients.class);
74   - doPage = true;
75   - }
76   - List<ResidentsArchiveModel> residentsArchiveModels = mongoTemplate.find(Query.query(residentCriteria), ResidentsArchiveModel.class);
77 71 List<Map<String, Object>> restList = new ArrayList<>();
78   - for (Patients patient : patients) { // type: 1=孕期 3=产后
79   - Map<String, Object> temp = new HashMap<>();
80   - temp.put("id", patient.getId());
81   - temp.put("cardNo", patient.getCardNo());
82   - temp.put("username", patient.getUsername());
83   - temp.put("phone", patient.getPhone());
84   - temp.put("age", DateUtil.getAge(patient.getBirth()));
85   - // 孕期建档 1=勾勾 2=叉叉 3=空白 patient有数据>>勾勾 没有>有怀孕建档追访并且(流转至下一流程 or 结束所有流程)xx 没有就是空
86   - temp.put("bookbuild", 1);
87   - temp.put("bookbuildDate", DateUtil.getyyyy_MM_dd(patient.getBookbuildingDate()));
  72 + Integer archiveModelCount = 0;
  73 + if (type == 1) {//查询妇女建档为主数据
  74 + //查询条件
  75 + ResidentsArchiveQuery query = new ResidentsArchiveQuery();
  76 + query.setLimit(limit);
  77 + query.setPage(page);
  78 + query.setNeed("1");
  79 + query.setYn(YnEnums.YES.getId());
  80 + query.setQueryNo(key);
  81 + query.setHospitalId(hospitalId);
  82 + //只查询女性
  83 + query.setSex(SystemConfig.WOMAN_ID);
  84 + query.setStartBuildDay(buildStart);
  85 + query.setEndBuildDay(buildEnd);
  86 + //妇女建档主数据
  87 + List<ResidentsArchiveModel> modelList = residentsArchiveService.queryResident(query);
  88 + restList = getResidentMainData(modelList);
88 89  
89   - // 产检记录 > 0 勾勾 没有:有产前检查追访并且(流转至下一流程 or 结束所有流程)叉叉
90   - long yjCount = getChuzhenCount(patient.getId());
91   - temp.put("yj", yjCount > 0 ? 1 : isExitTrackDown(patient.getId(), TrackDownDateEnums.C));
92   - temp.put("yjcount", yjCount); // 孕检次数 = 初诊 + 复诊
  90 + archiveModelCount = query.getCount();
  91 + } else {//孕妇建档主数据
  92 + PatientsQuery patientsQuery = new PatientsQuery();
  93 + patientsQuery.setBookbuildingDateStart(buildStart);
  94 + patientsQuery.setBookbuildingDateEnd(buildEnd);
  95 + patientsQuery.setYn(YnEnums.YES.getId());
  96 + patientsQuery.setNeed("need");
  97 + patientsQuery.setLimit(limit);
  98 + patientsQuery.setPage(page);
93 99  
94   - // 产前筛查 有产晒记录>勾勾 没有: 有产前筛查追访并且流转至下一流程 勾勾 反之xx
95   - temp.put("cqsc", mongoTemplate.count(Query.query(Criteria.where("parentId").is(patient.getId()).and("yn").is(1)), AntExChuModel.class) > 0L ? 1 : isExitTrackDown(patient.getId(), TrackDownDateEnums.D));
  100 + patientsQuery.setHospitalId(hospitalId);
  101 + patientsQuery.setQueryNo(key);
  102 + List<Patients> patientsList = patientsService.queryPatient(patientsQuery);
  103 + restList = getPatientMainData(patientsList);
96 104  
97   - // type=3 且(isAutoFm不为1,或者不存在)且dueStatus为0 没有: 有分娩住院追访并且流转至下一流程 勾勾 反之xx
98   - temp.put("fm", patient.getType() != null && patient.getType() == 3 && (patient.getIsAutoFm() == null || patient.getIsAutoFm() != 1) && patient.getDueStatus() != null && patient.getDueStatus() == 0 ? 1 : isExitTrackDown(patient.getId(), TrackDownDateEnums.E)); // 分娩 1=勾勾 2=叉叉
99   - temp.put("fmType", FmTypeEnums.getFmNameById(patient.getFmType()) == null ? "--" : FmTypeEnums.getFmNameById(patient.getFmType())); // 分娩方式
  105 + archiveModelCount = patientsQuery.getCount();
  106 + }
100 107  
101   - // 产后复查 1=勾勾 2=叉叉 有产后复查记录>勾勾 没有: 有产后复查追访并且流转至下一流程 勾勾 反之xx
102   - long chfcCount = mongoTemplate.count(Query.query(Criteria.where("parentId").is(patient.getId()).and("yn").is(1)), PostReviewModel.class);
103   - temp.put("chfc", chfcCount > 0L ? 1 : isExitTrackDown(patient.getId(), TrackDownDateEnums.G));
104   - temp.put("chfcCount", chfcCount); // 复查次数
  108 + return RespBuilder.buildSuccess("tabList", new PageResult(archiveModelCount, page, limit, restList));
  109 + }
105 110  
  111 + private List<Map<String, Object>> getResidentMainData(List<ResidentsArchiveModel> residentsArchiveModels) {
  112 + List<Map<String, Object>> archiveModelList = new ArrayList<>();
106 113  
107   - temp.put("resident", 2); // 妇女建档(产品说是直接来的 没有追访的判断) patient有数据 lyms_resident没数据 直接XX 如果有 后面的流程会设置为勾勾的 map.put("resident", 1); // 妇女建档
  114 + List<Map<String, Object>> restList = new ArrayList<>();
108 115  
109   - // 婚检 有婚检 勾勾 没有: 有婚前检查并且流转至下一流程 叉叉 没有就是空白
110   - temp.put("check", mongoTemplate.count(Query.query(Criteria.where("parentId").is(patient.getId()).and("yn").is(1)), PremaritalCheckup.class) > 0L ? 1 : isExitTrackDown(patient.getId(), TrackDownDateEnums.A));
  116 + for (ResidentsArchiveModel archiveModel : residentsArchiveModels) {
  117 + Map<String, Object> temp = new HashMap<>();
  118 + temp.put("bookbuild", 3);//孕期建档默认空白
  119 + temp.put("cqsc", 3);//产前筛查默认空白
  120 + temp.put("fm", 3);//分娩空白
  121 + temp.put("chfc", 3);//产后复查空白
  122 + Long checkNum = mongoTemplate.count(Query.query(Criteria.where("certificateNum").is(archiveModel.getCertificateNum()).and("yn").is(1)), PremaritalCheckup.class);
  123 + temp.put("resident", 1); // 妇女建档
  124 + temp.put("check", checkNum>0?1:2); // 婚检 1=勾勾 2=叉叉
111 125  
112   - restList.add(temp);
113   - }
  126 + PatientsQuery patientsQuery = new PatientsQuery();
  127 + patientsQuery.setHospitalId(archiveModel.getHospitalId());
  128 + if (archiveModel.getCertificateNum() != null) {
  129 + patientsQuery.setCardNo(archiveModel.getCertificateNum());
  130 + } else if (archiveModel.getPhone() != null) {
  131 + patientsQuery.setPhone(archiveModel.getPhone());
  132 + } else if (archiveModel.getVcCardNo() != null) {
  133 + patientsQuery.setVcCardNo(archiveModel.getVcCardNo());
  134 + }
  135 + //怀孕建档
  136 + List<Patients> patientsList = patientsService.queryPatient(patientsQuery);
114 137  
115   - Integer archiveModelCount = 0;
116   - List<Map<String, Object>> archiveModelList = new ArrayList<>();
117   - for (ResidentsArchiveModel archiveModel : residentsArchiveModels) {
118   - for (Map<String, Object> map : restList) {
119   - if (StringUtils.isNotEmpty((String) map.get("cardNo")) && map.get("cardNo").toString().equals(archiveModel.getCertificateNum())) {
120   - map.put("resident", 1); // 妇女建档
121   - map.put("residentDate", DateUtil.getyyyy_MM_dd(archiveModel.getBuildDay()));
122   - continue;
  138 + if (CollectionUtils.isNotEmpty(patientsList)) {
  139 + Patients patients = patientsList.get(0);
  140 + temp.put("bookbuild", 1); // 孕期建档 1=勾勾 2=叉叉
  141 + temp.put("bookbuildDate", patients.getBookbuildingDate());
  142 + if (patients.getType() == 3) {
  143 + temp.put("fm", 1); // 孕期建档 1=勾勾 2=叉叉
  144 + temp.put("fmType", patients.getFmType()); // 分娩方式 1: 顺产,2:剖宫产
123 145 }
  146 +
  147 + AntExRecordQuery antExRecordQuery = new AntExRecordQuery();
  148 + antExRecordQuery.setParentId(patients.getId());
  149 + temp.put("yjcount", recordService.count(antExRecordQuery)); // 孕检次数
  150 +
  151 + //产后复查
  152 + PostReviewQuery postReviewQuery = new PostReviewQuery();
  153 + postReviewQuery.setParentId(patients.getId());
  154 + postReviewQuery.setYn(YnEnums.YES.getId());
  155 + Integer postInt = postReviewService.count(postReviewQuery);
  156 + if (postInt > 0) {//大于0
  157 + temp.put("chfc", 1);
  158 + } else if(patients.getType() == 3){
  159 + temp.put("chfc", 2);
  160 + }
  161 + temp.put("chfcCount", postInt); // 复查次数
  162 +
  163 + SieveResultQuery sieveResultQuery = new SieveResultQuery();
  164 + sieveResultQuery.setParentId(patients.getId());
  165 + List<SieveResultModel> sb = sieveService.queryListSieveResult(sieveResultQuery);
  166 + if (CollectionUtils.isNotEmpty(sb)) {
  167 + temp.put("cqsc", 1);//产前筛查
  168 + } else if (patients.getType() == 3) {
  169 + {//已经分娩,就是X
  170 + temp.put("cqsc", 2);//产前筛查
  171 + }
  172 + }
124 173 }
125   - Map<String, Object> temp = new HashMap<>();
  174 +
126 175 temp.put("id", archiveModel.getId());
127 176 temp.put("cardNo", StringUtils.encryCardNo(archiveModel.getCertificateNum()));
128 177 temp.put("username", archiveModel.getUsername());
129 178 temp.put("phone", StringUtils.encryPhone(archiveModel.getPhone()));
130 179 temp.put("age", DateUtil.getAge(archiveModel.getBirthday()));
131   - temp.put("resident", 1); // 妇女建档
132 180 temp.put("residentDate", DateUtil.getyyyy_MM_dd(archiveModel.getBuildDay())); // 妇女建档日期
133   - temp.put("check", mongoTemplate.count(Query.query(Criteria.where("certificateNum").is(archiveModel.getCertificateNum()).and("yn").is(1)), PremaritalCheckup.class) > 0L ? 1 : isResidentsArchive(archiveModel.getId())); // 婚检
134   - temp.put("bookbuild", 3); // 孕期建档 1=勾勾 2=叉叉
135   - temp.put("bookbuildDate", "--");
136   - temp.put("yj", 3);
137   - temp.put("yjcount", 0); // 孕检次数 = 初诊 + 复诊
138   - temp.put("cqsc", 3); // 产前筛查 1=勾勾 2=叉叉
139   - temp.put("fm", 3); // 分娩 1=勾勾 2=叉叉
140   - temp.put("fmType", "--"); // 分娩方式
141   - temp.put("chfc", 3); // 产后复查 1=勾勾 2=叉叉
142   - temp.put("chfcCount", 0); // 复查次数
143   - archiveModelCount++;
144 181 archiveModelList.add(temp);
145 182 }
  183 + return archiveModelList;
  184 + }
146 185  
147   - // 处理分页
148   - if (restList.size() < limit) {
149   - int count = limit - restList.size();
150   - if (archiveModelList.size() <= count) {
151   - restList.addAll(archiveModelList);
152   - } else {
153   - restList.addAll(archiveModelList.subList(0, count));
  186 + private List<Map<String, Object>> getPatientMainData(List<Patients> patients) {
  187 + List<Map<String, Object>> restList = new ArrayList<>();
  188 + for (Patients patient : patients) { // type: 1=孕期 3=产后
  189 + Map<String, Object> temp = new HashMap<>();
  190 + temp.put("bookbuild", 1);
  191 + temp.put("cqsc", 3);//产前筛查默认空白
  192 + temp.put("fm", 3);//分娩空白
  193 + temp.put("chfc", 3);//产后复查空白
  194 +
  195 + //婚检查询
  196 + Long checkNum = mongoTemplate.count(Query.query(Criteria.where("certificateNum").is(patient.getCardNo()).and("yn").is(1)), PremaritalCheckup.class);
  197 + temp.put("check", checkNum>0?1:2); // 婚检 1=勾勾 2=叉叉
  198 +
  199 + //妇女查询条件
  200 + ResidentsArchiveQuery query = new ResidentsArchiveQuery();
  201 + query.setYn(YnEnums.YES.getId());
  202 + query.setQueryNo(patient.getCardNo());
  203 + query.setHospitalId(patient.getHospitalId());
  204 + //妇女建档主数据
  205 + List<ResidentsArchiveModel> residentCount = residentsArchiveService.queryResident(query);
  206 + if(CollectionUtils.isNotEmpty(residentCount)){
  207 + ResidentsArchiveModel residentsArchiveModel = residentCount.get(0);
  208 + temp.put("resident", 1); // 妇女建档
  209 + temp.put("residentDate", DateUtil.getyyyy_MM_dd(residentsArchiveModel.getBuildDay())); // 妇女建档日期
  210 + }else{
  211 + temp.put("resident", 2); // 妇女建档
154 212 }
  213 + temp.put("id", patient.getId());
  214 + temp.put("cardNo", patient.getCardNo());
  215 + temp.put("username", patient.getUsername());
  216 + temp.put("phone", patient.getPhone());
  217 + temp.put("age", DateUtil.getAge(patient.getBirth()));
  218 + //建档时间
  219 + temp.put("bookbuildDate", DateUtil.getyyyy_MM_dd(patient.getBookbuildingDate()));
  220 + temp.put("bookbuild", 1); // 孕期建档 1=勾勾 2=叉叉
  221 + temp.put("bookbuildDate", patient.getBookbuildingDate());
  222 +
  223 + //已分娩
  224 + if (patient.getType() == 3) {
  225 + temp.put("fm", 1); // 孕期建档 1=勾勾 2=叉叉
  226 + temp.put("fmType", patient.getFmType()); // 分娩方式 1: 顺产,2:剖宫产
  227 + }
  228 +
  229 + AntExRecordQuery antExRecordQuery = new AntExRecordQuery();
  230 + antExRecordQuery.setParentId(patient.getId());
  231 + temp.put("yjcount", recordService.count(antExRecordQuery)); // 孕检次数
  232 +
  233 + //产后复查
  234 + PostReviewQuery postReviewQuery = new PostReviewQuery();
  235 + postReviewQuery.setParentId(patient.getId());
  236 + postReviewQuery.setYn(YnEnums.YES.getId());
  237 + Integer postInt = postReviewService.count(postReviewQuery);
  238 + if (postInt > 0) {//大于0
  239 + temp.put("chfc", 1);
  240 + } else if(patient.getType() == 3){
  241 + temp.put("chfc", 2);
  242 + }
  243 + temp.put("chfcCount", postInt); // 复查次数
  244 +
  245 + SieveResultQuery sieveResultQuery = new SieveResultQuery();
  246 + sieveResultQuery.setParentId(patient.getId());
  247 + List<SieveResultModel> sb = sieveService.queryListSieveResult(sieveResultQuery);
  248 + if (CollectionUtils.isNotEmpty(sb)) {
  249 + temp.put("cqsc", 1);//产前筛查
  250 + } else if (patient.getType() == 3) {
  251 + {//已经分娩,就是X
  252 + temp.put("cqsc", 2);//产前筛查
  253 + }
  254 + }
  255 + restList.add(temp);
155 256 }
156   - return RespBuilder.buildSuccess("tabList", new PageResult(mongoPage.getCount() + archiveModelCount, page, limit, doPage ? CollectionUtils.getPageIds(restList, page, limit) : restList));
  257 + return restList;
157 258 }
158 259  
159 260 private int isExitTrackDown(String parentId, TrackDownDateEnums trackDownDateEnums) {
... ... @@ -226,7 +327,7 @@
226 327 }
227 328 if (TrackDownDateEnums.A.getId() == trackDown.getTrackDownDateType()
228 329 && "5d0b782f-b61b-441b-b8c5-4bf55eece273".equals(trackDownRecord.getSex())
229   - &&TrackDownTransferEnums.B.getId() == trackDown.getTrackDownTransfer()) {//性别男:特殊处理,流转到下一流程时结束流程
  330 + && TrackDownTransferEnums.B.getId() == trackDown.getTrackDownTransfer()) {//性别男:特殊处理,流转到下一流程时结束流程
230 331 trackDown.setTrackDownTransfer(TrackDownTransferEnums.C.getId());
231 332 }
232 333 }
... ... @@ -278,7 +379,8 @@
278 379 private ResidentsArchiveService residentsArchiveService;
279 380  
280 381 @Override
281   - public BaseObjectResponse list(String provinceId, String cityId, String areaId, String streetId, String key, Integer trackType, Integer page, Integer limit, Integer userId) {
  382 + public BaseObjectResponse list(String provinceId, String cityId, String areaId, String streetId, String
  383 + key, Integer trackType, Integer page, Integer limit, Integer userId) {
282 384 PageResult pageResult = null;
283 385 String hospitalId = autoMatchFacade.getHospitalId(userId);
284 386 Criteria patientCriteria = new Criteria();
... ... @@ -547,7 +649,8 @@
547 649 }
548 650  
549 651 @Override
550   - public void export(String provinceId, String cityId, String areaId, String streetId, String key, Integer trackType, Integer userId, HttpServletResponse response) {
  652 + public void export(String provinceId, String cityId, String areaId, String streetId, String key, Integer
  653 + trackType, Integer userId, HttpServletResponse response) {
551 654 BaseObjectResponse rest = list(provinceId, cityId, areaId, streetId, key, trackType, 1, 20, userId);
552 655 PageResult pageResult = (PageResult) rest.getData();
553 656 List<Map<String, Object>> datas = (List<Map<String, Object>>) pageResult.getGrid();