From 799706fe7902185b6299ed89f085694ffb33397d Mon Sep 17 00:00:00 2001 From: yangfei Date: Wed, 7 Mar 2018 15:48:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=BD=E8=AE=BF=E6=A6=82=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/lyms/platform/pojo/Patients.java | 4 +- .../lyms/platform/pojo/ResidentsArchiveModel.java | 1 + .../lyms/platform/query/ResidentsArchiveQuery.java | 34 +++ .../lyms/platform/query/TrackDownRecordQuery.java | 8 +- .../web/controller/TrackDownController.java | 9 +- .../operate/web/facade/BookbuildingFacade.java | 6 + .../operate/web/facade/ResidentsArchiveFacade.java | 2 - .../operate/web/facade/TrackDownFacade.java | 20 +- .../operate/web/facade/TrackDownJobFacade.java | 23 +- .../operate/web/service/ITrackDownService.java | 2 +- .../web/service/impl/TrackDownServiceImpl.java | 295 ++++++++++++++------- 11 files changed, 284 insertions(+), 120 deletions(-) diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/Patients.java b/platform-dal/src/main/java/com/lyms/platform/pojo/Patients.java index 6f821c8..3b57247 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/Patients.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/Patients.java @@ -266,7 +266,7 @@ public class Patients extends BaseModel { private Integer gender; private Date birth; - //1孕妇 3 产妇 + //1孕妇 2儿童 3 产妇 private Integer type; private String foreignSubId; @@ -1166,6 +1166,7 @@ public class Patients extends BaseModel { TrackDownRecord downRecord = new TrackDownRecord(); downRecord.setParentId(getId()); downRecord.setPid(getPid()); + downRecord.setProvinceRegisterId(getProvinceRegisterId()); downRecord.setLastMenses(getLastMenses()); downRecord.setUsername(getUsername()); downRecord.setCityRegisterId(getCityRegisterId()); @@ -1175,7 +1176,6 @@ public class Patients extends BaseModel { downRecord.setAddressRegister(getAddressRegister()); downRecord.setPhone(getPhone()); downRecord.setStreetRegisterId(getStreetRegisterId()); - downRecord.setAreaRegisterId(getAreaRegisterId()); //默认值 downRecord.setHospitalId(getHospitalId()); downRecord.setSource(getId()); diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/ResidentsArchiveModel.java b/platform-dal/src/main/java/com/lyms/platform/pojo/ResidentsArchiveModel.java index 918ecce..2c3def0 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/ResidentsArchiveModel.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/ResidentsArchiveModel.java @@ -443,6 +443,7 @@ public class ResidentsArchiveModel extends BaseModel{ record.setCityRegisterId(getCityId()); record.setUsername(getUsername()); record.setStreetRegisterId(getStreetId()); + record.setProvinceRegisterId(getProvinceId()); record.setPhone(getPhone()); record.setHospitalId(getHospitalId()); record.setSource(getId()); diff --git a/platform-dal/src/main/java/com/lyms/platform/query/ResidentsArchiveQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/ResidentsArchiveQuery.java index 38b3f45..f03dbe8 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/ResidentsArchiveQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/ResidentsArchiveQuery.java @@ -87,6 +87,10 @@ public class ResidentsArchiveQuery extends BaseQuery implements IConvertToNative private String buildDoctor; //建档日期 private Date buildDay; + //建档开始日期 + private Date startBuildDay; + //建档结束日期 + private Date endBuildDay; /* table info */ @@ -210,6 +214,20 @@ public class ResidentsArchiveQuery extends BaseQuery implements IConvertToNative } } + if (null != startBuildDay) { + c1 = Criteria.where("buildDay").gte(startBuildDay); + } + + if (null != endBuildDay) { + if (null != c1) { + c1 = c1.lte(endBuildDay); + } else { + c1 = Criteria.where("buildDay").lte(endBuildDay); + } + } + + + if (StringUtils.isNotBlank(queryNo)) { MongoCondition c = MongoCondition.newInstance(); MongoCondition con1 = MongoCondition.newInstance("phone", queryNo, MongoOper.IS); @@ -231,6 +249,22 @@ public class ResidentsArchiveQuery extends BaseQuery implements IConvertToNative return condition.toMongoQuery(); } + public Date getStartBuildDay() { + return startBuildDay; + } + + public void setStartBuildDay(Date startBuildDay) { + this.startBuildDay = startBuildDay; + } + + public Date getEndBuildDay() { + return endBuildDay; + } + + public void setEndBuildDay(Date endBuildDay) { + this.endBuildDay = endBuildDay; + } + public List getHospitalIds() { return hospitalIds; } diff --git a/platform-dal/src/main/java/com/lyms/platform/query/TrackDownRecordQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/TrackDownRecordQuery.java index 902c876..2c5e08a 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/TrackDownRecordQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/TrackDownRecordQuery.java @@ -220,22 +220,22 @@ public class TrackDownRecordQuery extends BaseQuery implements IConvertToNativeQ } if (StringUtils.isNotEmpty(provinceId)) { - condition = condition.and("provinceId", provinceId, MongoOper.IS); + condition = condition.and("provinceRegisterId", provinceId, MongoOper.IS); } if (StringUtils.isNotEmpty(residentsArchiveId)) { condition = condition.and("residentsArchiveId", residentsArchiveId, MongoOper.IS); } if (StringUtils.isNotEmpty(cityId)) { - condition = condition.and("cityId", cityId, MongoOper.IS); + condition = condition.and("cityRegisterId", cityId, MongoOper.IS); } if (StringUtils.isNotEmpty(areaId)) { - condition = condition.and("areaId", areaId, MongoOper.IS); + condition = condition.and("areaRegisterId", areaId, MongoOper.IS); } if (StringUtils.isNotEmpty(hospitalId)) { condition = condition.and("hospitalId", hospitalId, MongoOper.IS); } if (StringUtils.isNotEmpty(streetId)) { - condition = condition.and("streetId", streetId, MongoOper.IS); + condition = condition.and("streetRegisterId", streetId, MongoOper.IS); } if (null != trackType) { condition = condition.and("trackType", trackType, MongoOper.IS); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TrackDownController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TrackDownController.java index ef36801..6f21e5f 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TrackDownController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TrackDownController.java @@ -15,6 +15,8 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Date; +import java.util.HashMap; +import java.util.Map; /** * 追访 @@ -47,8 +49,11 @@ public class TrackDownController extends BaseController { @ResponseBody @TokenRequired @RequestMapping(value = "/all", method = RequestMethod.GET) - 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) { - return trackDownService.all(buildStart, buildEnd, checkStart, checkEnd, fmStart, fmEnd, key, page, limit, getUserId(request)); + 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) { + Map map = new HashMap<>(); + + // downFacade.all(map); + return trackDownService.all(buildStart, buildEnd, checkStart, checkEnd, fmStart, fmEnd, key, page, limit, getUserId(request),type); } @ResponseBody diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java index 111ec51..e3ae700 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java @@ -413,6 +413,12 @@ public class BookbuildingFacade { trackDownRecord.setId(trackDownRecord1.getId()); } } + int week = DateUtil.getWeek2(patient.getLastMenses(),new Date()); + + if(week>20){//不能做产前筛查追访,产前检查追访 + trackDownRecord.setTrackType(TrackDownDateEnums.I.getId()); + } + trackDownService.addOrupdateTrackDownRecord(userId, trackDownRecord); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ResidentsArchiveFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ResidentsArchiveFacade.java index 4995f69..9dcecdf 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ResidentsArchiveFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ResidentsArchiveFacade.java @@ -587,9 +587,7 @@ public class ResidentsArchiveFacade{ * @return */ public BaseResponse queryResidentsArchives(ResidentsArchiveQueryRequest queryRequest,Integer userId,String need){ - List data = new ArrayList<>(); - String hospitalId = autoMatchFacade.getHospitalId(userId); //查询条件 diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java index a9a9700..723d097 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java @@ -5,6 +5,7 @@ import com.lyms.platform.common.enums.FmTypeEnums; import com.lyms.platform.common.enums.TrackDownDateEnums; import com.lyms.platform.common.enums.YnEnums; import com.lyms.platform.common.result.BaseObjectResponse; +import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.common.result.PageResult; import com.lyms.platform.common.result.RespBuilder; import com.lyms.platform.common.utils.DateUtil; @@ -45,6 +46,10 @@ import java.util.*; @Component public class TrackDownFacade { + + + + /** * 构建返回字段 */ @@ -109,12 +114,16 @@ public class TrackDownFacade { } /** - * 处理建档时候的追访功能 - * - * @param patients + * 追访概况备选方案 + * @param map + * @return */ - public void aop4Patient(Patients patients) { + public BaseResponse all(Map map) { + TrackDownRecordQuery query = new TrackDownRecordQuery(); + List trackDownRecords = trackDownRecordService.queryTrackDown(query); + + return new BaseResponse(); } /** @@ -252,7 +261,6 @@ public class TrackDownFacade { public BaseObjectResponse list(TrackDownQueryRequest downQueryRequest, Integer userId) { //转换为本地的查询条件 TrackDownRecordQuery downRecordQuery = convertNaviteQuery(downQueryRequest, userId); - List downRecordList = trackDownRecordService.queryTrackDown(downRecordQuery); List data = new ArrayList<>(); TrackDownTypeHandler downTypeHandler = trackDownTypeHandlerMap.get(downQueryRequest.getTrackType()); @@ -462,7 +470,7 @@ public class TrackDownFacade { } } //产检次数 - 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)); + 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)); Criteria criteria = Criteria.where("yn").is(1).and("parentId").is(downRecord.getParentId()); if (TrackDownDateEnums.C.getId() == downRecord.getTrackType()) { criteria.and("trackDownDateType").in(3, 9); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownJobFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownJobFacade.java index 4535534..c880f11 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownJobFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownJobFacade.java @@ -112,11 +112,11 @@ public class TrackDownJobFacade { @PostConstruct private void init() { //婚前检查数据加载 - downJobHandlers.add(new HJTrackDownDataLoader()); + // downJobHandlers.add(new HJTrackDownDataLoader()); //怀孕建档数据加载 // downJobHandlers.add(new HYTrackDownDataLoader()); //产检数据加载 - // downJobHandlers.add(new CJTrackDownDataLoader()); + downJobHandlers.add(new CJTrackDownDataLoader()); //分娩数据加载,有自动任务处理 // downJobHandlers.add(new FMTrackDownDataLoader()); //产后访视和产后复查的数据加载 产后访视和产后复查的规则一样 @@ -146,6 +146,7 @@ public class TrackDownJobFacade { public void execute() { int page = 0; List data = null; + do { PatientsQuery patientsQuery1 = new PatientsQuery(); patientsQuery1.setYn(YnEnums.YES.getId()); @@ -157,6 +158,7 @@ public class TrackDownJobFacade { //查询妇女建档 data = patientsService.queryPatient(patientsQuery1); + System.out.println("开始处理产检追访数据!一共"+patientsQuery1.getCount()+",当前第:"+page+"页"); if (CollectionUtils.isNotEmpty(data)) { for (Patients model : data) { handOneByOne(model); @@ -164,11 +166,14 @@ public class TrackDownJobFacade { } page++; } while (CollectionUtils.isNotEmpty(data) && data.size() == limit); + System.out.println("处理产检追访数据结束!"); } //孕妇档案生成产检追访 @Override public void handOneByOne(Patients model) { + + logger.info("CJTrackDownDataLoader addTrackDown by id :" + model.getId()); //添加产检追访信息 TrackDownRecord trackDownRecord = model.build(); //根据patient查询是否存在追访信息 @@ -191,6 +196,10 @@ public class TrackDownJobFacade { trackDownRecord.setId(trackDownRecord1.getId()); } } + int week = DateUtil.getWeek2(model.getLastMenses(),new Date()); + if(week>20){//不能做产前筛查追访,显示产前检查追访 + trackDownRecord.setTrackType(TrackDownDateEnums.I.getId()); + } trackDownService.addOrupdateTrackDownRecord(model.getOperator(), trackDownRecord); } } @@ -207,6 +216,7 @@ public class TrackDownJobFacade { public void execute() { int page = 0; List data = null; + System.out.println("开始处理怀孕建档追访数据!"); do { PremaritalCheckupQuery premaritalCheckupQuery = new PremaritalCheckupQuery(); premaritalCheckupQuery.setYn(YnEnums.YES.getId()); @@ -225,6 +235,7 @@ public class TrackDownJobFacade { } page++; } while (CollectionUtils.isNotEmpty(data) && data.size() == limit); + System.out.println("处理怀孕建档追访数据结束!"); } /** @@ -246,6 +257,8 @@ public class TrackDownJobFacade { ResidentsArchiveModel resid = residentsArchiveService.getResident(model.getParentId()); if (null != resid) { TrackDownRecord downRecord = resid.build(); + downRecord.setTrackType(TrackDownDateEnums.B.getId()); + TrackDownRecordQuery downRecordQuery = new TrackDownRecordQuery(); downRecordQuery.setSource(model.getId()); List records = trackDownRecordService.queryTrackDown(downRecordQuery); @@ -268,11 +281,7 @@ public class TrackDownJobFacade { downRecord.setId(trackDownRecord1.getId()); } } - //新增婚前检查,男的结束流程,女的进入怀孕建档) - if (downRecord.getSex().equals(SystemConfig.WOMAN_ID)) { - //新增婚检追访信息 - downRecord.setTrackType(TrackDownDateEnums.B.getId()); - } else if (downRecord.getSex().equals(SystemConfig.MAN_ID)) {//男结束流程 + if (downRecord.getSex().equals(SystemConfig.MAN_ID)) {//男结束流程 //新增婚检追访信息 downRecord.setStatus(0); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/ITrackDownService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/ITrackDownService.java index 80d4cf5..d9f9808 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/ITrackDownService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/ITrackDownService.java @@ -16,7 +16,7 @@ public interface ITrackDownService extends IBaseService { BaseObjectResponse list(String provinceId, String cityId, String areaId, String streetId, String key, Integer trackType, Integer page, Integer limit, Integer userId); - BaseObjectResponse all(Date buildStart, Date buildEnd, Date checkStart, Date checkEnd, Date fmStart, Date fmEnd, String key, Integer page, Integer limit, Integer userId); + BaseObjectResponse all(Date buildStart, Date buildEnd, Date checkStart, Date checkEnd, Date fmStart, Date fmEnd, String key, Integer page, Integer limit, Integer userId,Integer type); BaseObjectResponse info(String patientId, Integer trackType); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TrackDownServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TrackDownServiceImpl.java index f3e8cd1..c775613 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TrackDownServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TrackDownServiceImpl.java @@ -1,14 +1,12 @@ package com.lyms.platform.operate.web.service.impl; -import com.lyms.platform.biz.service.PatientsService; -import com.lyms.platform.biz.service.ResidentsArchiveService; -import com.lyms.platform.biz.service.TrackDownRecordService; -import com.lyms.platform.biz.service.TrackDownService; +import com.lyms.platform.biz.service.*; import com.lyms.platform.common.enums.*; import com.lyms.platform.common.result.*; import com.lyms.platform.common.utils.DateUtil; import com.lyms.platform.common.utils.EnumUtil; import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.common.utils.SystemConfig; import com.lyms.platform.operate.web.facade.AutoMatchFacade; import com.lyms.platform.operate.web.service.ITrackDownService; import com.lyms.platform.operate.web.utils.CollectionUtils; @@ -16,6 +14,7 @@ import com.lyms.platform.operate.web.utils.MongoUtil; import com.lyms.platform.operate.web.utils.ResponseUtil; import com.lyms.platform.permission.dao.master.CouponMapper; import com.lyms.platform.pojo.*; +import com.lyms.platform.query.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; @@ -44,116 +43,218 @@ public class TrackDownServiceImpl extends BaseServiceImpl implements ITrackDownS @Autowired private CouponMapper couponMapper; + @Autowired + private AntExRecordService recordService; + + @Autowired + private SieveService sieveService; + @Autowired + private PostReviewService postReviewService; + + /** + * @param buildStart + * @param buildEnd + * @param checkStart + * @param checkEnd + * @param fmStart + * @param fmEnd + * @param key + * @param page + * @param limit + * @param userId + * @param type 1-妇女建档、2-怀孕建档 + * @return + */ @Override - public BaseObjectResponse all(Date buildStart, Date buildEnd, Date checkStart, Date checkEnd, Date fmStart, Date fmEnd, String key, Integer page, Integer limit, Integer userId) { + 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) { String hospitalId = autoMatchFacade.getHospitalId(userId); - Criteria patientCriteria = new Criteria(); - Criteria residentCriteria = new Criteria(); - patientCriteria.and("yn").is(1).and("hospitalId").is(hospitalId); - residentCriteria.and("yn").is(1).and("hospitalId").is(hospitalId); - if (buildStart != null && buildEnd != null) { - residentCriteria.and("buildDay").gte(buildStart).lt(DateUtil.addDay(buildEnd, 1)); - } - if (checkStart != null && checkEnd != null) { - patientCriteria.and("bookbuildingDate").gte(checkStart).lt(DateUtil.addDay(checkEnd, 1)); - } - if (fmStart != null && fmEnd != null) { - patientCriteria.and("fmDate").gte(fmStart).lt(DateUtil.addDay(fmEnd, 1)); - } - if (StringUtils.isNotEmpty(key)) { - patientCriteria.orOperator(Criteria.where("phone").regex(key), Criteria.where("username").regex(key), Criteria.where("cardNo").is(key)); - residentCriteria.orOperator(Criteria.where("phone").regex(key), Criteria.where("username").regex(key), Criteria.where("certificateNum").is(key)); - } - PageResult mongoPage = findMongoPage(Patients.class, Query.query(patientCriteria).with(new Sort(Sort.Direction.DESC, "created")), page, limit); - List patients = (List) mongoPage.getGrid(); - boolean doPage = false; - if (patients.size() >= limit) { - patients = (List) mongoPage.getGrid(); - } else { - patients = mongoTemplate.find(Query.query(patientCriteria), Patients.class); - doPage = true; - } - List residentsArchiveModels = mongoTemplate.find(Query.query(residentCriteria), ResidentsArchiveModel.class); List> restList = new ArrayList<>(); - for (Patients patient : patients) { // type: 1=孕期 3=产后 - Map temp = new HashMap<>(); - temp.put("id", patient.getId()); - temp.put("cardNo", patient.getCardNo()); - temp.put("username", patient.getUsername()); - temp.put("phone", patient.getPhone()); - temp.put("age", DateUtil.getAge(patient.getBirth())); - // 孕期建档 1=勾勾 2=叉叉 3=空白 patient有数据>>勾勾 没有>有怀孕建档追访并且(流转至下一流程 or 结束所有流程)xx 没有就是空 - temp.put("bookbuild", 1); - temp.put("bookbuildDate", DateUtil.getyyyy_MM_dd(patient.getBookbuildingDate())); - - // 产检记录 > 0 勾勾 没有:有产前检查追访并且(流转至下一流程 or 结束所有流程)叉叉 - long yjCount = getChuzhenCount(patient.getId()); - temp.put("yj", yjCount > 0 ? 1 : isExitTrackDown(patient.getId(), TrackDownDateEnums.C)); - temp.put("yjcount", yjCount); // 孕检次数 = 初诊 + 复诊 - - // 产前筛查 有产晒记录>勾勾 没有: 有产前筛查追访并且流转至下一流程 勾勾 反之xx - 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)); - - // type=3 且(isAutoFm不为1,或者不存在)且dueStatus为0 没有: 有分娩住院追访并且流转至下一流程 勾勾 反之xx - 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=叉叉 - temp.put("fmType", FmTypeEnums.getFmNameById(patient.getFmType()) == null ? "--" : FmTypeEnums.getFmNameById(patient.getFmType())); // 分娩方式 - - // 产后复查 1=勾勾 2=叉叉 有产后复查记录>勾勾 没有: 有产后复查追访并且流转至下一流程 勾勾 反之xx - long chfcCount = mongoTemplate.count(Query.query(Criteria.where("parentId").is(patient.getId()).and("yn").is(1)), PostReviewModel.class); - temp.put("chfc", chfcCount > 0L ? 1 : isExitTrackDown(patient.getId(), TrackDownDateEnums.G)); - temp.put("chfcCount", chfcCount); // 复查次数 - + Integer archiveModelCount = 0; + if (type == 1) {//查询妇女建档为主数据 + //查询条件 + ResidentsArchiveQuery query = new ResidentsArchiveQuery(); + query.setLimit(limit); + query.setPage(page); + query.setNeed("1"); + query.setYn(YnEnums.YES.getId()); + query.setQueryNo(key); + query.setHospitalId(hospitalId); + //只查询女性 + query.setSex(SystemConfig.WOMAN_ID); + query.setStartBuildDay(buildStart); + query.setEndBuildDay(buildEnd); + //妇女建档主数据 + List modelList = residentsArchiveService.queryResident(query); + restList = getResidentMainData(modelList); + + archiveModelCount = query.getCount(); + } else {//孕妇建档主数据 + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setBookbuildingDateStart(buildStart); + patientsQuery.setBookbuildingDateEnd(buildEnd); + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setNeed("need"); + patientsQuery.setLimit(limit); + patientsQuery.setPage(page); + + patientsQuery.setHospitalId(hospitalId); + patientsQuery.setQueryNo(key); + List patientsList = patientsService.queryPatient(patientsQuery); + restList = getPatientMainData(patientsList); + + archiveModelCount = patientsQuery.getCount(); + } - temp.put("resident", 2); // 妇女建档(产品说是直接来的 没有追访的判断) patient有数据 lyms_resident没数据 直接XX 如果有 后面的流程会设置为勾勾的 map.put("resident", 1); // 妇女建档 + return RespBuilder.buildSuccess("tabList", new PageResult(archiveModelCount, page, limit, restList)); + } - // 婚检 有婚检 勾勾 没有: 有婚前检查并且流转至下一流程 叉叉 没有就是空白 - 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)); + private List> getResidentMainData(List residentsArchiveModels) { + List> archiveModelList = new ArrayList<>(); - restList.add(temp); - } + List> restList = new ArrayList<>(); - Integer archiveModelCount = 0; - List> archiveModelList = new ArrayList<>(); for (ResidentsArchiveModel archiveModel : residentsArchiveModels) { - for (Map map : restList) { - if (StringUtils.isNotEmpty((String) map.get("cardNo")) && map.get("cardNo").toString().equals(archiveModel.getCertificateNum())) { - map.put("resident", 1); // 妇女建档 - map.put("residentDate", DateUtil.getyyyy_MM_dd(archiveModel.getBuildDay())); - continue; + Map temp = new HashMap<>(); + temp.put("bookbuild", 3);//孕期建档默认空白 + temp.put("cqsc", 3);//产前筛查默认空白 + temp.put("fm", 3);//分娩空白 + temp.put("chfc", 3);//产后复查空白 + Long checkNum = mongoTemplate.count(Query.query(Criteria.where("certificateNum").is(archiveModel.getCertificateNum()).and("yn").is(1)), PremaritalCheckup.class); + temp.put("resident", 1); // 妇女建档 + temp.put("check", checkNum>0?1:2); // 婚检 1=勾勾 2=叉叉 + + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setHospitalId(archiveModel.getHospitalId()); + if (archiveModel.getCertificateNum() != null) { + patientsQuery.setCardNo(archiveModel.getCertificateNum()); + } else if (archiveModel.getPhone() != null) { + patientsQuery.setPhone(archiveModel.getPhone()); + } else if (archiveModel.getVcCardNo() != null) { + patientsQuery.setVcCardNo(archiveModel.getVcCardNo()); + } + //怀孕建档 + List patientsList = patientsService.queryPatient(patientsQuery); + + if (CollectionUtils.isNotEmpty(patientsList)) { + Patients patients = patientsList.get(0); + temp.put("bookbuild", 1); // 孕期建档 1=勾勾 2=叉叉 + temp.put("bookbuildDate", patients.getBookbuildingDate()); + if (patients.getType() == 3) { + temp.put("fm", 1); // 孕期建档 1=勾勾 2=叉叉 + temp.put("fmType", patients.getFmType()); // 分娩方式 1: 顺产,2:剖宫产 + } + + AntExRecordQuery antExRecordQuery = new AntExRecordQuery(); + antExRecordQuery.setParentId(patients.getId()); + temp.put("yjcount", recordService.count(antExRecordQuery)); // 孕检次数 + + //产后复查 + PostReviewQuery postReviewQuery = new PostReviewQuery(); + postReviewQuery.setParentId(patients.getId()); + postReviewQuery.setYn(YnEnums.YES.getId()); + Integer postInt = postReviewService.count(postReviewQuery); + if (postInt > 0) {//大于0 + temp.put("chfc", 1); + } else if(patients.getType() == 3){ + temp.put("chfc", 2); + } + temp.put("chfcCount", postInt); // 复查次数 + + SieveResultQuery sieveResultQuery = new SieveResultQuery(); + sieveResultQuery.setParentId(patients.getId()); + List sb = sieveService.queryListSieveResult(sieveResultQuery); + if (CollectionUtils.isNotEmpty(sb)) { + temp.put("cqsc", 1);//产前筛查 + } else if (patients.getType() == 3) { + {//已经分娩,就是X + temp.put("cqsc", 2);//产前筛查 + } } } - Map temp = new HashMap<>(); + temp.put("id", archiveModel.getId()); temp.put("cardNo", StringUtils.encryCardNo(archiveModel.getCertificateNum())); temp.put("username", archiveModel.getUsername()); temp.put("phone", StringUtils.encryPhone(archiveModel.getPhone())); temp.put("age", DateUtil.getAge(archiveModel.getBirthday())); - temp.put("resident", 1); // 妇女建档 temp.put("residentDate", DateUtil.getyyyy_MM_dd(archiveModel.getBuildDay())); // 妇女建档日期 - temp.put("check", mongoTemplate.count(Query.query(Criteria.where("certificateNum").is(archiveModel.getCertificateNum()).and("yn").is(1)), PremaritalCheckup.class) > 0L ? 1 : isResidentsArchive(archiveModel.getId())); // 婚检 - temp.put("bookbuild", 3); // 孕期建档 1=勾勾 2=叉叉 - temp.put("bookbuildDate", "--"); - temp.put("yj", 3); - temp.put("yjcount", 0); // 孕检次数 = 初诊 + 复诊 - temp.put("cqsc", 3); // 产前筛查 1=勾勾 2=叉叉 - temp.put("fm", 3); // 分娩 1=勾勾 2=叉叉 - temp.put("fmType", "--"); // 分娩方式 - temp.put("chfc", 3); // 产后复查 1=勾勾 2=叉叉 - temp.put("chfcCount", 0); // 复查次数 - archiveModelCount++; archiveModelList.add(temp); } + return archiveModelList; + } - // 处理分页 - if (restList.size() < limit) { - int count = limit - restList.size(); - if (archiveModelList.size() <= count) { - restList.addAll(archiveModelList); - } else { - restList.addAll(archiveModelList.subList(0, count)); + private List> getPatientMainData(List patients) { + List> restList = new ArrayList<>(); + for (Patients patient : patients) { // type: 1=孕期 3=产后 + Map temp = new HashMap<>(); + temp.put("bookbuild", 1); + temp.put("cqsc", 3);//产前筛查默认空白 + temp.put("fm", 3);//分娩空白 + temp.put("chfc", 3);//产后复查空白 + + //婚检查询 + Long checkNum = mongoTemplate.count(Query.query(Criteria.where("certificateNum").is(patient.getCardNo()).and("yn").is(1)), PremaritalCheckup.class); + temp.put("check", checkNum>0?1:2); // 婚检 1=勾勾 2=叉叉 + + //妇女查询条件 + ResidentsArchiveQuery query = new ResidentsArchiveQuery(); + query.setYn(YnEnums.YES.getId()); + query.setQueryNo(patient.getCardNo()); + query.setHospitalId(patient.getHospitalId()); + //妇女建档主数据 + List residentCount = residentsArchiveService.queryResident(query); + if(CollectionUtils.isNotEmpty(residentCount)){ + ResidentsArchiveModel residentsArchiveModel = residentCount.get(0); + temp.put("resident", 1); // 妇女建档 + temp.put("residentDate", DateUtil.getyyyy_MM_dd(residentsArchiveModel.getBuildDay())); // 妇女建档日期 + }else{ + temp.put("resident", 2); // 妇女建档 } + temp.put("id", patient.getId()); + temp.put("cardNo", patient.getCardNo()); + temp.put("username", patient.getUsername()); + temp.put("phone", patient.getPhone()); + temp.put("age", DateUtil.getAge(patient.getBirth())); + //建档时间 + temp.put("bookbuildDate", DateUtil.getyyyy_MM_dd(patient.getBookbuildingDate())); + temp.put("bookbuild", 1); // 孕期建档 1=勾勾 2=叉叉 + temp.put("bookbuildDate", patient.getBookbuildingDate()); + + //已分娩 + if (patient.getType() == 3) { + temp.put("fm", 1); // 孕期建档 1=勾勾 2=叉叉 + temp.put("fmType", patient.getFmType()); // 分娩方式 1: 顺产,2:剖宫产 + } + + AntExRecordQuery antExRecordQuery = new AntExRecordQuery(); + antExRecordQuery.setParentId(patient.getId()); + temp.put("yjcount", recordService.count(antExRecordQuery)); // 孕检次数 + + //产后复查 + PostReviewQuery postReviewQuery = new PostReviewQuery(); + postReviewQuery.setParentId(patient.getId()); + postReviewQuery.setYn(YnEnums.YES.getId()); + Integer postInt = postReviewService.count(postReviewQuery); + if (postInt > 0) {//大于0 + temp.put("chfc", 1); + } else if(patient.getType() == 3){ + temp.put("chfc", 2); + } + temp.put("chfcCount", postInt); // 复查次数 + + SieveResultQuery sieveResultQuery = new SieveResultQuery(); + sieveResultQuery.setParentId(patient.getId()); + List sb = sieveService.queryListSieveResult(sieveResultQuery); + if (CollectionUtils.isNotEmpty(sb)) { + temp.put("cqsc", 1);//产前筛查 + } else if (patient.getType() == 3) { + {//已经分娩,就是X + temp.put("cqsc", 2);//产前筛查 + } + } + restList.add(temp); } - return RespBuilder.buildSuccess("tabList", new PageResult(mongoPage.getCount() + archiveModelCount, page, limit, doPage ? CollectionUtils.getPageIds(restList, page, limit) : restList)); + return restList; } private int isExitTrackDown(String parentId, TrackDownDateEnums trackDownDateEnums) { @@ -226,7 +327,7 @@ public class TrackDownServiceImpl extends BaseServiceImpl implements ITrackDownS } if (TrackDownDateEnums.A.getId() == trackDown.getTrackDownDateType() && "5d0b782f-b61b-441b-b8c5-4bf55eece273".equals(trackDownRecord.getSex()) - &&TrackDownTransferEnums.B.getId() == trackDown.getTrackDownTransfer()) {//性别男:特殊处理,流转到下一流程时结束流程 + && TrackDownTransferEnums.B.getId() == trackDown.getTrackDownTransfer()) {//性别男:特殊处理,流转到下一流程时结束流程 trackDown.setTrackDownTransfer(TrackDownTransferEnums.C.getId()); } } @@ -278,7 +379,8 @@ public class TrackDownServiceImpl extends BaseServiceImpl implements ITrackDownS private ResidentsArchiveService residentsArchiveService; @Override - public BaseObjectResponse list(String provinceId, String cityId, String areaId, String streetId, String key, Integer trackType, Integer page, Integer limit, Integer userId) { + public BaseObjectResponse list(String provinceId, String cityId, String areaId, String streetId, String + key, Integer trackType, Integer page, Integer limit, Integer userId) { PageResult pageResult = null; String hospitalId = autoMatchFacade.getHospitalId(userId); Criteria patientCriteria = new Criteria(); @@ -547,7 +649,8 @@ public class TrackDownServiceImpl extends BaseServiceImpl implements ITrackDownS } @Override - public void export(String provinceId, String cityId, String areaId, String streetId, String key, Integer trackType, Integer userId, HttpServletResponse response) { + public void export(String provinceId, String cityId, String areaId, String streetId, String key, Integer + trackType, Integer userId, HttpServletResponse response) { BaseObjectResponse rest = list(provinceId, cityId, areaId, streetId, key, trackType, 1, 20, userId); PageResult pageResult = (PageResult) rest.getData(); List> datas = (List>) pageResult.getGrid(); -- 1.8.3.1