Commit f8f06ffd0a6e0d10c8aa6ce2232c606556925e00
1 parent
0fc6c4f34c
Exists in
master
and in
6 other branches
实时添加追访记录
Showing 5 changed files with 133 additions and 16 deletions
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/BabyAfterVisitService.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyAfterVisitServiceImpl.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BabyAfterVisitStatisticsModelWork.java
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 | } |