diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientFacade.java index 6235987..6036cbe 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientFacade.java @@ -2,6 +2,7 @@ package com.lyms.platform.operate.web.facade; import com.lyms.platform.beans.MsgRequest; import com.lyms.platform.biz.service.*; +import com.lyms.platform.common.base.PageInfo; import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.dao.operator.MongoCondition; import com.lyms.platform.common.dao.operator.MongoOper; @@ -10,11 +11,13 @@ import com.lyms.platform.common.enums.*; import com.lyms.platform.common.result.BaseListResponse; 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.utils.*; import com.lyms.platform.operate.web.request.*; import com.lyms.platform.operate.web.result.*; import com.lyms.platform.operate.web.service.PatientWeightService; import com.lyms.platform.operate.web.service.RareBloodGroupService; +import com.lyms.platform.operate.web.service.impl.BaseServiceImpl; import com.lyms.platform.operate.web.utils.CommonsHelper; import com.lyms.platform.operate.web.utils.JxlsUtils; import com.lyms.platform.operate.web.worker.*; @@ -50,7 +53,7 @@ import java.util.concurrent.TimeUnit; * Created by Administrator on 2016/4/22 0022. */ @Component -public class PatientFacade { +public class PatientFacade extends BaseServiceImpl { private static final Logger logger = LoggerFactory.getLogger(PatientFacade.class); public static final String HIS_VERSION = PropertiesUtils.getPropertyValue("his_version"); @@ -762,6 +765,29 @@ public class PatientFacade { public BaseResponse queryAbnormalWeight(RiskPatientsQueryRequest riskPatientsQueryRequest, Integer userId,String need) { String hospital = autoMatchFacade.getHospitalId(userId); + Query query = Query.query(Criteria.where("hospitalId").is(hospital).and("yn").ne("0")); + String formatBmi = ""; + if("1".equals(riskPatientsQueryRequest.getBmi())){ + formatBmi = String.format("function () { return this.bmi >= %s && this.bmi <= %s; }", "25", "28"); + }else if("2".equals(riskPatientsQueryRequest.getBmi())){ + formatBmi = String.format("function () { return this.bmi >= %s; }", "28"); + }else { + formatBmi = String.format("function () { return this.bmi >= %s; }", "25"); + } + query.addCriteria(Criteria.where("$where").is(formatBmi)); + PageResult pageResult = findMongoPage(PatientWeight.class, query.with(new Sort(Sort.Direction.DESC, "modified")), riskPatientsQueryRequest.getPage(), riskPatientsQueryRequest.getLimit()); + List patientWeightList = (List) pageResult.getGrid(); + List data = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(patientWeightList)) { + data = convertToQuanWeight(patientWeightList); + } + return new BaseListResponse().setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS) + .setData(data).setPageInfo(new PageInfo(pageResult.getPage(), pageResult.getLastPage(), pageResult.getCount(), pageResult.getLimit())); + } +/* + public BaseResponse queryAbnormalWeight2(RiskPatientsQueryRequest riskPatientsQueryRequest, Integer userId,String need) { + + String hospital = autoMatchFacade.getHospitalId(userId); PatientsQuery pq = new PatientsQuery(); PatientsQuery patientsQuery = new PatientsQuery(); patientsQuery.setYn(YnEnums.YES.getId()); @@ -771,13 +797,22 @@ public class PatientFacade { patientsQuery.setrLevel(riskPatientsQueryRequest.getrLevel()); patientsQuery.setrFactorList(com.lyms.platform.common.utils.StringUtils.covertToList(riskPatientsQueryRequest.getrFacotr(), String.class)); patientsQuery.setHospitalId(hospital); + + + List patientses = patientsService.queryPatientBySort(patientsQuery, riskPatientsQueryRequest.getSort(), riskPatientsQueryRequest.getOrder()); List data = new ArrayList<>(); List ids = new ArrayList<>(); if (CollectionUtils.isNotEmpty(patientses)) { for (Patients patients : patientses) { if(com.lyms.platform.common.utils.StringUtils.isNotEmpty(patients.getId())){ - List patientWeightList = mongoTemplate.find(Query.query(Criteria.where("patientId").is(patients.getId()).and("yn").ne("0")), PatientWeight.class); +// List patientWeightList = mongoTemplate.find(Query.query(Criteria.where("patientId").is(patients.getId()).and("yn").ne("0")), PatientWeight.class); + Query query = Query.query(Criteria.where("patientId").is(patients.getId()).and("yn").ne("0")); + query.addCriteria(Criteria.where("$where").is( + String.format("function () { return this.bmi >= %s && this.bmi <= %s; }", "25", "25"))); + + List patientWeightList = mongoTemplate.find(query, PatientWeight.class); + if(CollectionUtils.isNotEmpty(patientWeightList)){ PatientWeight patientWeight = patientWeightList.get(0); if(patientWeight!=null && com.lyms.platform.common.utils.StringUtils.isNotEmpty(patientWeight.getBmi())){ @@ -811,6 +846,7 @@ public class PatientFacade { } return new BaseListResponse().setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS).setData(data).setPageInfo(pq.getPageInfo()); } +*/ /** * 巨大儿管理 * @param riskPatientsQueryRequest @@ -1523,7 +1559,29 @@ public class PatientFacade { } return data; } - private List convertToQuanWeight(List patientses) { + private List convertToQuanWeight(List patientWeightList) { + List data = new ArrayList<>(); + int batchSize = 4; + int end = 0; + List listFuture = new ArrayList<>(); + for (int i = 0; i < patientWeightList.size(); i += batchSize) { + end = (end + batchSize); + if (end > patientWeightList.size()) { + end = patientWeightList.size(); + } + listFuture.add(commonThreadPool.submit(new QuanWeightWorker(patientWeightList.subList(i, end),mongoTemplate,commonService,basicConfigService,trackDownRecordService))); + } + for (Future f : listFuture) { + try { + data.addAll(( List) f.get(30, TimeUnit.SECONDS)); + } catch (Exception e) { + ExceptionUtils.catchException(e, "convertToQuanWeight get result Future error."); + } + } + return data; + } +/* + private List convertToQuanWeight2(List patientses) { List data = new ArrayList<>(); int batchSize = 4; int end = 0; @@ -1544,6 +1602,7 @@ public class PatientFacade { } return data; } +*/ private List convertToHugeQuanWeight(List patientses) { List data = new ArrayList<>(); int batchSize = 4; diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/QuanWeightWorker.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/QuanWeightWorker.java index 3e09f09..f0b6bf3 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/QuanWeightWorker.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/QuanWeightWorker.java @@ -34,18 +34,18 @@ public class QuanWeightWorker implements Callable> { private static final Logger logger = LoggerFactory.getLogger(PatientFacade.class); - private List patientses; + private List patientWeightList; private MongoTemplate mongoTemplate; private CommonService commonService; private BasicConfigService basicConfigService; private TrackDownRecordService trackDownRecordService; - public QuanWeightWorker(List patientses, + public QuanWeightWorker(List patientWeightList, MongoTemplate mongoTemplate, CommonService commonService, BasicConfigService basicConfigService, TrackDownRecordService trackDownRecordService ) { - this.patientses = patientses; + this.patientWeightList = patientWeightList; this.mongoTemplate = mongoTemplate; this.commonService = commonService; this.basicConfigService = basicConfigService; @@ -55,29 +55,25 @@ public class QuanWeightWorker implements Callable> { @Override public List call() throws Exception { List data = new ArrayList<>(); - for (Patients patients : patientses) - if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(patients.getId())) { - List patientWeightList = mongoTemplate.find(Query.query(Criteria.where("patientId").is(patients.getId()).and("yn").ne("0")), PatientWeight.class); - if (CollectionUtils.isNotEmpty(patientWeightList)) { - PatientWeight patientWeight = patientWeightList.get(0); - if (patientWeight != null && com.lyms.platform.common.utils.StringUtils.isNotEmpty(patientWeight.getBmi())) { - Map map = new HashMap(); - puliMap(patients, patientWeight, map); - //列表中冗余上追访管理--孕期检查列表id - TrackDownRecordQuery query = new TrackDownRecordQuery(); - query.setParentId(patients.getId()); - List trackDownRecords = trackDownRecordService.queryTrackDown(query); - if(CollectionUtils.isNotEmpty(trackDownRecords)){ - TrackDownRecord trackDownRecord = trackDownRecords.get(0); - if (StringUtils.isNotEmpty(trackDownRecord.getId())){ - map.put("trackDownRecId", trackDownRecord.getId()); - } - } - data.add(map); + for (PatientWeight patientWeight : patientWeightList){ + List patientsList = mongoTemplate.find(Query.query(Criteria.where("id").is(patientWeight.getPatientId()).and("yn").ne("0")), Patients.class); + if(CollectionUtils.isNotEmpty(patientsList)){ + Patients patients = patientsList.get(0); + Map map = new HashMap(); + puliMap(patients, patientWeight, map); + //列表中冗余上追访管理--孕期检查列表id + TrackDownRecordQuery query = new TrackDownRecordQuery(); + query.setParentId(patients.getId()); + List trackDownRecords = trackDownRecordService.queryTrackDown(query); + if(CollectionUtils.isNotEmpty(trackDownRecords)){ + TrackDownRecord trackDownRecord = trackDownRecords.get(0); + if (StringUtils.isNotEmpty(trackDownRecord.getId())){ + map.put("trackDownRecId", trackDownRecord.getId()); } - } + data.add(map); } + } return data; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/QuanWeightWorker2.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/QuanWeightWorker2.java new file mode 100644 index 0000000..3460212 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/QuanWeightWorker2.java @@ -0,0 +1,149 @@ +package com.lyms.platform.operate.web.worker; + +import com.lyms.platform.biz.service.BasicConfigService; +import com.lyms.platform.biz.service.CommonService; +import com.lyms.platform.biz.service.TrackDownRecordService; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.operate.web.facade.PatientFacade; +import com.lyms.platform.pojo.PatientWeight; +import com.lyms.platform.pojo.Patients; +import com.lyms.platform.pojo.TrackDownRecord; +import com.lyms.platform.query.TrackDownRecordQuery; +import org.apache.commons.collections.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; + +import java.util.*; +import java.util.concurrent.Callable; + +/** + * 孕期体重异常管理 + * + * @Author: 武涛涛 + * @Date: 2021/1/4 9:28 + */ +public class QuanWeightWorker2 implements Callable> { + + private static final Logger logger = LoggerFactory.getLogger(PatientFacade.class); + + private List patientses; + private MongoTemplate mongoTemplate; + private CommonService commonService; + private BasicConfigService basicConfigService; + private TrackDownRecordService trackDownRecordService; + public QuanWeightWorker2(List patientses, + MongoTemplate mongoTemplate, + CommonService commonService, + BasicConfigService basicConfigService, + TrackDownRecordService trackDownRecordService + ) { + this.patientses = patientses; + this.mongoTemplate = mongoTemplate; + this.commonService = commonService; + this.basicConfigService = basicConfigService; + this.trackDownRecordService = trackDownRecordService; + } + + @Override + public List call() throws Exception { + List data = new ArrayList<>(); + for (Patients patients : patientses) + if (StringUtils.isNotEmpty(patients.getId())) { + List patientWeightList = mongoTemplate.find(Query.query(Criteria.where("patientId").is(patients.getId()).and("yn").ne("0")), PatientWeight.class); + if (CollectionUtils.isNotEmpty(patientWeightList)) { + PatientWeight patientWeight = patientWeightList.get(0); + if (patientWeight != null && StringUtils.isNotEmpty(patientWeight.getBmi())) { + Map map = new HashMap(); + puliMap(patients, patientWeight, map); + //列表中冗余上追访管理--孕期检查列表id + TrackDownRecordQuery query = new TrackDownRecordQuery(); + query.setParentId(patients.getId()); + List trackDownRecords = trackDownRecordService.queryTrackDown(query); + if(CollectionUtils.isNotEmpty(trackDownRecords)){ + TrackDownRecord trackDownRecord = trackDownRecords.get(0); + if (StringUtils.isNotEmpty(trackDownRecord.getId())){ + map.put("trackDownRecId", trackDownRecord.getId()); + } + } + data.add(map); + } + + } + } + return data; + } + + private void puliMap(Patients patients, PatientWeight patientWeight, Map map) { + map.put("username", patients.getUsername()); + map.put("age", patients.getAge()); + map.put("phone", patients.getPhone()); + map.put("currentWeek", patients.getType() == 3 ? "已分娩" : DateUtil.getWeekDesc(patients.getLastMenses(), new Date())); + String risk = getRiskFactor(patients.getRiskFactorId()); + if (org.apache.commons.lang.StringUtils.isEmpty(risk)) { + risk = (org.apache.commons.lang.StringUtils.isEmpty(patients.getoRiskFactor()) ? "" : patients.getoRiskFactor()); + } else { + risk = risk + (org.apache.commons.lang.StringUtils.isEmpty(patients.getoRiskFactor()) ? "" : "," + patients.getoRiskFactor()); + } +// String rFactor = commonService.resloveFactor(JsonUtil.toList(patients.getRiskLevelId(), String.class)); + map.put("riskFactor", risk); + map.put("bmi", patientWeight.getBmi()); + map.put("id", patientWeight.getId()); + map.put("beforeHeight", patientWeight.getBeforeHeight()); + map.put("beforeWeight", patientWeight.getBeforeWeight()); + map.put("dayWeights", patientWeight.getDayWeights()); + if (patientWeight.getDayWeights() != null) { + int i = 1; + for (Map.Entry entry : patientWeight.getDayWeights().entrySet()) { + String mapKey = entry.getKey(); + String mapValue = entry.getValue(); +// System.out.println(mapKey + "/" + mapValue); + map.put("dayWeights" + i++, mapKey + "/" + mapValue); + } + + } + + map.put("patientId", patients.getId()); + map.put("pid", patients.getPid()); + map.put("cardNo", patients.getCardNo()); + + + } + + public static List filter(List level) { + List list = new ArrayList(); + List addEdList = new ArrayList(); + if (CollectionUtils.isNotEmpty(level)) { + for (Map map : level) { + if (!addEdList.contains(map.get("name"))) { + list.add(map); + addEdList.add(map.get("name")); + } + } + } + + return list; + } + + + private String getRiskFactor(List list) { + String riskFactor = ""; + if (list != null && list.size() > 0) { + for (String s : list) { + try { + riskFactor += basicConfigService.getOneBasicConfigById(s).getName(); + riskFactor += ","; + } catch (Exception e) { + riskFactor += ""; + } + } + } + if (riskFactor.length() > 0) { + return riskFactor.substring(0, riskFactor.length() - 1); + } + return riskFactor; + } +} \ No newline at end of file