diff --git a/platform-dal/src/main/java/com/lyms/platform/query/AmniocentesisInfoQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/AmniocentesisInfoQuery.java index 31a2020..16e93cf 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/AmniocentesisInfoQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/AmniocentesisInfoQuery.java @@ -59,6 +59,8 @@ public class AmniocentesisInfoQuery extends BaseQuery implements IConvertToNativ //末次月经 private Date lastMenses; + private Date dueDateStart; + private Date dueDateEnd; //体重 private String weight; @@ -213,9 +215,21 @@ public class AmniocentesisInfoQuery extends BaseQuery implements IConvertToNativ if (StringUtils.isNotEmpty(streetId)) { condition = condition.and("streetId", streetId, MongoOper.IS); } - Criteria c = null; + if (null != queryNo) { + MongoCondition c1 = MongoCondition.newInstance(); + MongoCondition con1 = MongoCondition.newInstance("phone", queryNo, MongoOper.IS); + MongoCondition con2 = MongoCondition.newInstance("name", "^" + queryNo, MongoOper.LIKE); + MongoCondition con3 = MongoCondition.newInstance("cardNo", queryNo, MongoOper.IS); + MongoCondition con5 = MongoCondition.newInstance("vcCardNo", queryNo, MongoOper.IS); + if (c != null) { + c = c.andOperator(c1.orCondition(new MongoCondition[]{con1, con2, con3, con5}).getCriteria()); + } else { + c = c1.orCondition(new MongoCondition[]{con1, con2, con3, con5}).getCriteria(); + } + } + if (null != orderDateStart && orderDateEnd != null) { if (null != c) { c = c.where("orderDate").gte(orderDateStart).lte(orderDateEnd); @@ -255,25 +269,38 @@ public class AmniocentesisInfoQuery extends BaseQuery implements IConvertToNativ } } - if (null != queryNo) { - MongoCondition c1 = MongoCondition.newInstance(); - MongoCondition con1 = MongoCondition.newInstance("phone", queryNo, MongoOper.IS); - MongoCondition con2 = MongoCondition.newInstance("name", "^" + queryNo, MongoOper.LIKE); - MongoCondition con3 = MongoCondition.newInstance("cardNo", queryNo, MongoOper.IS); - MongoCondition con5 = MongoCondition.newInstance("vcCardNo", queryNo, MongoOper.IS); - if (c != null) { - c = c.andOperator(c1.orCondition(new MongoCondition[]{con1, con2, con3, con5}).getCriteria()); + if (null != dueDateStart && dueDateEnd != null) { + if (null != c) { + c = c.where("lastMenses").gte(dueDateStart).lte(dueDateEnd); } else { - c = c1.orCondition(new MongoCondition[]{con1, con2, con3, con5}).getCriteria(); + c = Criteria.where("lastMenses").gte(dueDateStart).lte(dueDateEnd); } } + if (null != c) { condition = condition.andCondition(new MongoCondition(c)); } return condition.toMongoQuery(); } + + public Date getDueDateStart() { + return dueDateStart; + } + + public void setDueDateStart(Date dueDateStart) { + this.dueDateStart = dueDateStart; + } + + public Date getDueDateEnd() { + return dueDateEnd; + } + + public void setDueDateEnd(Date dueDateEnd) { + this.dueDateEnd = dueDateEnd; + } + public Date getOperationDateStart() { return operationDateStart; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AmniocentesisController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AmniocentesisController.java index 0ee848d..ff60656 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AmniocentesisController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AmniocentesisController.java @@ -67,6 +67,20 @@ public class AmniocentesisController extends BaseController { } + /** + * 导出列表 + * @param request + * @param httpServletResponse + * @param amniocentesisQueryRequest + */ + @RequestMapping(method = RequestMethod.GET, value = "/exportAmniocentesisList") + @TokenRequired + public void exportAmniocentesisList(HttpServletRequest request, HttpServletResponse httpServletResponse, + @RequestBody AmniocentesisQueryRequest amniocentesisQueryRequest) + { + amniocentesisFacade.exportAmniocentesisList(amniocentesisQueryRequest,getUserId(request), httpServletResponse); + } + /** * 查看页面接口 @@ -93,8 +107,8 @@ public class AmniocentesisController extends BaseController { */ @TokenRequired @ResponseBody - @RequestMapping(value = "/saveOrUpdateAmniocentesisInfo", method = RequestMethod.POST) - public BaseResponse saveOrUpdateAmniocentesisInfo(HttpServletRequest request, + @RequestMapping(value = "/saveOrUpdateAmnioInfo", method = RequestMethod.POST) + public BaseResponse saveOrUpdateAmnioInfo(HttpServletRequest request, @RequestBody AmniocentesisInfoRequest amniocentesisInfoRequest) { return amniocentesisFacade.saveOrUpdateAmniocentesisInfo(amniocentesisInfoRequest, getUserId(request)); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AmniocentesisFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AmniocentesisFacade.java index ec34071..7236450 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AmniocentesisFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AmniocentesisFacade.java @@ -17,16 +17,19 @@ import com.lyms.platform.operate.web.request.AmniocentesisInfoRequest; import com.lyms.platform.operate.web.request.AmniocentesisQueryRequest; import com.lyms.platform.operate.web.result.AmniocentesisInfo; import com.lyms.platform.operate.web.result.AmniocentesisInfoView; +import com.lyms.platform.operate.web.utils.ResponseUtil; import com.lyms.platform.pojo.AmniocentesisInfoModel; import com.lyms.platform.pojo.AmniocentesisRecordModel; import com.lyms.platform.pojo.AmniocentesisResultModel; import com.lyms.platform.pojo.Patients; import com.lyms.platform.query.AmniocentesisInfoQuery; +import com.lyms.platform.query.AmniocentesisResultQuery; import com.lyms.platform.query.PatientsQuery; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import javax.servlet.http.HttpServletResponse; import java.util.*; /** @@ -63,7 +66,7 @@ public class AmniocentesisFacade { amniocentesisInfoQuery.setCardNo(cardNo); amniocentesisInfoQuery.setHospitalId(hospitalId); data.put("viewData", null); - data.put("viewData", null); + data.put("patientData", null); AmniocentesisInfoModel amniocentesisInfo = amniocentesisInfoService.queryOneAmniocentesis(amniocentesisInfoQuery); if (amniocentesisInfo != null) { @@ -109,6 +112,9 @@ public class AmniocentesisFacade { data.put("areaId",pat.getAreaId()); data.put("streetId",pat.getStreetRegisterId()); data.put("lastMenses",DateUtil.getyyyy_MM_dd(pat.getLastMenses())); + Date dueDate = DateUtil.addDay(DateUtil.addMonth(pat.getLastMenses(), 9), 7); + data.put("dueDate",DateUtil.getyyyy_MM_dd(dueDate)); + data.put("week",DateUtil.getWeekDesc(pat.getLastMenses(),new Date())); } return data; @@ -129,6 +135,12 @@ public class AmniocentesisFacade { return new BaseObjectResponse().setData(view).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg(ErrorCodeConstants.SUCCESS_DESCRIPTION); } + /** + * 保存羊穿申请基本信息 + * @param amniocentesisInfoRequest + * @param userId + * @return + */ public BaseResponse saveOrUpdateAmniocentesisInfo(AmniocentesisInfoRequest amniocentesisInfoRequest, Integer userId) { String hospitalId = autoMatchFacade.getHospitalId(userId); @@ -141,6 +153,7 @@ public class AmniocentesisFacade { } else { + model.setStatus("1"); model.setUserId(userId); model.setHospitalId(hospitalId); model.setCreated(new Date()); @@ -158,6 +171,12 @@ public class AmniocentesisFacade { return new BaseObjectResponse().setData(info).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg(ErrorCodeConstants.SUCCESS_DESCRIPTION); } + /** + * 保存结果 + * @param amnioResultRequest + * @param userId + * @return + */ public BaseResponse saveOrUpdateAmnioResult(AmnioResultRequest amnioResultRequest, Integer userId) { String hospitalId = autoMatchFacade.getHospitalId(userId); @@ -184,7 +203,12 @@ public class AmniocentesisFacade { } - + /** + * 保存手术记录 + * @param amnioRecordRequest + * @param userId + * @return + */ public BaseResponse saveOrUpdateAmnioRecord(AmnioRecordRequest amnioRecordRequest, Integer userId) { String hospitalId = autoMatchFacade.getHospitalId(userId); @@ -197,24 +221,98 @@ public class AmniocentesisFacade { } else { + model.setCreated(new Date()); + model.setOperationUserId(userId); + model.setHospitalId(hospitalId); + amniocentesisRecordService.add(model); + AmniocentesisInfoQuery amniocentesisInfoQuery = new AmniocentesisInfoQuery(); amniocentesisInfoQuery.setId(model.getAmnioId()); AmniocentesisInfoModel amniocentesisInfo = amniocentesisInfoService.queryOneAmniocentesis(amniocentesisInfoQuery); + amniocentesisInfo.setRecordId(model.getId()); amniocentesisInfo.setStatus("2"); + amniocentesisInfo.setOperationDate(model.getOperationDate()); amniocentesisInfoService.update(amniocentesisInfo); - - model.setCreated(new Date()); - model.setOperationUserId(userId); - model.setHospitalId(hospitalId); - amniocentesisRecordService.add(model); } return new BaseObjectResponse().setData(model.getId()).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg(ErrorCodeConstants.SUCCESS_DESCRIPTION); } + /** + * 列表 + * @param queryParam + * @param userId + * @return + */ public BaseResponse queryAmniocentesisList(AmniocentesisQueryRequest queryParam, Integer userId) { String hospitalId = autoMatchFacade.getHospitalId(userId); AmniocentesisInfoQuery amniocentesisInfoQuery = new AmniocentesisInfoQuery(); + amniocentesisInfoQuery.setHospitalId(hospitalId); + + amniocentesisInfoQuery.setPage(queryParam.getPage()); + amniocentesisInfoQuery.setLimit(queryParam.getLimit()); + amniocentesisInfoQuery.setNeed("true"); + List> datas = getData(amniocentesisInfoQuery,queryParam); + return new BaseListResponse().setData(datas).setErrorcode(ErrorCodeConstants.SUCCESS). + setErrormsg(ErrorCodeConstants.SUCCESS_DESCRIPTION).setPageInfo(amniocentesisInfoQuery.getPageInfo()); + } + + public void exportAmniocentesisList(AmniocentesisQueryRequest queryParam, + Integer userId,HttpServletResponse httpServletResponse) { + String hospitalId = autoMatchFacade.getHospitalId(userId); + AmniocentesisInfoQuery amniocentesisInfoQuery = new AmniocentesisInfoQuery(); + amniocentesisInfoQuery.setHospitalId(hospitalId); + + amniocentesisInfoQuery.setPage(queryParam.getPage()); + amniocentesisInfoQuery.setLimit(queryParam.getLimit()); + amniocentesisInfoQuery.setNeed("true"); + List> datas = getData(amniocentesisInfoQuery,queryParam); + + Collections.sort(datas,new Comparator>() { + @Override + public int compare(Map o1, Map o2) { + String weight1 = o1.get("weight").toString(); + String weight2 = o1.get("weight").toString(); + if (StringUtils.isNotEmpty(weight1) && StringUtils.isNotEmpty(weight2)) + { + Double d1 = Double.parseDouble(weight1); + Double d2 = Double.parseDouble(weight2); + return (int)(d1 - d2); + } + return 0; + } + }); + + + Map cnames = new LinkedHashMap<>(); + cnames.put("name","姓名"); + cnames.put("age","年龄"); + cnames.put("week","孕周"); + cnames.put("pregnancyTimes","孕产"); + cnames.put("prodTime","产次"); + cnames.put("phone","联系方式"); + cnames.put("vcCardNo","就诊卡"); + cnames.put("orderDate","预约日期"); + cnames.put("weight","体重"); + cnames.put("operation","手术指征"); + cnames.put("ReferralHospital","转诊机构"); + cnames.put("chip", "芯片"); + cnames.put("amnioCount", "穿刺次数"); + cnames.put("result","羊水染色体结果"); +// cnames.put("deuDate","预产期"); +// cnames.put("tangDanger","唐筛风险"); +// cnames.put("applyDate","申请日期"); +// cnames.put("operationDate","手术日期"); + cnames.put("status", "状态"); + cnames.put("otherRemark", "备注"); + ResponseUtil.responseExcel(cnames, datas, httpServletResponse); + + } + + + private List> getData(AmniocentesisInfoQuery amniocentesisInfoQuery,AmniocentesisQueryRequest queryParam) + { amniocentesisInfoQuery.setQueryNo(queryParam.getQuerNo()); + //申请日期 if (StringUtils.isNotEmpty(queryParam.getApplyDate())) { String[] arrs = queryParam.getApplyDate().split("-"); @@ -222,30 +320,42 @@ public class AmniocentesisFacade { amniocentesisInfoQuery.setApplyDateEnd(DateUtil.parseYMDHMS(arrs[0]+" 23:59:59")); } + //手术日期 if (StringUtils.isNotEmpty(queryParam.getOperationDate())) { String[] arrs = queryParam.getOperationDate().split("-"); amniocentesisInfoQuery.setOperationDateStart(DateUtil.parseYMD(arrs[0])); amniocentesisInfoQuery.setOperationDateEnd(DateUtil.parseYMDHMS(arrs[0] + " 23:59:59")); } - + //预约日期 if (StringUtils.isNotEmpty(queryParam.getOrderDate())) { String[] arrs = queryParam.getOrderDate().split("-"); amniocentesisInfoQuery.setOrderDateStart(DateUtil.parseYMD(arrs[0])); amniocentesisInfoQuery.setOrderDateEnd(DateUtil.parseYMDHMS(arrs[0] + " 23:59:59")); } + //预产期 + if (StringUtils.isNotEmpty(queryParam.getDueDate())) + { + String[] arrs = queryParam.getDueDate().split("-"); + + Date startDate = DateUtil.parseYMD(arrs[0]); + startDate = DateUtil.addDay(DateUtil.addMonth(startDate, -9), -7); + + Date endDate = DateUtil.parseYMD(arrs[0]); + endDate = DateUtil.addDay(DateUtil.addMonth(endDate, -9), -6); + + amniocentesisInfoQuery.setDueDateStart(startDate); + amniocentesisInfoQuery.setDueDateEnd(endDate); + + } + amniocentesisInfoQuery.setResult(queryParam.getResult()); amniocentesisInfoQuery.setResultSelect(queryParam.getResultSelect()); amniocentesisInfoQuery.setReferralHospital(queryParam.getReferralHospital()); amniocentesisInfoQuery.setStatus(queryParam.getStatus()); - amniocentesisInfoQuery.setHospitalId(hospitalId); - amniocentesisInfoQuery.setPage(queryParam.getPage()); - amniocentesisInfoQuery.setLimit(queryParam.getLimit()); - amniocentesisInfoQuery.setNeed("true"); - - List datas = new ArrayList<>(); + List> datas = new ArrayList<>(); List amniocentesisList = amniocentesisInfoService.queryAmniocentesisInfo(amniocentesisInfoQuery); if (CollectionUtils.isNotEmpty(amniocentesisList)) { @@ -257,6 +367,7 @@ public class AmniocentesisFacade { data.put("resultId",model.getResultId()); data.put("name",model.getName()); data.put("phone",model.getPhone()); + data.put("age",DateUtil.getAge(model.getBirthday(),model.getCreated())); data.put("vcCardNo",model.getVcCardNo()); data.put("cardNo",model.getCardNo()); data.put("weight",model.getWeight()); @@ -274,14 +385,22 @@ public class AmniocentesisFacade { data.put("operationDate", model.getOperationDate() == null ? "" :DateUtil.getyyyy_MM_dd(model.getOperationDate())); data.put("amnioCount", model.getAmnioCount()); data.put("result",model.getResult() == null ? "" : "1".equals(model.getResult()) ? "阴性" : "阳性"); //1阴性 2阳性 - data.put("chip",model.getChip() == null ? "" : "0".equals(model.getChip()) ? "无" : "有"); - data.put("status",model.getStatus() == null ? "" : "1".equals(model.getStatus()) + data.put("chip", model.getChip() == null ? "" : "0".equals(model.getChip()) ? "无" : "有"); + data.put("status", model.getStatus() == null ? "" : "1".equals(model.getStatus()) ? "未手术" : "2".equals(model.getStatus()) ? "已手术" : "已诊断"); //1未手术 2已手术 3已诊断 + AmniocentesisResultQuery amniocentesisResultQuery = new AmniocentesisResultQuery(); + amniocentesisResultQuery.setId(model.getResultId()); + AmniocentesisResultModel resultModel = amniocentesisResultService.queryOne(amniocentesisResultQuery); + String otherRemark = ""; + if (resultModel != null) + { + otherRemark = resultModel.getOtherRemark(); + } + data.put("otherRemark", otherRemark); datas.add(data); } } - return new BaseListResponse().setData(datas).setErrorcode(ErrorCodeConstants.SUCCESS). - setErrormsg(ErrorCodeConstants.SUCCESS_DESCRIPTION).setPageInfo(amniocentesisInfoQuery.getPageInfo()); + return datas; } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/AmnioRecordRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/AmnioRecordRequest.java index 2ce21a0..9c76117 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/AmnioRecordRequest.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/AmnioRecordRequest.java @@ -1,6 +1,7 @@ package com.lyms.platform.operate.web.request; import com.lyms.platform.common.base.IBasicRequestConvert; +import com.lyms.platform.common.utils.DateUtil; import com.lyms.platform.pojo.AmniocentesisRecordModel; @@ -104,13 +105,365 @@ public class AmnioRecordRequest implements IBasicRequestConvert