From 2d90526d3c14f57c4e751b04fdf5c4322623c182 Mon Sep 17 00:00:00 2001 From: litao Date: Mon, 3 Jul 2017 17:15:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=8D=E6=9F=A5=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/PostReviewController.java | 12 ++-- .../platform/operate/web/service/IBaseService.java | 6 +- .../operate/web/service/IPostReviewService.java | 4 +- .../operate/web/service/impl/BaseServiceImpl.java | 15 ++++- .../web/service/impl/PostReviewServiceImpl.java | 76 ++++++++++++++++++++-- 5 files changed, 101 insertions(+), 12 deletions(-) diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PostReviewController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PostReviewController.java index 59bfad3..ded8300 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PostReviewController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PostReviewController.java @@ -119,13 +119,17 @@ public class PostReviewController extends BaseController { * 复查管理 * @param startDate * @param endDate - * @param doctorName + * @param doctorId * @param key 姓名/联系方式/就诊卡 + * @param limit + * @param page * @return */ @RequestMapping(method = RequestMethod.GET, value = "/postpartum/review") - public BaseObjectResponse postpartumReview(Date startDate, Date endDate, String doctorName, String key - ,Integer page, Integer limit) { - return postReviewService.postpartumReview(startDate, endDate, doctorName, key); + @TokenRequired + @ResponseBody + public BaseObjectResponse postpartumReview(Date startDate, Date endDate, String doctorId, + String key, Integer page, Integer limit, HttpServletRequest request) { + return postReviewService.postpartumReview(getUserId(request), startDate, endDate, doctorId, key, page, limit); } } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IBaseService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IBaseService.java index 7986f3b..54224ef 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IBaseService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IBaseService.java @@ -2,6 +2,8 @@ package com.lyms.platform.operate.web.service; import com.lyms.platform.common.result.PageResult; +import org.springframework.data.mongodb.core.query.Query; + import java.util.List; /** @@ -18,5 +20,7 @@ public interface IBaseService { * @param params * @return */ - public PageResult findPage(String sql, Integer currentPage, Integer pageSize, List params); + PageResult findPage(String sql, Integer currentPage, Integer pageSize, List params); + + PageResult findMongoPage (Class entity, Query query, Integer page, Integer limit); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IPostReviewService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IPostReviewService.java index a21b200..63b0c96 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IPostReviewService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IPostReviewService.java @@ -7,6 +7,6 @@ import java.util.Date; /** * Created by litao on 2017/7/3 0003 */ -public interface IPostReviewService { - BaseObjectResponse postpartumReview(Date startDate, Date endDate, String doctorName, String key); +public interface IPostReviewService extends IBaseService { + BaseObjectResponse postpartumReview(Integer userId, Date startDate, Date endDate, String doctorId, String key, Integer page, Integer limit); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BaseServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BaseServiceImpl.java index 0fd0e48..f3d0c20 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BaseServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BaseServiceImpl.java @@ -5,8 +5,9 @@ import com.lyms.platform.operate.web.dao.IBaseDao; import com.lyms.platform.operate.web.service.IBaseService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.stereotype.Service; - +import org.springframework.data.mongodb.core.query.Query; import java.util.List; import java.util.Map; @@ -21,6 +22,9 @@ public class BaseServiceImpl implements IBaseService { @Qualifier("baseDaoImpl") private IBaseDao baseDao; + @Autowired + private MongoTemplate mongoTemplate; + @Override public PageResult findPage(String sql, Integer currentPage, Integer pageSize, List params) { pageSize = pageSize == null ? 10 : pageSize; @@ -30,4 +34,13 @@ public class BaseServiceImpl implements IBaseService { List> rows = baseDao.findList(sql, currentPage, pageSize, params); return new PageResult(count, currentPage, pageSize, rows); } + + @Override + public PageResult findMongoPage(Class entity, Query query, Integer page, Integer limit) { + Long count = mongoTemplate.count(query, entity); + query.skip((page - 1) * limit); + query.limit(limit); + List rows = mongoTemplate.find(query, entity); + return new PageResult(count.intValue(), page, limit, rows); + } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/PostReviewServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/PostReviewServiceImpl.java index 6dccf90..8e54d34 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/PostReviewServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/PostReviewServiceImpl.java @@ -1,28 +1,96 @@ package com.lyms.platform.operate.web.service.impl; import com.lyms.platform.common.result.BaseObjectResponse; +import com.lyms.platform.common.result.PageResult; import com.lyms.platform.common.result.RespBuilder; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.operate.web.facade.AutoMatchFacade; import com.lyms.platform.operate.web.service.IPostReviewService; +import com.lyms.platform.operate.web.utils.MongoUtil; +import com.lyms.platform.permission.dao.master.MasterUsersMapper; +import com.lyms.platform.permission.model.Users; +import com.lyms.platform.pojo.Patients; import com.lyms.platform.pojo.PostReviewModel; +import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; -import java.util.Date; +import java.util.*; /** * Created by litao on 2017/7/3 0003 */ @Service -public class PostReviewServiceImpl implements IPostReviewService { +public class PostReviewServiceImpl extends BaseServiceImpl implements IPostReviewService { @Autowired private MongoTemplate mongoTemplate; + @Autowired + private AutoMatchFacade autoMatchFacade; + + @Autowired + private MasterUsersMapper usersMapper; + + @Autowired + private MongoUtil mongoUtil; + @Override - public BaseObjectResponse postpartumReview(Date startDate, Date endDate, String doctorName, String key) { - return RespBuilder.buildSuccess(mongoTemplate.findOne(Query.query(Criteria.where("id").is("57c7e2fb28b66ec7a1bef00b")), PostReviewModel.class)); + public BaseObjectResponse postpartumReview(Integer userId, Date startDate, Date endDate, String doctorId, String key, Integer page, Integer limit) { + String hospitalId = autoMatchFacade.getHospitalId(userId); + Query query = Query.query(Criteria.where("hospitalId").is(hospitalId).and("yn").is(1)); + if(startDate != null && endDate != null) { + query.addCriteria(Criteria.where("checkTime").gte(startDate).lt(DateUtil.addDay(endDate, 1))); + } + if(StringUtils.isNotEmpty(doctorId)) { + query.addCriteria(Criteria.where("prodDoctor").is(doctorId)); + } + + if(StringUtils.isNotEmpty(key)) { + Criteria criteria = new Criteria(); + criteria.orOperator(Criteria.where("username").is(key), Criteria.where("vcCardNo").is(key), Criteria.where("phone").is(key)); + List patients = mongoUtil.findField(Patients.class, criteria, "id"); + if(CollectionUtils.isEmpty(patients)) { + return RespBuilder.buildSuccess(new PageResult(0, page, limit, null)); + } + List ids = new ArrayList<>(); + for (Patients patient : patients) { + ids.add(patient.getId()); + } + query.addCriteria(Criteria.where("parentId").in(ids)); + } + + PageResult pageResult = findMongoPage(PostReviewModel.class, query, page, limit); + List grid = (List) pageResult.getGrid(); + + List> rest = new ArrayList<>(); + for (PostReviewModel model : grid) { + Map tempMap = new HashMap<>(); + Patients p = mongoTemplate.findById(model.getParentId(), Patients.class); + tempMap.put("checkTime", model.getCheckTime()); /** 复查日期 */ + tempMap.put("hcertificateNum", p == null ? null : p.getHcertificateNum()); /** 证件号 */ + tempMap.put("username", p == null ? null : p.getUsername()); /** 姓名 */ + tempMap.put("age", p == null ? null : DateUtil.getAge(p.getBirth())); /** 年龄 */ + tempMap.put("day", p == null ? null : model.getDay()); /** 产后天数 */ + tempMap.put("reviewCount", mongoTemplate.count(Query.query(Criteria.where("parentId").is(model.getParentId())), PostReviewModel.class)); /** 复查次数 */ + tempMap.put("reviewHospitalCount", mongoTemplate.count(Query.query(Criteria.where("parentId").is(model.getParentId()) + .and("hospitalId").is(model.getHospitalId())), PostReviewModel.class)); /** 本院复查次数 */ + String prodDoctor = model.getProdDoctor(); + if(StringUtils.isNotEmpty(prodDoctor)) { + Users users = usersMapper.getUsers(Integer.parseInt(prodDoctor)); + tempMap.put("doctorName", users == null ? null : users.getName()); /** 检查医生 */ + } else { + tempMap.put("doctorName", null); + } + tempMap.put("phone", p == null ? null : p.getPhone()); + rest.add(tempMap); + } + pageResult.setGrid(rest); + return RespBuilder.buildSuccess(pageResult); } } -- 1.8.3.1