From 20e26f0fed55c3bbd2eb1b2f2ff577b085d73d21 Mon Sep 17 00:00:00 2001 From: "litao@lymsh.com" Date: Wed, 19 Jul 2017 18:14:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E7=94=9F=E5=84=BF=E8=AE=BF=E8=A7=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lyms/platform/common/result/ResponseCode.java | 4 +- .../java/com/lyms/platform/pojo/NewbornVisit.java | 78 +++++++---- .../web/controller/NewbornVisitControoler.java | 17 ++- .../operate/web/service/INewbornVisitService.java | 6 +- .../web/service/impl/NewbornServiceImpl.java | 150 +++++++++++++++++---- .../lyms/platform/operate/web/utils/MongoUtil.java | 1 - 6 files changed, 196 insertions(+), 60 deletions(-) diff --git a/platform-common/src/main/java/com/lyms/platform/common/result/ResponseCode.java b/platform-common/src/main/java/com/lyms/platform/common/result/ResponseCode.java index 7b1351f..7ea38bf 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/result/ResponseCode.java +++ b/platform-common/src/main/java/com/lyms/platform/common/result/ResponseCode.java @@ -27,7 +27,9 @@ public enum ResponseCode { COUPON_NOT_UNIQUE(1002, "优惠券有多个"), COUPON_TIME_OUT(1003, "当前优惠券不在使用时间范围内"), COUPON_IS_USERD(1004, "优惠券已被使用"), - COUPON_IS_DISABLED(1005, "优惠券已被禁用"); + COUPON_IS_DISABLED(1005, "优惠券已被禁用"), + + NEED_BUILD(1101, "未找到建档信息"); private Integer code; private String msg; diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/NewbornVisit.java b/platform-dal/src/main/java/com/lyms/platform/pojo/NewbornVisit.java index 93fd31c..dddce97 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/NewbornVisit.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/NewbornVisit.java @@ -21,10 +21,14 @@ public class NewbornVisit { // 操作人ID private String operationId; + private String hositalId; + private String parentId; private String babyId; + private String pid; + // 访视时间 private Date checkTime; @@ -32,7 +36,7 @@ public class NewbornVisit { private String checkTimeDesc; // 访视机构 - private String hospitalId; + private String visitHositalId; // 喂养方式 纯母乳/混合/人工 private String feedType; @@ -142,22 +146,6 @@ public class NewbornVisit { // 下次访视时间说明 private String nextVisitTimeDesc; - public String getParentId() { - return parentId; - } - - public void setParentId(String parentId) { - this.parentId = parentId; - } - - public String getBabyId() { - return babyId; - } - - public void setBabyId(String babyId) { - this.babyId = babyId; - } - public String getId() { return id; } @@ -182,6 +170,46 @@ public class NewbornVisit { this.yn = yn; } + public String getOperationId() { + return operationId; + } + + public void setOperationId(String operationId) { + this.operationId = operationId; + } + + public String getHositalId() { + return hositalId; + } + + public void setHositalId(String hositalId) { + this.hositalId = hositalId; + } + + public String getParentId() { + return parentId; + } + + public void setParentId(String parentId) { + this.parentId = parentId; + } + + public String getBabyId() { + return babyId; + } + + public void setBabyId(String babyId) { + this.babyId = babyId; + } + + public String getPid() { + return pid; + } + + public void setPid(String pid) { + this.pid = pid; + } + public Date getCheckTime() { return checkTime; } @@ -198,12 +226,12 @@ public class NewbornVisit { this.checkTimeDesc = checkTimeDesc; } - public String getHospitalId() { - return hospitalId; + public String getVisitHositalId() { + return visitHositalId; } - public void setHospitalId(String hospitalId) { - this.hospitalId = hospitalId; + public void setVisitHositalId(String visitHositalId) { + this.visitHositalId = visitHositalId; } public String getFeedType() { @@ -302,14 +330,6 @@ public class NewbornVisit { this.respiratoryRate = respiratoryRate; } - public String getOperationId() { - return operationId; - } - - public void setOperationId(String operationId) { - this.operationId = operationId; - } - public String getSkin() { return skin; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/NewbornVisitControoler.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/NewbornVisitControoler.java index 6e87bce..fada51f 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/NewbornVisitControoler.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/NewbornVisitControoler.java @@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; +import java.util.Date; /** * 新生儿访视 @@ -26,7 +27,21 @@ public class NewbornVisitControoler extends BaseController { @RequestMapping(method = RequestMethod.POST) @ResponseBody public BaseObjectResponse add(HttpServletRequest request, NewbornVisit newbornVisit) { - return visitService.add(getUserId(request), newbornVisit); + return visitService.addOrUpdate(getUserId(request), newbornVisit); + } + + /** + * 新生儿访视管理 + * @param startDate 访视开始日期 + * @param endDate 访视结束日期 + * @param doctor 访视医生 + * @param key 儿童姓名(模糊查询)/母亲联系方式/母亲证件号 + * @return + */ + @RequestMapping(method = RequestMethod.GET) + @ResponseBody + public BaseObjectResponse list(HttpServletRequest request, Date startDate, Date endDate, String doctor, String key, Integer page, Integer limit) { + return visitService.list(startDate, endDate, doctor, getUserId(request), key, page, limit); } @RequestMapping(value = "/init", method = RequestMethod.GET) diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/INewbornVisitService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/INewbornVisitService.java index 49f3877..4be63af 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/INewbornVisitService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/INewbornVisitService.java @@ -3,13 +3,13 @@ package com.lyms.platform.operate.web.service; import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.pojo.NewbornVisit; -import javax.servlet.http.HttpServletResponse; import java.util.Date; -import java.util.Map; public interface INewbornVisitService extends IBaseService { BaseObjectResponse init(); - BaseObjectResponse add(Integer userId, NewbornVisit newbornVisit); + BaseObjectResponse addOrUpdate(Integer userId, NewbornVisit newbornVisit); + + BaseObjectResponse list(Date startDate, Date endDate, String doctor, Integer userId, String key, Integer page, Integer limit); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/NewbornServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/NewbornServiceImpl.java index d112e53..1ecbb3f 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/NewbornServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/NewbornServiceImpl.java @@ -1,42 +1,33 @@ package com.lyms.platform.operate.web.service.impl; -import com.alibaba.fastjson.JSON; -import com.lyms.hospitalapi.pojo.ReportModel; -import com.lyms.platform.biz.service.CommonService; +import com.lyms.platform.biz.service.DataPermissionService; import com.lyms.platform.common.enums.*; 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.result.ResponseCode; import com.lyms.platform.common.utils.DateUtil; import com.lyms.platform.common.utils.EnumUtil; -import com.lyms.platform.operate.web.dao.IReportDao; -import com.lyms.platform.operate.web.facade.AccessPermissionFacade; +import com.lyms.platform.common.utils.MongoConvertHelper; +import com.lyms.platform.common.utils.ReflectionUtils; import com.lyms.platform.operate.web.facade.AutoMatchFacade; import com.lyms.platform.operate.web.service.INewbornVisitService; -import com.lyms.platform.operate.web.service.IReportService; -import com.lyms.platform.operate.web.utils.*; -import com.lyms.platform.permission.dao.master.CouponMapper; -import com.lyms.platform.permission.model.Organization; +import com.lyms.platform.operate.web.utils.CollectionUtils; +import com.lyms.platform.operate.web.utils.MongoUtil; +import com.lyms.platform.permission.dao.slave.UsersMapper; import com.lyms.platform.permission.model.Users; -import com.lyms.platform.permission.service.OrganizationService; -import com.lyms.platform.permission.service.UsersService; import com.lyms.platform.pojo.*; -import com.lymsh.platform.reportdata.model.echarts.Series; -import org.apache.commons.collections.MapUtils; +import com.lyms.platform.query.DataPermissionsModelQuery; import org.apache.commons.lang.StringUtils; 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.data.mongodb.core.query.Update; import org.springframework.stereotype.Service; import org.springframework.util.Assert; -import scala.Int; -import javax.servlet.http.HttpServletResponse; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; import java.util.*; /** @@ -50,6 +41,18 @@ public class NewbornServiceImpl extends BaseServiceImpl implements INewbornVisit @Autowired private MongoTemplate mongoTemplate; + @Autowired + private DataPermissionService dataPermissionService; + + @Autowired + private AutoMatchFacade autoMatchFacade; + + @Autowired + private MongoUtil mongoUtil; + +// @Autowired + private UsersMapper usersMapper; + @Override public BaseObjectResponse init() { List> feedType = EnumUtil.toJson(FeedTypeEnums.class); @@ -63,15 +66,112 @@ public class NewbornServiceImpl extends BaseServiceImpl implements INewbornVisit } @Override - public BaseObjectResponse add(Integer userId, NewbornVisit newbornVisit) { - newbornVisit.setOperationId(userId.toString()); - newbornVisit.setCreated(new Date()); - newbornVisit.setYn("1"); + public BaseObjectResponse addOrUpdate(Integer userId, NewbornVisit newbornVisit) { newbornVisit.setFeedType(newbornVisit.getFeedType() == null ? null : FeedTypeEnums.get(Integer.parseInt(newbornVisit.getFeedType())).getName()); newbornVisit.setSkin(newbornVisit.getSkin() == null ? null : SkinEnums.get(Integer.parseInt(newbornVisit.getSkin())).getName()); - newbornVisit.setFeedType(newbornVisit.getFeedType() == null ? null : FeedTypeEnums.get(Integer.parseInt(newbornVisit.getFeedType())).getName()); - newbornVisit.setFeedType(newbornVisit.getFeedType() == null ? null : FeedTypeEnums.get(Integer.parseInt(newbornVisit.getFeedType())).getName()); - mongoTemplate.save(newbornVisit); + newbornVisit.setComplexion(newbornVisit.getComplexion() == null ? null : BregmaticEnums.get(Integer.parseInt(newbornVisit.getComplexion())).getName()); + newbornVisit.setUmbilicalCord(newbornVisit.getUmbilicalCord() == null ? null : UmbilicalCordEnums.get(Integer.parseInt(newbornVisit.getUmbilicalCord())).getName()); + newbornVisit.setHositalId(autoMatchFacade.getHospitalId(userId)); + // newbornVisit.setNextVisitTime(newbornVisit.getUmbilicalCord() == null ? null : UmbilicalCordEnums.get(Integer.parseInt(newbornVisit.getUmbilicalCord())).getName()); + if(StringUtils.isEmpty(newbornVisit.getId())) { + String babyId = null; + if(!buildArchive(userId, newbornVisit.getPid(), babyId)) { + return RespBuilder.buildSuccess(ResponseCode.NEED_BUILD); + } + newbornVisit.setBabyId(babyId); + newbornVisit.setId(UUID.randomUUID().toString().replace("-", "")); + newbornVisit.setOperationId(userId.toString()); + newbornVisit.setCreated(new Date()); + newbornVisit.setYn("1"); + mongoTemplate.save(newbornVisit); + } else { + newbornVisit.setId(UUID.randomUUID().toString().replace("-", "")); + newbornVisit.setOperationId(userId.toString()); + newbornVisit.setCreated(new Date()); + newbornVisit.setYn("1"); + Update update = MongoConvertHelper.convertToNativeUpdate(ReflectionUtils.getUpdateField(newbornVisit)); + mongoTemplate.updateFirst(Query.query(Criteria.where("id").is(newbornVisit.getId())), update, NewbornVisit.class); + + } return RespBuilder.buildSuccess(); } + + /** + * 隐藏建档 + * @param userId + * @return + */ + private boolean buildArchive(Integer userId, String pid, String babyId) { + Assert.notNull(pid, "pid 不能为null"); + String hospitalId = autoMatchFacade.getHospitalId(userId); + // 如果本院已有记录 直接走正常流程 + BabyModel baby = mongoTemplate.findOne(Query.query(Criteria.where("pid").is(pid).and("hospitalId").is(hospitalId)).with(new Sort(Sort.Direction.DESC, "created")), BabyModel.class); + if(baby != null) { + babyId = baby.getId(); + return true; + } + + DataPermissionsModelQuery dataPermissionsModelQuery = new DataPermissionsModelQuery(); + dataPermissionsModelQuery.setUserId(userId); + List permissionsModels = dataPermissionService.queryPermission(dataPermissionsModelQuery); + if (CollectionUtils.isNotEmpty(permissionsModels)) { + Set set = permissionsModels.get(0).getData().keySet(); + Iterator it = set.iterator(); + BabyModel babyModel = mongoTemplate.findOne(Query.query(Criteria.where("hospitalId").in(set) + .and("pid").is(pid)).with(new Sort(Sort.Direction.DESC, "created")), BabyModel.class); + if(babyModel == null) { + return false; // 需要建档 + } + babyId = UUID.randomUUID().toString().replace("-", ""); + babyModel.setId(babyId); + babyModel.setHospitalId(hospitalId); + babyModel.setEnable("2"); + babyModel.setCreated(new Date()); + mongoTemplate.save(babyModel); + return true; + } + return false; + } + + @Override + public BaseObjectResponse list(Date startDate, Date endDate, String doctor, Integer userId, String key, Integer page, Integer limit) { + String hospitalId = autoMatchFacade.getHospitalId(userId); + Criteria criteria = Criteria.where("yn").ne("0").and("hospitalId").is(hospitalId); + if(startDate != null && endDate != null) { + criteria.and("checkTime").gte(startDate).lt(DateUtil.addDay(endDate, 1)); + } + if(StringUtils.isNotBlank(doctor)) { + criteria.and("doctor").is(doctor); + } + PageResult pageResult = findMongoPage(NewbornVisit.class, new Query(criteria), page, limit); + List newbornVisits = (List) pageResult.getGrid(); + List> restMap = new ArrayList<>(); + for (NewbornVisit visit : newbornVisits) { + Map temp = new HashMap<>(); + + temp.put("checkTime", visit.getCheckTime() == null ? null : DateUtil.getyyyy_MM_dd(visit.getCheckTime())); // 复查访视时间 + String pid = visit.getPid(); + if(StringUtils.isNotBlank(pid)) { + PersonModel person = mongoTemplate.findById(pid, PersonModel.class); + if(person != null) { + temp.put("cardNo", person.getCardNo()); + temp.put("name", person.getName()); + temp.put("age", DateUtil.getAge(person.getBirth())); + temp.put("phone", person.getPhone()); + } + Patients patients = mongoTemplate.findById(visit.getParentId(), Patients.class); + if(patients != null) { + int days = DateUtil.daysBetween(patients.getFmDate(), new Date()); + temp.put("days", "产后"+days+"天"); + } + temp.put("count", mongoTemplate.count(new Query(criteria), NewbornVisit.class)); + temp.put("benyuan", mongoTemplate.count(new Query(criteria.and("visitHositalId").is(hospitalId)), NewbornVisit.class)); + Users users = usersMapper.getUsers(Integer.parseInt(visit.getDoctor())); + temp.put("doctorName", users == null ? null : users.getName()); + } + + } + return RespBuilder.buildSuccess(newbornVisits); + } + } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/MongoUtil.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/MongoUtil.java index 23163d6..aa6c2de 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/MongoUtil.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/MongoUtil.java @@ -202,5 +202,4 @@ public class MongoUtil { Assert.notNull(id, "id不能为空"); return mongoTemplate.findById(id, BasicConfig.class); } - } -- 1.8.3.1