Commit f8f06ffd0a6e0d10c8aa6ce2232c606556925e00

Authored by dongqin
1 parent 0fc6c4f34c
Exists in master and in 1 other branch dev

实时添加追访记录

Showing 5 changed files with 133 additions and 16 deletions

platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java View file @ f8f06ff
... ... @@ -22,6 +22,7 @@
22 22 import com.lyms.platform.operate.web.request.BabyManageRequest;
23 23 import com.lyms.platform.operate.web.request.BookbuildingQueryRequest;
24 24 import com.lyms.platform.operate.web.result.*;
  25 +import com.lyms.platform.operate.web.service.BabyAfterVisitService;
25 26 import com.lyms.platform.operate.web.service.ITrackDownService;
26 27 import com.lyms.platform.operate.web.utils.BabyListTask;
27 28 import com.lyms.platform.operate.web.utils.CommonsHelper;
... ... @@ -49,6 +50,9 @@
49 50 import java.util.concurrent.Future;
50 51 import java.util.concurrent.TimeUnit;
51 52  
  53 +import static com.lyms.platform.operate.web.service.BabyAfterVisitService.*;
  54 +import static com.lyms.platform.operate.web.service.BabyAfterVisitService.STATUS_TYPE_YES;
  55 +
52 56 /**
53 57 *
54 58 */
... ... @@ -176,6 +180,9 @@
176 180 @Autowired
177 181 private TrackDownRecordService trackDownRecordService;
178 182  
  183 + @Autowired
  184 + private BabyAfterVisitService babyAfterVisitService;
  185 +
