diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IBpReportDao.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IBpReportDao.java new file mode 100644 index 0000000..7c588f9 --- /dev/null +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IBpReportDao.java @@ -0,0 +1,36 @@ +package com.lyms.platform.biz.dal; + +import com.lyms.platform.common.dao.operator.MongoQuery; +import com.lyms.platform.pojo.BabyModel; +import com.lyms.platform.pojo.BpReportModel; +import com.lyms.platform.pojo.Patients; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + + +/** + * 添加类的一句话简单描述。 + *

+ * 详细描述 + *

+ * 示例代码 + *

+ * 
+ * + * @author JIAZHI.JIANG + * @version BME V100R001 2018-08-23 17:03 + * @since BME V100R001C40B104 + */ +public interface IBpReportDao { + + BpReportModel addBpReport(BpReportModel obj); + + int queryBpReportCount(MongoQuery query); + + List queryBpReport(MongoQuery query); + + + BpReportModel getBpReport(String id); +} diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IPloodPressureGuideDao.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IPloodPressureGuideDao.java new file mode 100644 index 0000000..a4eae1c --- /dev/null +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IPloodPressureGuideDao.java @@ -0,0 +1,35 @@ +package com.lyms.platform.biz.dal; + +import com.lyms.platform.common.dao.operator.MongoQuery; +import com.lyms.platform.pojo.PersonModel; +import com.lyms.platform.pojo.PloodPressureGuideModel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + + +/** + * 添加类的一句话简单描述。 + *

+ * 详细描述 + *

+ * 示例代码 + *

+ * 
+ * + * @author JIAZHI.JIANG + * @version BME V100R001 2018-08-23 17:27 + * @since BME V100R001C40B104 + */ +public interface IPloodPressureGuideDao { + + + PloodPressureGuideModel addPloodPressureGuide(PloodPressureGuideModel model); + + void updateOne(PloodPressureGuideModel obj, String id); + + List queryPloodPressureGuides(MongoQuery mongoQuery); + + int queryCount(MongoQuery query); +} diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/BpReportDaoImpl.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/BpReportDaoImpl.java new file mode 100644 index 0000000..18cd2a7 --- /dev/null +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/BpReportDaoImpl.java @@ -0,0 +1,49 @@ +package com.lyms.platform.biz.dal.impl; + +import com.lyms.platform.biz.dal.IBpReportDao; +import com.lyms.platform.common.dao.BaseMongoDAOImpl; +import com.lyms.platform.common.dao.operator.MongoQuery; +import com.lyms.platform.pojo.BpReportModel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Repository; + +import java.util.List; + + +/** + * 血压报告dal操作层 + *

+ * 详细描述 + *

+ * 示例代码 + *

+ * 
+ * + * @author JIAZHI.JIANG + * @version BME V100R001 2018-08-23 17:05 + * @since BME V100R001C40B104 + */ +@Repository +public class BpReportDaoImpl extends BaseMongoDAOImpl implements IBpReportDao { + + @Override + public BpReportModel addBpReport(BpReportModel obj) { + return save(obj); + } + + @Override + public int queryBpReportCount(MongoQuery query) { + return (int) count(query.convertToMongoQuery()); + } + + @Override + public List queryBpReport(MongoQuery query) { + return find(query.convertToMongoQuery()); + } + + @Override + public BpReportModel getBpReport(String id) { + return findById(id); + } +} diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PloodPressureGuideDaoImpl.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PloodPressureGuideDaoImpl.java new file mode 100644 index 0000000..0645411 --- /dev/null +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PloodPressureGuideDaoImpl.java @@ -0,0 +1,54 @@ +package com.lyms.platform.biz.dal.impl; + +import com.lyms.platform.biz.dal.IPloodPressureGuideDao; +import com.lyms.platform.common.dao.BaseMongoDAOImpl; +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.pojo.PloodPressureGuideModel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Repository; + +import java.util.List; + + +/** + * 添加类的一句话简单描述。 + *

+ * 详细描述 + *

+ * 示例代码 + *

+ * 
+ * + * @author JIAZHI.JIANG + * @version BME V100R001 2018-08-23 17:29 + * @since BME V100R001C40B104 + */ +@Repository +public class PloodPressureGuideDaoImpl extends BaseMongoDAOImpl implements IPloodPressureGuideDao { + + //日志调测器 + private static final Logger logger = LoggerFactory.getLogger(PloodPressureGuideDaoImpl.class); + + @Override + public PloodPressureGuideModel addPloodPressureGuide(PloodPressureGuideModel model) { + return save(model); + } + + @Override + public void updateOne(PloodPressureGuideModel obj, String id) { + update(new MongoQuery(new MongoCondition("id", id, MongoOper.IS)).convertToMongoQuery(), obj); + } + + @Override + public List queryPloodPressureGuides(MongoQuery mongoQuery) { + return find(mongoQuery.convertToMongoQuery()); + } + + @Override + public int queryCount(MongoQuery query) { + return (int) count(query.convertToMongoQuery()); + } +} diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/BpReportService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/BpReportService.java new file mode 100644 index 0000000..bd9d117 --- /dev/null +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/BpReportService.java @@ -0,0 +1,46 @@ +package com.lyms.platform.biz.service; + +import com.lyms.platform.biz.dal.IBpReportDao; +import com.lyms.platform.common.dao.operator.MongoQuery; +import com.lyms.platform.pojo.BpReportModel; +import com.lyms.platform.query.BpReportQuery; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; + +import java.util.List; + + +/** + * 添加类的一句话简单描述。 + *

+ * 详细描述 + *

+ * 示例代码 + *

+ * 
+ * + * @author JIAZHI.JIANG + * @version BME V100R001 2018-08-23 17:08 + * @since BME V100R001C40B104 + */ +@Service +public class BpReportService { + + //日志调测器 + private static final Logger logger = LoggerFactory.getLogger(BpReportService.class); + @Autowired + private IBpReportDao bpReportDao; + + public List queryBpReport(BpReportQuery query) { + MongoQuery query1 = query.convertToQuery(); + query1.addOrder(Sort.Direction.ASC, "created"); + return bpReportDao.queryBpReport(query1); + } + + public BpReportModel findById(String id) { + return bpReportDao.getBpReport(id); + } +} \ No newline at end of file diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PloodPressureGuideService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PloodPressureGuideService.java new file mode 100644 index 0000000..8878021 --- /dev/null +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PloodPressureGuideService.java @@ -0,0 +1,41 @@ +package com.lyms.platform.biz.service; + +import com.lyms.platform.biz.dal.IPloodPressureGuideDao; +import com.lyms.platform.common.dao.operator.MongoQuery; +import com.lyms.platform.pojo.PloodPressureGuideModel; +import com.lyms.platform.query.PloodPressureGuideQuery; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; + +import java.util.List; + + +/** + * 添加类的一句话简单描述。 + *

+ * 详细描述 + *

+ * 示例代码 + *

+ * 
+ * + * @author JIAZHI.JIANG + * @version BME V100R001 2018-08-23 17:30 + * @since BME V100R001C40B104 + */ +@Service +public class PloodPressureGuideService { + + //日志调测器 + private static final Logger logger = LoggerFactory.getLogger(PloodPressureGuideService.class); + @Autowired + private IPloodPressureGuideDao pressureGuideDao; + + + public List queryPloodPressureGuides(PloodPressureGuideQuery mongoQuery){ + return pressureGuideDao.queryPloodPressureGuides(mongoQuery.convertToQuery().addOrder(Sort.Direction.DESC,"order")); + } +} \ No newline at end of file diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/PloodPressureGuideModel.java b/platform-dal/src/main/java/com/lyms/platform/pojo/PloodPressureGuideModel.java index 575ae9b..e90b454 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/PloodPressureGuideModel.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/PloodPressureGuideModel.java @@ -23,6 +23,8 @@ import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "lyms_bpguide") public class PloodPressureGuideModel extends BaseModel { + private String id; + /* 血压值正常/异常 0/1 血压波动正常/异常 0/1 @@ -47,6 +49,14 @@ public class PloodPressureGuideModel extends BaseModel { //排序字段 private Integer order; + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + public Integer getOrder() { return order; } diff --git a/platform-dal/src/main/java/com/lyms/platform/query/BpReportQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/BpReportQuery.java new file mode 100644 index 0000000..431e3ce --- /dev/null +++ b/platform-dal/src/main/java/com/lyms/platform/query/BpReportQuery.java @@ -0,0 +1,46 @@ +package com.lyms.platform.query; + +import com.lyms.platform.common.base.IConvertToNativeQuery; +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; + +/** + * Created by Administrator on 2017/1/13 0013. + */ +public class BpReportQuery extends BaseQuery implements IConvertToNativeQuery { + private String pid; + private Integer yn; + + + @Override + public MongoQuery convertToQuery() { + MongoCondition condition = MongoCondition.newInstance(); + + if(null!=pid){ + condition=condition.and("pid", pid, MongoOper.IS); + } + + if(null!=yn){ + condition=condition.and("yn", yn, MongoOper.IS); + } + return condition.toMongoQuery(); + } + + public String getPid() { + return pid; + } + + public void setPid(String pid) { + this.pid = pid; + } + + public Integer getYn() { + return yn; + } + + public void setYn(Integer yn) { + this.yn = yn; + } +} diff --git a/platform-dal/src/main/java/com/lyms/platform/query/PloodPressureGuideQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/PloodPressureGuideQuery.java new file mode 100644 index 0000000..98ebce8 --- /dev/null +++ b/platform-dal/src/main/java/com/lyms/platform/query/PloodPressureGuideQuery.java @@ -0,0 +1,71 @@ +package com.lyms.platform.query; + +import com.lyms.platform.common.base.IConvertToNativeQuery; +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; + +/** + * Created by Administrator on 2017/1/13 0013. + */ +public class PloodPressureGuideQuery extends BaseQuery implements IConvertToNativeQuery { + private String pid; + private Integer yn; + private String type; + private Integer week; + private Integer categoryType; + + + public void setCategoryType(Integer categoryType) { + this.categoryType = categoryType; + } + + public void setType(String type) { + this.type = type; + } + + + public void setWeek(Integer week) { + this.week = week; + } + + @Override + public MongoQuery convertToQuery() { + MongoCondition condition = MongoCondition.newInstance(); + + if(null!=pid){ + condition=condition.and("pid", pid, MongoOper.IS); + } + if(null!=type){ + condition=condition.and("type", type, MongoOper.IS); + } + if(null!=week){ + condition=condition.and("week", week, MongoOper.IS); + } + if(null!=categoryType){ + condition=condition.and("categoryType", categoryType, MongoOper.IS); + } + + if(null!=yn){ + condition=condition.and("yn", yn, MongoOper.IS); + } + return condition.toMongoQuery(); + } + + public String getPid() { + return pid; + } + + public void setPid(String pid) { + this.pid = pid; + } + + public Integer getYn() { + return yn; + } + + public void setYn(Integer yn) { + this.yn = yn; + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BloodPressureController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BloodPressureController.java index cb3da90..57a436a 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BloodPressureController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BloodPressureController.java @@ -1,17 +1,28 @@ package com.lyms.platform.operate.web.controller; +import com.lyms.platform.biz.service.BpReportService; import com.lyms.platform.common.annotation.TokenRequired; import com.lyms.platform.common.base.BaseController; +import com.lyms.platform.common.constants.ErrorCodeConstants; +import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.result.BaseListResponse; import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.common.result.RespBuilder; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.operate.web.facade.BpReportFacade; import com.lyms.platform.operate.web.service.IBloodPressureService; +import com.lyms.platform.operate.web.utils.CollectionUtils; import com.lyms.platform.pojo.BloodPressure; +import com.lyms.platform.pojo.BpReportModel; +import com.lyms.platform.query.BpReportQuery; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.math.NumberUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; -import java.util.Date; +import java.util.*; /** * 血压 @@ -66,24 +77,40 @@ public class BloodPressureController extends BaseController { @ResponseBody @RequestMapping(value = "/app/list/{pid}", method = RequestMethod.GET) public BaseResponse getReportList(@PathVariable String pid) { - return null; + + if (StringUtils.isEmpty(pid) || "null".equals(pid)) { + return new BaseResponse().setErrorcode(ErrorCodeConstants.PARAMETER_ERROR).setErrormsg("pid参数不能为空"); + } + + return bpReportFacade.findReportList(pid); } /** * 获取某个人的血压列表报告 * - * @param type - 血压值正常无波动 00 - 血压波动异常,血压值正常 10 - 血压值异常(血压值异常但基本平稳) 01 - 血压值异常,波动异常 11 + * @param type 血压值正常无波动 00 + * 血压波动异常,血压值正常 10 + * 血压值异常(血压值异常但基本平稳) 01 + * 血压值异常,波动异常 11 * @param week 孕周 * @return */ @ResponseBody - @RequestMapping(value = "/app/report", method = RequestMethod.GET) + @RequestMapping(value = "/app/report/{id}", method = RequestMethod.GET) public BaseResponse getReportDetail(@RequestParam("type") String type, - @RequestParam("week") String week) { - return null; + @RequestParam("week") String week, + @PathVariable String id) { + if (StringUtils.isEmpty(id) || "null".equals(id)) { + return new BaseResponse().setErrorcode(ErrorCodeConstants.PARAMETER_ERROR).setErrormsg("id参数不能为空"); + } + + if (StringUtils.isEmpty(week) || "null".equals(week) || !NumberUtils.isNumber(week)) { + return new BaseResponse().setErrorcode(ErrorCodeConstants.PARAMETER_ERROR).setErrormsg("week参数错误"); + } + + return bpReportFacade.lookReportDetailById(id, week, type); } + + @Autowired + private BpReportFacade bpReportFacade; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BpReportFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BpReportFacade.java new file mode 100644 index 0000000..0959fe1 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BpReportFacade.java @@ -0,0 +1,150 @@ +package com.lyms.platform.operate.web.facade; + +import com.lyms.platform.biz.service.BpReportService; +import com.lyms.platform.biz.service.PatientsService; +import com.lyms.platform.biz.service.PloodPressureGuideService; +import com.lyms.platform.common.constants.ErrorCodeConstants; +import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.result.BaseListResponse; +import com.lyms.platform.common.result.BaseObjectResponse; +import com.lyms.platform.common.result.BaseResponse; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.operate.web.utils.CollectionUtils; +import com.lyms.platform.pojo.BpReportModel; +import com.lyms.platform.pojo.Patients; +import com.lyms.platform.pojo.PloodPressureGuideModel; +import com.lyms.platform.query.BpReportQuery; +import com.lyms.platform.query.PatientsQuery; +import com.lyms.platform.query.PloodPressureGuideQuery; +import org.apache.commons.lang.math.NumberUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.*; + + +/** + * 添加类的一句话简单描述。 + *

+ * 详细描述 + *

+ * 示例代码 + *

+ * 
+ * + * @author JIAZHI.JIANG + * @version BME V100R001 2018-08-23 17:21 + * @since BME V100R001C40B104 + */ +@Component +public class BpReportFacade { + + //日志调测器 + private static final Logger logger = LoggerFactory.getLogger(BpReportFacade.class); + @Autowired + private BpReportService bpReportService; + @Autowired + private PatientsService patientService; + + /** + * 查询某个人的血压报告数据 + * + * @param pid pid + * @return 返回内容结果 + */ + public BaseResponse findReportList(String pid) { + BpReportQuery reportQuery = new BpReportQuery(); + reportQuery.setYn(YnEnums.YES.getId()); + reportQuery.setPid(pid); + List DATA = bpReportService.queryBpReport(reportQuery); + List data = new ArrayList(); + if (CollectionUtils.isNotEmpty(DATA)) { + for (BpReportModel report : DATA) { + Map map = new HashMap<>(); + map.put("id", report.getId()); + map.put("title", report.getTitle()); + map.put("create", DateUtil.getyyyy_MM_dd(report.getCreated())); + map.put("type", report.getType()); + map.put("week", report.getWeek()); + data.add(map); + } + } + return new BaseListResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setData(data); + } + + /** + * 根据reportid查看某次报告的详细数据 + * + * @param reportId 报告id + * @param week 孕周 + * @param type 类型 + * @return + */ + public BaseResponse lookReportDetailById(String reportId, String week, String type) { + + PloodPressureGuideQuery pressureGuideQuery = new PloodPressureGuideQuery(); + pressureGuideQuery.setYn(YnEnums.YES.getId()); + pressureGuideQuery.setType(type); + pressureGuideQuery.setWeek(NumberUtils.toInt(week, 0)); + + BpReportModel bpReport = bpReportService.findById(reportId); + List guideModelList = pressureGuideService.queryPloodPressureGuides(pressureGuideQuery); + + + Map data =new HashMap(); + + if(null!=bpReport){ + data.put("id", bpReport.getId()); + + PatientsQuery patientsQuery1= new PatientsQuery(); + patientsQuery1.setPid(bpReport.getPid()); + patientsQuery1.setType(1); + patientsQuery1.setYn(YnEnums.YES.getId()); + List patientses = patientService.queryPatient(patientsQuery1); + + if(CollectionUtils.isNotEmpty(patientses)){ + data.put("age",DateUtil.getAge(patientses.get(0).getBirth())); + data.put("lastMenses",DateUtil.getyyyy_MM_dd(patientses.get(0).getLastMenses())); + data.put("name",patientses.get(0).getUsername()); + data.put("dueWeek",DateUtil.getyyyy_MM_dd(patientses.get(0).getDueDate())); + data.put("week", DateUtil.getWeek(patientses.get(0).getLastMenses(), new Date())); + } + data.put("title",bpReport.getTitle()); + + data.put("height",bpReport.getId()); + //测评评估 + data.put("assess",bpReport.getAssess()); + //测评次数 + data.put("count",bpReport.getCount()); + //血压值异常次数 + data.put("bpValExp",bpReport.getBpValExp()); + //血压波动次数 + data.put("bpWaveCount",bpReport.getBpWaveCount()); + //指导 + data.put("guide",bpReport.getGuide()); + + data.put("guideData",convertToResponse(guideModelList)); + + } + + return new BaseObjectResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setData(data); + } + + private List convertToResponse(List data){ + List list =new ArrayList(); + for(PloodPressureGuideModel guideModel:data){ + Map map = new HashMap(); + map.put("category",guideModel.getCategory()); + map.put("categoryType",guideModel.getCategoryType()); + map.put("content",guideModel.getContent()); + map.put("order",guideModel.getOrder()); + list.add(map); + } + return list; + } + + @Autowired + private PloodPressureGuideService pressureGuideService; +} \ No newline at end of file