diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IBreastAfterVisitDao.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IBreastAfterVisitDao.java index f90eac4..0c2dbf0 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IBreastAfterVisitDao.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IBreastAfterVisitDao.java @@ -1,6 +1,8 @@ package com.lyms.platform.biz.dal; +import com.lyms.platform.common.dao.operator.MongoQuery; import com.lyms.platform.pojo.BreastAfterVisitModel; +import com.lyms.platform.pojo.CancerScreeningModel; import java.util.List; @@ -20,4 +22,18 @@ public interface IBreastAfterVisitDao { void updateOneBreastAfterVisit(BreastAfterVisitModel breastAfterVisitModel); + /** + * + * 查询列表 + * @param query + * @return + */ + List query(MongoQuery query); + /** + * 查询数据 + * + * @param query + * @return + */ + int count(MongoQuery query); } diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/BreastAfterVisitDaoImpl.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/BreastAfterVisitDaoImpl.java index 6dd353f..8de28f6 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/BreastAfterVisitDaoImpl.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/BreastAfterVisitDaoImpl.java @@ -40,5 +40,25 @@ public class BreastAfterVisitDaoImpl extends BaseMongoDAOImpl query(MongoQuery query) { + return find(query.convertToMongoQuery()); + } + /** + * 查询数据 + * + * @param query + * @return + */ + @Override + public int count(MongoQuery query) { + return (int) count(query.convertToMongoQuery()); + } } diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/BreastAfterVisitService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/BreastAfterVisitService.java index f38c64f..a5116c4 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/BreastAfterVisitService.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/BreastAfterVisitService.java @@ -8,6 +8,7 @@ import com.lyms.platform.common.dao.operator.MongoQuery; import com.lyms.platform.common.enums.YnEnums; import com.lyms.platform.pojo.BreastAfterVisitModel; import com.lyms.platform.pojo.CancerScreeningModel; +import com.lyms.platform.query.BreastAfterVisitQuery; import com.lyms.platform.query.CancerScreeningQuery; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -52,5 +53,18 @@ public class BreastAfterVisitService { breastAfterVisitModel.setModified(new Date()); iBreastAfterVisitDao.updateOneBreastAfterVisit(breastAfterVisitModel); } - + /** + * 分页查询列表 + * @param breastAfterVisitQuery + * @return + */ + public List queryBreastAfterVisitList(BreastAfterVisitQuery breastAfterVisitQuery) { + MongoQuery query = breastAfterVisitQuery.convertToQuery(); + System.out.println(query.convertToMongoQuery().getQueryObject().toString()); + if (StringUtils.isNotEmpty(breastAfterVisitQuery.getNeed())) { + breastAfterVisitQuery.mysqlBuild(iBreastAfterVisitDao.count(breastAfterVisitQuery.convertToQuery())); + query.start(breastAfterVisitQuery.getOffset()).end(breastAfterVisitQuery.getLimit()); + } + return iBreastAfterVisitDao.query(query.addOrder(Sort.Direction.DESC, "checkDate")); + } } \ No newline at end of file diff --git a/platform-dal/src/main/java/com/lyms/platform/query/BreastAfterVisitQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/BreastAfterVisitQuery.java index 1150158..12243fd 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/BreastAfterVisitQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/BreastAfterVisitQuery.java @@ -62,9 +62,10 @@ public class BreastAfterVisitQuery extends BaseQuery implements IConvertToNative private Date afterVisitTimeStart; private Date afterVisitTimeEnd; //预约下次追访日期 - private Date nextAfterVisitTimeStart; - private Date nextAfterVisitTimeEnd; - + private Date nextAfterVisitTime; + //逾期天数 + private Date overdueStart; + private Date overdueEnd; //随访状态(0:待随访,1:已随访) private Integer type; @@ -75,6 +76,165 @@ public class BreastAfterVisitQuery extends BaseQuery implements IConvertToNative private Integer yn; + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getParentId() { + return parentId; + } + + public void setParentId(String parentId) { + this.parentId = parentId; + } + + public String getHospitalId() { + return hospitalId; + } + + public void setHospitalId(String hospitalId) { + this.hospitalId = hospitalId; + } + + public String getQueryNo() { + return queryNo; + } + + public void setQueryNo(String queryNo) { + this.queryNo = queryNo; + } + + public String getProvinceId() { + return provinceId; + } + + public void setProvinceId(String provinceId) { + this.provinceId = provinceId; + } + + public String getCityId() { + return cityId; + } + + public void setCityId(String cityId) { + this.cityId = cityId; + } + + public String getAreaId() { + return areaId; + } + + public void setAreaId(String areaId) { + this.areaId = areaId; + } + + public String getStreetId() { + return streetId; + } + + public void setStreetId(String streetId) { + this.streetId = streetId; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getNewRxCssj() { + return newRxCssj; + } + + public void setNewRxCssj(String newRxCssj) { + this.newRxCssj = newRxCssj; + } + + public String getRxXJc() { + return rxXJc; + } + + public void setRxXJc(String rxXJc) { + this.rxXJc = rxXJc; + } + + public Date getCheckDateStart() { + return checkDateStart; + } + + public void setCheckDateStart(Date checkDateStart) { + this.checkDateStart = checkDateStart; + } + + public Date getCheckDateEnd() { + return checkDateEnd; + } + + public void setCheckDateEnd(Date checkDateEnd) { + this.checkDateEnd = checkDateEnd; + } + + public Date getAfterVisitTimeStart() { + return afterVisitTimeStart; + } + + public void setAfterVisitTimeStart(Date afterVisitTimeStart) { + this.afterVisitTimeStart = afterVisitTimeStart; + } + + public Date getAfterVisitTimeEnd() { + return afterVisitTimeEnd; + } + + public void setAfterVisitTimeEnd(Date afterVisitTimeEnd) { + this.afterVisitTimeEnd = afterVisitTimeEnd; + } + + public Date getNextAfterVisitTime() { + return nextAfterVisitTime; + } + + public void setNextAfterVisitTime(Date nextAfterVisitTime) { + this.nextAfterVisitTime = nextAfterVisitTime; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public Integer getYn() { + return yn; + } + + public void setYn(Integer yn) { + this.yn = yn; + } + + public Date getOverdueStart() { + return overdueStart; + } + + public void setOverdueStart(Date overdueStart) { + this.overdueStart = overdueStart; + } + + public Date getOverdueEnd() { + return overdueEnd; + } + + public void setOverdueEnd(Date overdueEnd) { + this.overdueEnd = overdueEnd; + } /** * @return @@ -155,11 +315,34 @@ public class BreastAfterVisitQuery extends BaseQuery implements IConvertToNative c = Criteria.where("afterVisitTime").gte(afterVisitTimeStart).lte(afterVisitTimeEnd); } } - if (null != nextAfterVisitTimeStart && nextAfterVisitTimeEnd != null) { + if (null != overdueStart) { + if (c != null) { + c = c.and("nextAfterVisitTime").gte(overdueStart); + } else { + c = Criteria.where("nextAfterVisitTime").gte(overdueStart); + } + } + if (null != nextAfterVisitTime) { if (null != c) { - c = c.and("nextAfterVisitTime").gte(nextAfterVisitTimeStart).lte(nextAfterVisitTimeEnd); + if(null!=overdueEnd){ + if (c.getCriteriaObject().containsField("nextAfterVisitTime")){ + c = c.lte(overdueEnd); + }else { + c = c.and("nextAfterVisitTime").lte(overdueEnd); + } + }else { + if (c.getCriteriaObject().containsField("nextAfterVisitTime")){ + c = c.lte(nextAfterVisitTime); + }else { + c = c.and("nextAfterVisitTime").lte(nextAfterVisitTime); + } + } } else { - c = Criteria.where("nextAfterVisitTime").gte(nextAfterVisitTimeStart).lte(nextAfterVisitTimeEnd); + if(null!=overdueEnd){ + c = Criteria.where("nextAfterVisitTime").lte(overdueEnd); + }else { + c = Criteria.where("nextAfterVisitTime").lte(nextAfterVisitTime); + } } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/CancerScreeningController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/CancerScreeningController.java index 8cff0b6..2583bf1 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/CancerScreeningController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/CancerScreeningController.java @@ -6,6 +6,7 @@ import com.lyms.platform.common.base.LoginContext; import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.common.utils.StringUtils; import com.lyms.platform.operate.web.facade.CancerScreeningFacade; +import com.lyms.platform.operate.web.request.BreastAfterVisitRequest; import com.lyms.platform.operate.web.request.CancerScreeningRequest; import com.lyms.platform.pojo.CancerScreeningModel; import com.lyms.platform.pojo.ResidentsArchiveModel; @@ -136,4 +137,18 @@ public class CancerScreeningController extends BaseController { HttpServletRequest request) { return cancerScreenService.doSyncCancerScreen(); } + + /** + * 乳腺癌追访筛查列表 + * @param breastAfterVisitRequest + * @param request + * @return + */ + @ResponseBody + @RequestMapping(method = RequestMethod.GET, value = "/breastAfterVisitList") + @TokenRequired + public BaseResponse breastAfterVisitList(BreastAfterVisitRequest breastAfterVisitRequest, HttpServletRequest request) { + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + return cancerScreenService.breastAfterVisitList(breastAfterVisitRequest, loginState.getId()); + } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/CancerScreeningFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/CancerScreeningFacade.java index dde8b39..89ab63f 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/CancerScreeningFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/CancerScreeningFacade.java @@ -11,6 +11,7 @@ import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.common.result.RespBuilder; import com.lyms.platform.common.utils.*; +import com.lyms.platform.operate.web.request.BreastAfterVisitRequest; import com.lyms.platform.operate.web.request.CancerScreeningRequest; import com.lyms.platform.operate.web.result.CancerScreeningResult; import com.lyms.platform.operate.web.utils.CommonsHelper; @@ -25,6 +26,7 @@ import com.lyms.platform.pojo.BasicConfig; import com.lyms.platform.pojo.BreastAfterVisitModel; import com.lyms.platform.pojo.CancerScreeningModel; import com.lyms.platform.pojo.ResidentsArchiveModel; +import com.lyms.platform.query.BreastAfterVisitQuery; import com.lyms.platform.query.CancerScreeningQuery; import com.lyms.platform.query.ResidentsArchiveQuery; import org.apache.commons.collections.CollectionUtils; @@ -636,6 +638,7 @@ public class CancerScreeningFacade { breastAfterVisitModel.setCode(cancerScreeningModel.getCode()); breastAfterVisitModel.setCheckDate(cancerScreeningModel.getCreated()); breastAfterVisitModel.setType(0); + breastAfterVisitModel.setYn(1); breastAfterVisitService.addOneBreastAfterVisit(breastAfterVisitModel); }else { breastAfterVisitModel.setNewRxCssj(cancerScreeningModel.getNewRxCssj()); @@ -652,6 +655,101 @@ public class CancerScreeningFacade { e.printStackTrace(); } } + /** + * 乳腺癌追访列表 + * + * @param queryRequest + * @param id + * @return + */ + public BaseResponse breastAfterVisitList(BreastAfterVisitRequest queryRequest, Integer id) { + + //根据用户id获取医院ID + String hospitalId = autoMatchFacade.getHospitalId(id); + //查询条件 + BreastAfterVisitQuery query = new BreastAfterVisitQuery(); + query.setLimit(queryRequest.getLimit()); + query.setPage(queryRequest.getPage()); + query.setNeed("need"); + query.setYn(YnEnums.YES.getId()); + query.setQueryNo(queryRequest.getQueryNo()); + if (hospitalId != null) { + query.setHospitalId(hospitalId); + } + //检查日期筛选 + if (StringUtils.isNotEmpty(queryRequest.getCheckDate())) { + String[] arrs = queryRequest.getCheckDate().split(" - "); + query.setCheckDateStart(DateUtil.parseYMD(arrs[0])); + query.setCheckDateEnd(new Date(DateUtil.parseYMD(arrs[1]).getTime() + 24 * 60 * 60 * 1000 - 1)); + } + //下次追访时间保存时已经加过时间逻辑,这里直接小于等于当前时间(默认规则) + query.setNextAfterVisitTime(new Date()); + //逾期天数 + if (null != queryRequest.getOverdueStart()) { + Calendar instance = Calendar.getInstance(); + instance.setTime(new Date()); + instance.add(Calendar.DATE, -queryRequest.getOverdueStart()); + instance.set(Calendar.HOUR_OF_DAY, 23); + instance.set(Calendar.MINUTE, 59); + instance.set(Calendar.SECOND, 59); + instance.set(Calendar.MILLISECOND, 999); + Date end = instance.getTime(); + query.setOverdueEnd(end); + } + if (null != queryRequest.getOverdueEnd()) { + Calendar instance = Calendar.getInstance(); + instance.setTime(new Date()); + instance.add(Calendar.DATE, -queryRequest.getOverdueEnd()); + instance.set(Calendar.HOUR_OF_DAY, 00); + instance.set(Calendar.MINUTE, 00); + instance.set(Calendar.SECOND, 00); + instance.set(Calendar.MILLISECOND, 000); + Date start = instance.getTime(); + query.setOverdueStart(start); + } + //地区 + query.setCityId(queryRequest.getCityId()); + query.setAreaId(queryRequest.getAreaId()); + query.setStreetId(queryRequest.getStreetId()); + //超声所见 + query.setNewRxCssj(queryRequest.getNewRxCssj()); + //隆化乳腺X钼靶检查 + query.setRxXJc(queryRequest.getRxXJc()); + //追访状态 + query.setType(queryRequest.getType()); + List list = new ArrayList(); + List modelList = breastAfterVisitService.queryBreastAfterVisitList(query); + if (CollectionUtils.isNotEmpty(modelList)) { + for (BreastAfterVisitModel model : modelList) { + Map map = new HashMap <>(); + map.put("id", model.getId()); + map.put("parentId", model.getParentId()); + map.put("name", model.getUsername()); + map.put("sex", "女"); + map.put("cardNum", model.getCertificateNum()); + map.put("phone", model.getPhone()); + map.put("age", DateUtil.getAge(model.getBirthday())); + map.put("liveAddress", CommonsHelper.getResidence(model.getProvinceId(), model.getCityId(), model.getAreaId(), model.getStreetId(), model.getAddress(), basicConfigService)); + //逾期时间 + int yqsj=0; + if(null!=model.getNextAfterVisitTime()){ + if(DateUtil.getDays(model.getNextAfterVisitTime(),new Date())>0){ + yqsj=DateUtil.getDays(model.getNextAfterVisitTime(),new Date()); + } + } + map.put("yqsj",yqsj); + map.put("nextAfterVisitTime", DateUtil.getyyyy_MM_dd(model.getNextAfterVisitTime()));//下次预约时间 + map.put("checkDate", DateUtil.getyyyy_MM_dd(model.getCheckDate()));//检査日期 + map.put("newRxCssj",LhUltrasoundContent.getName(StringUtils.isNotEmpty(model.getNewRxCssj())?model.getNewRxCssj():null));//超声所见 + map.put("rxXJc",LhBreastXRayContent.getName(StringUtils.isNotEmpty(model.getRxXJc())?model.getRxXJc():null));//隆化乳腺X钼靶检查 + list.add(map); + } + } + return new BaseListResponse().setData(list).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setPageInfo(query.getPageInfo()); + } + + + public static final String AREA_URL = PropertiesUtils.getPropertyValue("area_url");