179 186 public BaseResponse getBabyBase(String babyId) {
180 187 //查询儿童的基本信息
181 188 BabyBasicResult base = new BabyBasicResult();
... ... @@ -470,6 +477,13 @@
470 477  
471 478  
472 479 babyBookbuildingService.updateBabyBuild(model, request.getId());
  480 +
  481 + // 更新追访概况,作废档案转正
  482 + babyAfterVisitService.addOrUpdateAfterVisitData(model, TYPE_STATISTICS, STATUS_TYPE_BUILD);
  483 + babyAfterVisitService.addOrUpdateAfterVisitData(model, TYPE_BUILD, STATUS_TYPE_NO);
  484 + // 新增儿保追访和眼保追访
  485 + babyAfterVisitService.addOrUpdateAfterVisitData(model, TYPE_CHECK, STATUS_TYPE_YES);
  486 + babyAfterVisitService.addOrUpdateAfterVisitData(model, TYPE_EYE_CHECK, STATUS_TYPE_YES);
473 487  
474 488 handleBabyDiangose(request.getBlNo(), hid);
475 489  
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java View file @ f8f06ff
... ... @@ -16,6 +16,7 @@
16 16 import com.lyms.platform.common.utils.*;
17 17 import com.lyms.platform.operate.web.request.*;
18 18 import com.lyms.platform.operate.web.result.*;
  19 +import com.lyms.platform.operate.web.service.BabyAfterVisitService;
19 20 import com.lyms.platform.operate.web.service.ITrackDownService;
20 21 import com.lyms.platform.operate.web.utils.CommonsHelper;
21 22 import com.lyms.platform.operate.web.utils.UnitConstants;
... ... @@ -60,6 +61,8 @@
60 61 import java.util.concurrent.locks.Lock;
61 62 import java.util.concurrent.locks.ReentrantLock;
62 63  
  64 +import static com.lyms.platform.operate.web.service.BabyAfterVisitService.*;
  65 +
63 66 /**
64 67 * 分娩记录信息
65 68 * <p>
... ... @@ -157,6 +160,9 @@
157 160 @Autowired
158 161 private MongoTemplate mongoTemplate;
159 162  
  163 + @Autowired
  164 + private BabyAfterVisitService babyAfterVisitService;
  165 +
160 166 static {
161 167 ONE_ENUMS.put(0, "长");
162 168 ONE_ENUMS.put(1, "次");
... ... @@ -1136,6 +1142,10 @@
1136 1142  
1137 1143 babyIds.add(babyService.addOneBaby(babyModel).getId());
1138 1144 baby1.setId(babyModel.getId());
  1145 +
  1146 + // 添加到追访概况、档案转正中
  1147 + babyAfterVisitService.addOrUpdateAfterVisitData(babyModel, TYPE_STATISTICS, STATUS_TYPE_TEMPORARY_DOCUMENT);
  1148 + babyAfterVisitService.addOrUpdateAfterVisitData(babyModel, TYPE_BUILD, STATUS_TYPE_YES);
1139 1149  
1140 1150 // //儿童分娩自动建档开通增值服务
1141 1151 // if (babyModel.getServiceType() != null && ) {
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/BabyAfterVisitService.java View file @ f8f06ff
1 1 package com.lyms.platform.operate.web.service;
2 2  
  3 +import com.lyms.platform.common.result.BaseModel;
3 4 import com.lyms.platform.common.result.BaseResponse;
4 5 import com.lyms.platform.operate.web.request.BabyAfterVisitBuildListRequest;
5 6 import com.lyms.platform.operate.web.request.BabyAfterVisitInfoDetailListRequest;
6 7  
... ... @@ -17,10 +18,23 @@
17 18 */
18 19 public interface BabyAfterVisitService {
19 20  
20   - /**档案转正、儿保检查、眼保检查*/
  21 + /**追访概况、档案转正、儿保检查、眼保检查*/
  22 + public static final Integer TYPE_STATISTICS = 0;
21 23 public static final Integer TYPE_BUILD = 1;
22 24 public static final Integer TYPE_CHECK = 2;
23 25 public static final Integer TYPE_EYE_CHECK = 3;
  26 +
  27 + /**状态:正常*/
  28 + public static final Integer STATUS_TYPE_YES = 1;
  29 + /**状态:作废*/
  30 + public static final Integer STATUS_TYPE_NO = 2;
  31 + /**状态:预建档/临时建档*/
  32 + public static final Integer STATUS_TYPE_TEMPORARY_DOCUMENT = 4;
  33 + /**状态:正式建档/已建档*/
  34 + public static final Integer STATUS_TYPE_BUILD= 1;
  35 +
  36 +
  37 +
24 38 public static final String BABY_ID = "babyId";
25 39 public static final String POSITIVE_PROJECT_TYPE = "yang";
26 40  
... ... @@ -71,5 +85,14 @@
71 85 * @return
72 86 */
73 87 BaseResponse stopAfterVisitInfo(BabyAfterVisitInfoDetailListRequest request);
  88 +
  89 + /**
  90 + * 在产妇分娩、
  91 + *
  92 + * @param model BabyAfterVisitStatisticsModel or BabyAfterVisitInfoModel
  93 + * @param type 0-追访概况、1-档案转正、2-儿保检查、3-眼保检查
  94 + * @param statusType 1- 状态:正常 2-状态:作废 4-状态:预建档/临时建档 1-状态:正式建档/已建档
  95 + */
  96 + void addOrUpdateAfterVisitData(BaseModel model, Integer type, Integer statusType);
74 97 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyAfterVisitServiceImpl.java View file @ f8f06ff
... ... @@ -6,6 +6,7 @@
6 6 import com.lyms.platform.common.enums.SexEnum;
7 7 import com.lyms.platform.common.enums.TrackDownTransferEnums;
8 8 import com.lyms.platform.common.result.BaseListResponse;
  9 +import com.lyms.platform.common.result.BaseModel;
9 10 import com.lyms.platform.common.result.BaseResponse;
10 11 import com.lyms.platform.common.utils.*;
11 12 import com.lyms.platform.operate.web.request.BabyAfterVisitBuildListRequest;
... ... @@ -21,7 +22,6 @@
21 22 import com.lyms.platform.permission.dao.master.MasterUsersMapper;
22 23 import com.lyms.platform.permission.model.Users;
23 24 import com.lyms.platform.pojo.*;
24   -import com.mongodb.WriteResult;
25 25 import org.apache.log4j.Logger;
26 26 import org.springframework.beans.factory.annotation.Autowired;
27 27 import org.springframework.data.domain.Sort;
... ... @@ -53,9 +53,6 @@
53 53 private BabyPatientExtendEarScreenMapper screenMapper;
54 54  
55 55 @Autowired
56   - private BabyEyeCheckMapper babyEyeCheckMapper;
57   -
58   - @Autowired
59 56 MasterUsersMapper usersMapper;
60 57  
61 58 /**
... ... @@ -249,6 +246,8 @@
249 246 return statisticsModels.size();
250 247 }
251 248  
  249 +
  250 +
252 251 /**
253 252 * 档案转正列表
254 253 *
... ... @@ -424,11 +423,7 @@
424 423 * @throws ExecutionException
425 424 * @throws InterruptedException
426 425 */
427   - private void setSyncAfterVisitInfoList(List<String> eyeIds, List<String> ids ,
428   - List<BabyAfterVisitInfoModel> infoModels,
429   - BabyAfterVisitRequest afterVisitQuery,
430   - Integer type,
431   - Date startDate, Date endDate) throws ExecutionException, InterruptedException {
  426 + private void setSyncAfterVisitInfoList(List<String> eyeIds, List<String> ids , List<BabyAfterVisitInfoModel> infoModels, BabyAfterVisitRequest afterVisitQuery, Integer type, Date startDate, Date endDate) throws ExecutionException, InterruptedException {
432 427 Query query = new Query();
433 428 query.addCriteria(Criteria.where("created").gte(startDate).lte(endDate));
434 429 long count = 0L;
... ... @@ -560,6 +555,79 @@
560 555 }
561 556 }
562 557  
  558 +
  559 + /**
  560 + * 在产妇分娩(MatDeliverFacade)、儿童建档(BabyBookbuildingFacade)
  561 + *
  562 + * @param model BabyAfterVisitStatisticsModel or BabyAfterVisitInfoModel
  563 + * @param type 0-追访概况、1-档案转正、2-儿保检查、3-眼保检查
  564 + * @param statusType 1- 状态:正常 2-状态:作废 4-状态:预建档/临时建档 1-状态:正式建档/已建档
  565 + */
  566 + public void addOrUpdateAfterVisitData(BaseModel model, Integer type, Integer statusType){
  567 + try {
  568 + ExecutorService service = new ThreadPoolExecutor(1, 1, 0, TimeUnit.MILLISECONDS,
  569 + new ArrayBlockingQueue<Runnable>(1),
  570 + new RejectedExecutionHandler() {
  571 + @Override
  572 + public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
  573 + System.out.println("请稍后尝试");
  574 + }
  575 + });
  576 + List<BabyModel> models = new ArrayList<>();
  577 + BabyModel babyModel = (BabyModel) model;
  578 + String babyModelId = babyModel.getId();
  579 + babyModel = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(babyModelId)), BabyModel.class);
  580 + models.add(babyModel);
  581 +
  582 + // addOrUpdate
  583 + if (Objects.equals(TYPE_STATISTICS, type)) {
  584 +
  585 + if (Objects.equals(STATUS_TYPE_BUILD, statusType)) {
  586 +
  587 + // 将追访概况中的建档状态由临时建档改为正式建档
  588 + Query query = Query.query(Criteria.where(BABY_ID).is(babyModelId));
  589 + boolean exists = mongoTemplate.exists(Query.query(Criteria.where(BABY_ID).is(babyModelId).and("highRiskType").ne(STATUS_TYPE_BUILD)), BabyAfterVisitStatisticsModel.class);
  590 + if (exists) {
  591 + mongoTemplate.updateFirst(query, Update.update("highRiskType", STATUS_TYPE_BUILD), BabyAfterVisitStatisticsModel.class);
  592 + }
  593 + }
  594 + if (Objects.equals(STATUS_TYPE_TEMPORARY_DOCUMENT, statusType)) {
  595 +
  596 + // 新增数据
  597 + Future<List<BabyAfterVisitStatisticsModel>> listFuture = service.submit(new BabyAfterVisitStatisticsModelWork(models, mongoTemplate, screenMapper));
  598 + List<BabyAfterVisitStatisticsModel> statisticsModels = listFuture.get();
  599 + mongoTemplate.insert(statisticsModels, BabyAfterVisitStatisticsModel.class);
  600 + }
  601 + logger.info("已更新到追访概况中");
  602 +
  603 + }
  604 +
  605 + // addOrUpdate
  606 + if (Objects.equals(TYPE_BUILD, type) || Objects.equals(TYPE_CHECK, type) || Objects.equals(TYPE_EYE_CHECK, type)) {
  607 + if (Objects.equals(STATUS_TYPE_NO, statusType)) {
  608 +
  609 + // 将状态正常更新为作废
  610 + String typeStr = type.toString();
  611 + Query query = Query.query(Criteria.where(BABY_ID).is(babyModelId).and("type").is(typeStr));
  612 + boolean exists = mongoTemplate.exists(Query.query(Criteria.where(BABY_ID).is(babyModelId).and("type").is(typeStr).and("yn").ne(STATUS_TYPE_NO)), BabyAfterVisitInfoModel.class);
  613 + if (exists) {
  614 + mongoTemplate.updateFirst(query, Update.update("yn", STATUS_TYPE_NO), BabyAfterVisitInfoModel.class);
  615 + }
  616 + }
  617 + if (Objects.equals(STATUS_TYPE_YES, statusType)) {
  618 +
  619 + // 新增数据
  620 + Future<List<BabyAfterVisitInfoModel>> listFuture = service.submit(new BabyAfterVisitInfoModelWork(models, mongoTemplate, type));
  621 + List<BabyAfterVisitInfoModel> infoModels = listFuture.get();
  622 + mongoTemplate.insert(infoModels, BabyAfterVisitInfoModel.class);
  623 + }
  624 + logger.info("已自动添加到追访列表中");
  625 + }
  626 + } catch (Exception e) {
  627 + e.printStackTrace();
  628 + logger.error("追访失败",e);
  629 + }
  630 + }
