diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java index 238483c..14c682b 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java @@ -22,6 +22,7 @@ import com.lyms.platform.operate.web.request.BabyGuideSmsequest; import com.lyms.platform.operate.web.request.BabyManageRequest; import com.lyms.platform.operate.web.request.BookbuildingQueryRequest; import com.lyms.platform.operate.web.result.*; +import com.lyms.platform.operate.web.service.BabyAfterVisitService; import com.lyms.platform.operate.web.service.ITrackDownService; import com.lyms.platform.operate.web.utils.BabyListTask; import com.lyms.platform.operate.web.utils.CommonsHelper; @@ -49,6 +50,9 @@ import java.util.concurrent.Callable; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; +import static com.lyms.platform.operate.web.service.BabyAfterVisitService.*; +import static com.lyms.platform.operate.web.service.BabyAfterVisitService.STATUS_TYPE_YES; + /** * */ @@ -176,6 +180,9 @@ public class BabyBookbuildingFacade { @Autowired private TrackDownRecordService trackDownRecordService; + @Autowired + private BabyAfterVisitService babyAfterVisitService; + public BaseResponse getBabyBase(String babyId) { //查询儿童的基本信息 BabyBasicResult base = new BabyBasicResult(); @@ -471,6 +478,13 @@ public class BabyBookbuildingFacade { babyBookbuildingService.updateBabyBuild(model, request.getId()); + // 更新追访概况,作废档案转正 + babyAfterVisitService.addOrUpdateAfterVisitData(model, TYPE_STATISTICS, STATUS_TYPE_BUILD); + babyAfterVisitService.addOrUpdateAfterVisitData(model, TYPE_BUILD, STATUS_TYPE_NO); + // 新增儿保追访和眼保追访 + babyAfterVisitService.addOrUpdateAfterVisitData(model, TYPE_CHECK, STATUS_TYPE_YES); + babyAfterVisitService.addOrUpdateAfterVisitData(model, TYPE_EYE_CHECK, STATUS_TYPE_YES); + handleBabyDiangose(request.getBlNo(), hid); model.setId(request.getId()); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java index 6901471..9e1462d 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java @@ -16,6 +16,7 @@ import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.common.utils.*; import com.lyms.platform.operate.web.request.*; import com.lyms.platform.operate.web.result.*; +import com.lyms.platform.operate.web.service.BabyAfterVisitService; import com.lyms.platform.operate.web.service.ITrackDownService; import com.lyms.platform.operate.web.utils.CommonsHelper; import com.lyms.platform.operate.web.utils.UnitConstants; @@ -60,6 +61,8 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; +import static com.lyms.platform.operate.web.service.BabyAfterVisitService.*; + /** * 分娩记录信息 *

@@ -157,6 +160,9 @@ public class MatDeliverFacade { @Autowired private MongoTemplate mongoTemplate; + @Autowired + private BabyAfterVisitService babyAfterVisitService; + static { ONE_ENUMS.put(0, "长"); ONE_ENUMS.put(1, "次"); @@ -1137,6 +1143,10 @@ public class MatDeliverFacade { babyIds.add(babyService.addOneBaby(babyModel).getId()); baby1.setId(babyModel.getId()); + // 添加到追访概况、档案转正中 + babyAfterVisitService.addOrUpdateAfterVisitData(babyModel, TYPE_STATISTICS, STATUS_TYPE_TEMPORARY_DOCUMENT); + babyAfterVisitService.addOrUpdateAfterVisitData(babyModel, TYPE_BUILD, STATUS_TYPE_YES); + // //儿童分娩自动建档开通增值服务 // if (babyModel.getServiceType() != null && ) { // PatientService patientService = new PatientService(); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/BabyAfterVisitService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/BabyAfterVisitService.java index c036db3..52442d5 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/BabyAfterVisitService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/BabyAfterVisitService.java @@ -1,5 +1,6 @@ package com.lyms.platform.operate.web.service; +import com.lyms.platform.common.result.BaseModel; import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.operate.web.request.BabyAfterVisitBuildListRequest; import com.lyms.platform.operate.web.request.BabyAfterVisitInfoDetailListRequest; @@ -17,10 +18,23 @@ import java.util.concurrent.ExecutionException; */ public interface BabyAfterVisitService { - /**档案转正、儿保检查、眼保检查*/ + /**追访概况、档案转正、儿保检查、眼保检查*/ + public static final Integer TYPE_STATISTICS = 0; public static final Integer TYPE_BUILD = 1; public static final Integer TYPE_CHECK = 2; public static final Integer TYPE_EYE_CHECK = 3; + + /**状态:正常*/ + public static final Integer STATUS_TYPE_YES = 1; + /**状态:作废*/ + public static final Integer STATUS_TYPE_NO = 2; + /**状态:预建档/临时建档*/ + public static final Integer STATUS_TYPE_TEMPORARY_DOCUMENT = 4; + /**状态:正式建档/已建档*/ + public static final Integer STATUS_TYPE_BUILD= 1; + + + public static final String BABY_ID = "babyId"; public static final String POSITIVE_PROJECT_TYPE = "yang"; @@ -71,4 +85,13 @@ public interface BabyAfterVisitService { * @return */ BaseResponse stopAfterVisitInfo(BabyAfterVisitInfoDetailListRequest request); + + /** + * 在产妇分娩、 + * + * @param model BabyAfterVisitStatisticsModel or BabyAfterVisitInfoModel + * @param type 0-追访概况、1-档案转正、2-儿保检查、3-眼保检查 + * @param statusType 1- 状态:正常 2-状态:作废 4-状态:预建档/临时建档 1-状态:正式建档/已建档 + */ + void addOrUpdateAfterVisitData(BaseModel model, Integer type, Integer statusType); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyAfterVisitServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyAfterVisitServiceImpl.java index 5223aaf..2cc9715 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyAfterVisitServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyAfterVisitServiceImpl.java @@ -6,6 +6,7 @@ import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.enums.SexEnum; import com.lyms.platform.common.enums.TrackDownTransferEnums; import com.lyms.platform.common.result.BaseListResponse; +import com.lyms.platform.common.result.BaseModel; import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.common.utils.*; import com.lyms.platform.operate.web.request.BabyAfterVisitBuildListRequest; @@ -21,7 +22,6 @@ import com.lyms.platform.permission.dao.master.BabyPatientExtendEarScreenMapper; import com.lyms.platform.permission.dao.master.MasterUsersMapper; import com.lyms.platform.permission.model.Users; import com.lyms.platform.pojo.*; -import com.mongodb.WriteResult; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; @@ -53,9 +53,6 @@ public class BabyAfterVisitServiceImpl implements BabyAfterVisitService { private BabyPatientExtendEarScreenMapper screenMapper; @Autowired - private BabyEyeCheckMapper babyEyeCheckMapper; - - @Autowired MasterUsersMapper usersMapper; /** @@ -249,6 +246,8 @@ public class BabyAfterVisitServiceImpl implements BabyAfterVisitService { return statisticsModels.size(); } + + /** * 档案转正列表 * @@ -424,11 +423,7 @@ public class BabyAfterVisitServiceImpl implements BabyAfterVisitService { * @throws ExecutionException * @throws InterruptedException */ - private void setSyncAfterVisitInfoList(List eyeIds, List ids , - List infoModels, - BabyAfterVisitRequest afterVisitQuery, - Integer type, - Date startDate, Date endDate) throws ExecutionException, InterruptedException { + private void setSyncAfterVisitInfoList(List eyeIds, List ids , List infoModels, BabyAfterVisitRequest afterVisitQuery, Integer type, Date startDate, Date endDate) throws ExecutionException, InterruptedException { Query query = new Query(); query.addCriteria(Criteria.where("created").gte(startDate).lte(endDate)); long count = 0L; @@ -560,6 +555,79 @@ public class BabyAfterVisitServiceImpl implements BabyAfterVisitService { } } + + /** + * 在产妇分娩(MatDeliverFacade)、儿童建档(BabyBookbuildingFacade) + * + * @param model BabyAfterVisitStatisticsModel or BabyAfterVisitInfoModel + * @param type 0-追访概况、1-档案转正、2-儿保检查、3-眼保检查 + * @param statusType 1- 状态:正常 2-状态:作废 4-状态:预建档/临时建档 1-状态:正式建档/已建档 + */ + public void addOrUpdateAfterVisitData(BaseModel model, Integer type, Integer statusType){ + try { + ExecutorService service = new ThreadPoolExecutor(1, 1, 0, TimeUnit.MILLISECONDS, + new ArrayBlockingQueue(1), + new RejectedExecutionHandler() { + @Override + public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { + System.out.println("请稍后尝试"); + } + }); + List models = new ArrayList<>(); + BabyModel babyModel = (BabyModel) model; + String babyModelId = babyModel.getId(); + babyModel = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(babyModelId)), BabyModel.class); + models.add(babyModel); + + // addOrUpdate + if (Objects.equals(TYPE_STATISTICS, type)) { + + if (Objects.equals(STATUS_TYPE_BUILD, statusType)) { + + // 将追访概况中的建档状态由临时建档改为正式建档 + Query query = Query.query(Criteria.where(BABY_ID).is(babyModelId)); + boolean exists = mongoTemplate.exists(Query.query(Criteria.where(BABY_ID).is(babyModelId).and("highRiskType").ne(STATUS_TYPE_BUILD)), BabyAfterVisitStatisticsModel.class); + if (exists) { + mongoTemplate.updateFirst(query, Update.update("highRiskType", STATUS_TYPE_BUILD), BabyAfterVisitStatisticsModel.class); + } + } + if (Objects.equals(STATUS_TYPE_TEMPORARY_DOCUMENT, statusType)) { + + // 新增数据 + Future> listFuture = service.submit(new BabyAfterVisitStatisticsModelWork(models, mongoTemplate, screenMapper)); + List statisticsModels = listFuture.get(); + mongoTemplate.insert(statisticsModels, BabyAfterVisitStatisticsModel.class); + } + logger.info("已更新到追访概况中"); + + } + + // addOrUpdate + if (Objects.equals(TYPE_BUILD, type) || Objects.equals(TYPE_CHECK, type) || Objects.equals(TYPE_EYE_CHECK, type)) { + if (Objects.equals(STATUS_TYPE_NO, statusType)) { + + // 将状态正常更新为作废 + String typeStr = type.toString(); + Query query = Query.query(Criteria.where(BABY_ID).is(babyModelId).and("type").is(typeStr)); + boolean exists = mongoTemplate.exists(Query.query(Criteria.where(BABY_ID).is(babyModelId).and("type").is(typeStr).and("yn").ne(STATUS_TYPE_NO)), BabyAfterVisitInfoModel.class); + if (exists) { + mongoTemplate.updateFirst(query, Update.update("yn", STATUS_TYPE_NO), BabyAfterVisitInfoModel.class); + } + } + if (Objects.equals(STATUS_TYPE_YES, statusType)) { + + // 新增数据 + Future> listFuture = service.submit(new BabyAfterVisitInfoModelWork(models, mongoTemplate, type)); + List infoModels = listFuture.get(); + mongoTemplate.insert(infoModels, BabyAfterVisitInfoModel.class); + } + logger.info("已自动添加到追访列表中"); + } + } catch (Exception e) { + e.printStackTrace(); + logger.error("追访失败",e); + } + } /** * 档案转正/儿保检查/眼保检查/听力筛查 - 新增追访记录 * diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BabyAfterVisitStatisticsModelWork.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BabyAfterVisitStatisticsModelWork.java index 39beea9..72f040e 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BabyAfterVisitStatisticsModelWork.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BabyAfterVisitStatisticsModelWork.java @@ -27,10 +27,13 @@ public class BabyAfterVisitStatisticsModelWork implements Callable babyModels; - public BabyAfterVisitStatisticsModelWork(final List babyModels, final MongoTemplate mongoTemplate, final BabyPatientExtendEarScreenMapper screenMapper) { + public BabyAfterVisitStatisticsModelWork(final List babyModels, + final MongoTemplate mongoTemplate, + final BabyPatientExtendEarScreenMapper screenMapper) { this.babyModels = babyModels; this.mongoTemplate = mongoTemplate; this.screenMapper = screenMapper; + } /** @@ -45,9 +48,9 @@ public class BabyAfterVisitStatisticsModelWork implements Callable