From dff86c41afa702968123f3a3962693c4ccb7cd9c Mon Sep 17 00:00:00 2001 From: zhangchao Date: Mon, 22 Jul 2024 17:03:56 +0800 Subject: [PATCH] =?UTF-8?q?#fix:=E6=96=B0=E5=A2=9E=E4=BA=A7=E6=A3=80?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/lyms/platform/query/AntExChuQuery.java | 26 +++ .../java/com/lyms/platform/query/AntExQuery.java | 13 ++ .../web/controller/StatisticsController.java | 30 +++ .../web/facade/AntenatalExaminationFacade.java | 214 +++++++++++++++++++++ 4 files changed, 283 insertions(+) diff --git a/platform-dal/src/main/java/com/lyms/platform/query/AntExChuQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/AntExChuQuery.java index c32f4ec..4030cc2 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/AntExChuQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/AntExChuQuery.java @@ -24,6 +24,8 @@ public class AntExChuQuery extends BaseQuery implements IConvertToNativeQuery { private String hospitalId; private Date end; + private String isNextCheckTime; + private Date nextCheckTimeLte; private Date nextCheckTime; private Date nextCheckTimeStart; private Date nextCheckTimeEnd; @@ -299,6 +301,22 @@ public class AntExChuQuery extends BaseQuery implements IConvertToNativeQuery { this.id = id; } + public String getIsNextCheckTime() { + return isNextCheckTime; + } + + public void setIsNextCheckTime(String isNextCheckTime) { + this.isNextCheckTime = isNextCheckTime; + } + + public Date getNextCheckTimeLte() { + return nextCheckTimeLte; + } + + public void setNextCheckTimeLte(Date nextCheckTimeLte) { + this.nextCheckTimeLte = nextCheckTimeLte; + } + @Override public MongoQuery convertToQuery() { MongoCondition condition = MongoCondition.newInstance(); @@ -338,6 +356,10 @@ public class AntExChuQuery extends BaseQuery implements IConvertToNativeQuery { if (null != nextCheckTime) { condition = condition.and("nextCheckTime", nextCheckTime, MongoOper.GTE); } + if (null!=nextCheckTimeLte){ + condition = condition.and("nextCheckTime", nextCheckTime, MongoOper.LTE); + + } if (null != hospitalId) { condition = condition.and("hospitalId", hospitalId, MongoOper.IS); @@ -355,6 +377,10 @@ public class AntExChuQuery extends BaseQuery implements IConvertToNativeQuery { if (isOpinion) { condition = condition.and("treatOpinion", true, MongoOper.EXISTS); } + if (StringUtils.isNotEmpty(isNextCheckTime)){ + condition = condition.and("nextCheckTime", true, MongoOper.EXISTS); + + } if (CollectionUtils.isNotEmpty(parentIds)) { condition = condition.and("parentId", parentIds, MongoOper.IN); diff --git a/platform-dal/src/main/java/com/lyms/platform/query/AntExQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/AntExQuery.java index 8150f14..d3c21bc 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/AntExQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/AntExQuery.java @@ -5,6 +5,7 @@ import com.lyms.platform.common.dao.BaseQuery; import com.lyms.platform.common.dao.operator.MongoCondition; import com.lyms.platform.common.dao.operator.MongoOper; import com.lyms.platform.common.dao.operator.MongoQuery; +import com.lyms.platform.common.utils.StringUtils; import org.apache.commons.collections.CollectionUtils; import org.springframework.data.mongodb.core.query.Criteria; @@ -52,6 +53,7 @@ public class AntExQuery extends BaseQuery implements IConvertToNativeQuery { private Date checkStartDate; private Date checkEndDate; + private Date nextCheckTime; private Date nextCheckTimeStartDate; private Date nextCheckTimeEndDate; @@ -226,6 +228,14 @@ public class AntExQuery extends BaseQuery implements IConvertToNativeQuery { this.pid = pid; } + public Date getNextCheckTime() { + return nextCheckTime; + } + + public void setNextCheckTime(Date nextCheckTime) { + this.nextCheckTime = nextCheckTime; + } + @Override public MongoQuery convertToQuery() { MongoCondition condition = MongoCondition.newInstance(); @@ -263,6 +273,9 @@ public class AntExQuery extends BaseQuery implements IConvertToNativeQuery { condition = condition.and("treatOpinion", true, MongoOper.EXISTS); } + if (null!=nextCheckTime){ + condition = condition.and("nextCheckTime", nextCheckTime, MongoOper.LTE); + } boolean isAddStart = Boolean.FALSE; Criteria c = null; if (null != start) { diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/StatisticsController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/StatisticsController.java index 15dc3b5..e49dcf3 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/StatisticsController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/StatisticsController.java @@ -11,10 +11,13 @@ import com.lyms.platform.common.utils.JsonUtil; import com.lyms.platform.common.utils.ResultUtils; import com.lyms.platform.common.utils.SystemConfig; import com.lyms.platform.operate.web.facade.AntExRecordFacade; +import com.lyms.platform.operate.web.facade.AntenatalExaminationFacade; import com.lyms.platform.operate.web.facade.BasicConfigFacade; import com.lyms.platform.operate.web.facade.PatientServiceFacade; import com.lyms.platform.operate.web.request.CjStatisticsQueryRequest; import com.lyms.platform.operate.web.request.JdStatisticsQueryRequest; +import com.lyms.platform.query.AntExRecordQuery; +import com.lyms.platform.query.PatientsQuery; import com.lymsh.platform.reportdata.model.AreaData; import com.lymsh.platform.reportdata.model.AreaDataQuery; import com.lymsh.platform.reportdata.model.echarts.*; @@ -46,6 +49,8 @@ public class StatisticsController extends BaseController { private BasicConfigFacade basicConfigFacade; @Autowired private PatientServiceFacade patientServiceFacade; + @Autowired + private AntenatalExaminationFacade antenatalExaminationFacade; @@ -1190,6 +1195,31 @@ public class StatisticsController extends BaseController { return patientServiceFacade.queryStatistics(loginState.getId(),jdStatisticsQueryRequest); } + @RequestMapping(value = "/yjStatistics", method = RequestMethod.GET) + @ResponseBody + @TokenRequired + public BaseResponse yjStatistics(HttpServletRequest request){ + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + return antenatalExaminationFacade.antenatalExaminationStatistics(loginState.getId()); + } + @RequestMapping(value = "/yjStatistics/list", method = RequestMethod.GET) + @ResponseBody + @TokenRequired + public BaseResponse yjStatisticsList(String parentIds, + Integer page, + Integer limit){ + if (StringUtils.isEmpty(parentIds)){ + return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); + } + AntExRecordQuery antExRecordQuery = new AntExRecordQuery(); + antExRecordQuery.setNeed("1"); + antExRecordQuery.setParentIds(com.lyms.platform.common.utils.StringUtils.covertToList(parentIds, String.class)); + antExRecordQuery.setNeed("true"); + antExRecordQuery.setLimit(limit); + antExRecordQuery.setPage(page); + return antenatalExaminationFacade.antenatalExaminationStatisticsList(antExRecordQuery); + } + @RequestMapping(value = "/cjStatistics/enums", method = RequestMethod.GET) @ResponseBody @TokenRequired diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java index c970875..e7fb77f 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java @@ -223,6 +223,220 @@ public class AntenatalExaminationFacade { return null; } + public BaseResponse antenatalExaminationStatisticsList(AntExRecordQuery antExRecordQuery){ + BaseListResponse baseListResponse = new BaseListResponse(); + List data = new ArrayList<>(); + + List list2 = recordService.queryAntExRecords(antExRecordQuery); + if (CollectionUtils.isNotEmpty(list2)) { + for (AntExRecordModel record : list2) { + CjStatisticsListResult cjStatisticsListResult = new CjStatisticsListResult(); + cjStatisticsListResult.convertToResult(record); + Patients patients = patientsService.findOnePatientById(record.getParentId()); + String dueWeek = ""; + if (null != patients) { + //2017-03-15 高帆说的改成这样 + if (patients.getType()==1 &&patients.getLastMenses() != null && record.getCheckTime() != null) { + int days = DateUtil.daysBetween(patients.getLastMenses(), record.getCheckTime()); + String week = (days / 7) + ""; + int day = (days % 7); + dueWeek = "孕" + week + "周" + (day > 0 ? "+" + day + "天" : ""); + cjStatisticsListResult.setDueWeek(dueWeek); + }else if(patients.getType()==3 &&patients.getLastMenses() != null && patients.getDueDate() != null){ + int days = DateUtil.daysBetween(patients.getLastMenses(), patients.getDueDate()); + String week = (days / 7) + ""; + int day = (days % 7); + dueWeek = "孕" + week + "周" + (day > 0 ? "+" + day + "天" : ""); + cjStatisticsListResult.setDueWeek(dueWeek); + } + } + + + Users users = usersService.getUsers(NumberUtils.toInt(record.getCheckDoctor())); + if (null != users) { + cjStatisticsListResult.setCheckDoctor(users.getName()); + } + + //处理高危 + handleRisk(record, cjStatisticsListResult); + + data.add(cjStatisticsListResult); + } + } + + return baseListResponse.setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS).setData(data).setPageInfo(antExRecordQuery.getPageInfo()); + + } + private void handleRisk(AntExRecordModel e, CjStatisticsListResult antExManagerResult) { + if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(e.getfId())) { + String risk = null; + if (e.getType() == 2) { + AntExChuModel model = antExService.findOne(e.getfId()); + if (null != model) { + risk = model.getOtherHighRisk(); + } + } else if (e.getType() == 1) { + AntenatalExaminationModel model = antExService.findOneById(e.getfId()); + if (null != model) { + risk = model.getOtherRisk(); + } + } + StringBuffer name = new StringBuffer(); + Integer score = 0; + List> results = commonService.resolveOtherRisk(risk); + if (CollectionUtils.isNotEmpty(results)) { + for (Map result : results) { + //高危因素名字 + name.append(result.get("name").toString() + ","); + String level = result.get("levelId").toString(); + score += NumberUtils.toInt(result.get("score").toString(), 0); + if (org.apache.commons.lang.StringUtils.isNotEmpty(level) && !"null".equals(level)) { + e.gethLevel().add(level); + } + } + } + //高危因素 + antExManagerResult.setrLevel(commonService.findRiskLevel(e.gethLevel())); + String ri = commonService.resloveFactor(e.gethRisk()); + if (ri.isEmpty()) { + if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(name.toString())) { + ri = name.substring(0, name.length() - 1); + } + } else if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(name.toString())) { + ri += "," + name.substring(0, name.length() - 1); + } + antExManagerResult.setrRisk(ri); + antExManagerResult.setScore((e.gethScore() + score)); + } + } + public BaseResponse antenatalExaminationStatistics(Integer userId){ + String hospitalId = autoMatchFacade.getHospitalId(userId); + AntExChuQuery antExChuQuery=new AntExChuQuery(); + antExChuQuery.setYn(YnEnums.YES.getId()); + antExChuQuery.setHospitalId(hospitalId); + //把时间格式化成 yyyy_MM_dd 的日期 + Date nextCheckTime= DateUtil.formatDate(new Date()); + antExChuQuery.setNextCheckTimeLte(nextCheckTime); + //初诊数据 + List antExChuModelList= antExService.queryAntExChu(antExChuQuery); + if (CollectionUtils.isNotEmpty(antExChuModelList)){ + List> list=new ArrayList<>(); + //正常健康 + Map a=new HashMap<>(); + a.put("type",1); + a.put("num",0); + a.put("riskType",1); + //异常健康 + Map b=new HashMap<>(); + b.put("type",2); + b.put("num",0); + b.put("riskType",1); + //正常高危 + Map c=new HashMap<>(); + c.put("type",1); + c.put("num",0); + c.put("riskType",0); + //异常高危 + Map d=new HashMap<>(); + d.put("type",2); + d.put("num",0); + d.put("riskType",0); + + AntExQuery antExQuery = new AntExQuery(); + for (AntExChuModel antExChuModel:antExChuModelList){ + //高危信息 + List li = null; + try { + li = JsonUtil.toList(antExChuModel.getHighrisk(), List.class); + } catch (Exception e) { + } + String parentId=antExChuModel.getParentId(); + antExQuery.setParentId(parentId); + antExQuery.setYn(YnEnums.YES.getId()); + String time= DateUtil.getyyyy_MM_dd(antExChuModel.getNextCheckTime()); + antExQuery.setCreatedTimeStart(DateUtil.parseYMDHMS(time + " 00:00:00")); + antExQuery.setCreatedTimeEnd(DateUtil.parseYMDHMS(time + " 23:59:59")); + List antEx = antenatalExaminationService.queryAntenatalExamination(antExQuery.convertToQuery().addOrder(Sort.Direction.DESC, "checkDate")); + + if (CollectionUtils.isNotEmpty(antEx)){ + if (CollectionUtils.isNotEmpty(li)&&!li.contains("d42eec03-aa86-45b8-a4e0-78a0ff365fb6")){ + //高危 + c.put("num",c.get("num")!=null?Integer.valueOf(c.get("num").toString())+1:1); + c.put("parentIds",c.get("parentIds")!=null?c.get("parentIds")+","+parentId:parentId); + }else { + //健康 + a.put("num",a.get("num")!=null?Integer.valueOf(a.get("num").toString())+1:1); + a.put("parentIds",a.get("parentIds")!=null?a.get("parentIds")+","+parentId:parentId); + } + }else { + if (CollectionUtils.isNotEmpty(li)&&!li.contains("d42eec03-aa86-45b8-a4e0-78a0ff365fb6")){ + //高危 + d.put("num",d.get("num")!=null?Integer.valueOf(d.get("num").toString())+1:1); + d.put("parentIds",d.get("parentIds")!=null?d.get("parentIds")+","+parentId:parentId); + }else { + //健康 + b.put("num",b.get("num")!=null?Integer.valueOf(b.get("num").toString())+1:1); + b.put("parentIds",b.get("parentIds")!=null?b.get("parentIds")+","+parentId:parentId); + } + } + } + antExQuery.setParentId(null); + antExQuery.setCreatedTimeStart(null); + antExQuery.setCreatedTimeEnd(null); + antExQuery.setHospitalId(hospitalId); + antExQuery.setNextCheckTime(nextCheckTime); + List antEx = antenatalExaminationService.queryAntenatalExamination(antExQuery.convertToQuery().addOrder(Sort.Direction.DESC, "checkDate")); + if (CollectionUtils.isNotEmpty(antEx)){ + antExQuery.setNextCheckTime(null); + for (AntenatalExaminationModel antenatalExaminationModel:antEx){ + //高危信息 + List li = null; + try { + li = Arrays.asList(antenatalExaminationModel.getRiskFactor().split(",")); + } catch (Exception e) { + } + String parentId=antenatalExaminationModel.getParentId(); + antExQuery.setParentId(parentId); + antExQuery.setYn(YnEnums.YES.getId()); + String time= DateUtil.getyyyy_MM_dd(antenatalExaminationModel.getNextCheckTime()); + antExQuery.setCreatedTimeStart(DateUtil.parseYMDHMS(time + " 00:00:00")); + antExQuery.setCreatedTimeEnd(DateUtil.parseYMDHMS(time + " 23:59:59")); + List antEx1 = antenatalExaminationService.queryAntenatalExamination(antExQuery.convertToQuery().addOrder(Sort.Direction.DESC, "checkDate")); + if (CollectionUtils.isNotEmpty(antEx1)){ + if (CollectionUtils.isNotEmpty(li)&&!li.contains("d42eec03-aa86-45b8-a4e0-78a0ff365fb6")){ + //高危 + c.put("num",c.get("num")!=null?Integer.valueOf(c.get("num").toString())+1:1); + c.put("parentIds",c.get("parentIds")!=null?c.get("parentIds")+","+parentId:parentId); + }else { + //健康 + a.put("num",a.get("num")!=null?Integer.valueOf(a.get("num").toString())+1:1); + a.put("parentIds",a.get("parentIds")!=null?a.get("parentIds")+","+parentId:parentId); + } + }else { + if (CollectionUtils.isNotEmpty(li)&&!li.contains("d42eec03-aa86-45b8-a4e0-78a0ff365fb6")){ + //高危 + d.put("num",d.get("num")!=null?Integer.valueOf(d.get("num").toString())+1:1); + d.put("parentIds",d.get("parentIds")!=null?d.get("parentIds")+","+parentId:parentId); + }else { + //健康 + b.put("num",b.get("num")!=null?Integer.valueOf(b.get("num").toString())+1:1); + b.put("parentIds",b.get("parentIds")!=null?b.get("parentIds")+","+parentId:parentId); + } + } + } + } + list.add(a); + list.add(b); + list.add(c); + list.add(d); + BaseResponse baseResponse= new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); + baseResponse.setObject(list); + return baseResponse; + } + return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); + } + + /** * 修改最后一次产检时间 * -- 1.8.3.1