563 631 /**
564 632 * 档案转正/儿保检查/眼保检查/听力筛查 - 新增追访记录
565 633 *
platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BabyAfterVisitStatisticsModelWork.java View file @ f8f06ff
... ... @@ -27,10 +27,13 @@
27 27 private MongoTemplate mongoTemplate;
28 28 private BabyPatientExtendEarScreenMapper screenMapper;
29 29 private List<BabyModel> babyModels;
30   - public BabyAfterVisitStatisticsModelWork(final List<BabyModel> babyModels, final MongoTemplate mongoTemplate, final BabyPatientExtendEarScreenMapper screenMapper) {
  30 + public BabyAfterVisitStatisticsModelWork(final List<BabyModel> babyModels,
  31 + final MongoTemplate mongoTemplate,
  32 + final BabyPatientExtendEarScreenMapper screenMapper) {
31 33 this.babyModels = babyModels;
32 34 this.mongoTemplate = mongoTemplate;
33 35 this.screenMapper = screenMapper;
  36 +
34 37 }
35 38  
36 39 /**
37 40  
... ... @@ -45,9 +48,9 @@
45 48 for (BabyModel babyModel : babyModels) {
46 49 String id = babyModel.getId();
47 50 Query buildQuery = Query.query(Criteria.where("buildId").is(id));
48   - Query BabyQuery = Query.query(Criteria.where("babyId").is(id));
  51 + Query babyQuery = Query.query(Criteria.where("babyId").is(id));
49 52  
50   - boolean exists = mongoTemplate.exists(buildQuery, BabyAfterVisitStatisticsModel.class);
  53 + boolean exists = mongoTemplate.exists(babyQuery, BabyAfterVisitStatisticsModel.class);
51 54 if (!exists) {
52 55 BabyAfterVisitStatisticsModel babyAfterVisitStatisticsModel = new BabyAfterVisitStatisticsModel();
53 56 statisticsModelList.add(babyAfterVisitStatisticsModel);
54 57  
55 58  
... ... @@ -69,15 +72,14 @@
69 72 long checkCount = mongoTemplate.count(buildQuery, BabyCheckModel.class);
70 73 babyAfterVisitStatisticsModel.setCheckSize((int) checkCount);
71 74 // 眼保检查数
72   - long eyeCount = mongoTemplate.count(BabyQuery, BabyEyeCheck.class);
  75 + long eyeCount = mongoTemplate.count(babyQuery, BabyEyeCheck.class);
73 76 babyAfterVisitStatisticsModel.setEyeCheckSize((int) eyeCount);
74 77 // 听筛检查数
75   - BabyPatientExtendEarScreenQuery screenQuery = new BabyPatientExtendEarScreenQuery();
  78 + BabyPatientExtendEarScreenQuery screenQuery = new BabyPatientExtendEarScreenQuery();
76 79 screenQuery.setBabyIds(new String[]{id});
77 80 int screenCount = screenMapper.queryEarScreenListCount(screenQuery);
78 81 babyAfterVisitStatisticsModel.setHearCheckSize(screenCount);
79 82 }
80   -
81 83 }
82 84 return statisticsModelList;
83 85 }