From a5f1184445072f47d6ff569a9de9a71678b8ad0c Mon Sep 17 00:00:00 2001 From: liquanyu Date: Mon, 16 Apr 2018 16:56:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=95=E5=A6=87=E5=AD=A6=E6=A0=A1=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lyms/platform/biz/service/CourseService.java | 6 + .../platform/biz/service/PatientCourseService.java | 5 + .../lyms/platform/query/PatientCourseQuery.java | 37 ++++++ .../operate/web/controller/CourseController.java | 18 ++- .../platform/operate/web/facade/CourseFacade.java | 124 ++++++++++++++++++++- 5 files changed, 186 insertions(+), 4 deletions(-) diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/CourseService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/CourseService.java index 8f1e3e1..1729a7b 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/CourseService.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/CourseService.java @@ -39,6 +39,12 @@ public class CourseService { return courseDao.queryCourseList(query.addOrder(Sort.Direction.DESC, "modified")); } + + public int queryCourseCount(CourseQuery courseQuery) { + return courseDao.queryCourseListCount(courseQuery.convertToQuery()); + } + + public void addCourse(CourseModel model) { courseDao.addCourse(model); } diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientCourseService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientCourseService.java index e757b8d..65fc6da 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientCourseService.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientCourseService.java @@ -29,6 +29,11 @@ public class PatientCourseService { return patientCourseDao.queryPatientCourseList(query.addOrder(Sort.Direction.DESC, "modified")); } + public int queryPatientCourseCount(PatientCourseQuery patientCourseQuery) + { + return patientCourseDao.queryPatientCourseListCount(patientCourseQuery.convertToQuery()); + } + public List queryPatientCourseList(PatientCourseQuery patientCourseQuery,String sort) { MongoQuery query = patientCourseQuery.convertToQuery(); diff --git a/platform-dal/src/main/java/com/lyms/platform/query/PatientCourseQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/PatientCourseQuery.java index e913020..d6b11d0 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/PatientCourseQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/PatientCourseQuery.java @@ -66,6 +66,10 @@ public class PatientCourseQuery extends BaseQuery implements IConvertToNativeQue private String queryNo; + private Date createdStart; + private Date createdEnd; + + @Override public MongoQuery convertToQuery() { MongoCondition condition = MongoCondition.newInstance(); @@ -134,6 +138,23 @@ public class PatientCourseQuery extends BaseQuery implements IConvertToNativeQue } +// if (null != createdStart) { +// if (null != c1) { +// c1 = c1.and("created").gte(createdStart); +// } else { +// c1 = Criteria.where("created").gte(createdStart); +// } +// } +// +// if (null != createdEnd) { +// if (null != c1) { +// c1 = c1.lte(createdEnd); +// } else { +// c1 = Criteria.where("created").lte(createdEnd); +// } +// } + + if (null != c1) { condition = condition.andCondition(new MongoCondition(c1)); @@ -142,6 +163,22 @@ public class PatientCourseQuery extends BaseQuery implements IConvertToNativeQue return condition.toMongoQuery(); } + public Date getCreatedStart() { + return createdStart; + } + + public void setCreatedStart(Date createdStart) { + this.createdStart = createdStart; + } + + public Date getCreatedEnd() { + return createdEnd; + } + + public void setCreatedEnd(Date createdEnd) { + this.createdEnd = createdEnd; + } + public List getPatientIds() { return patientIds; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/CourseController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/CourseController.java index 2fecd7b..61951e4 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/CourseController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/CourseController.java @@ -3,6 +3,7 @@ package com.lyms.platform.operate.web.controller; import com.lyms.platform.common.annotation.TokenRequired; import com.lyms.platform.common.base.BaseController; +import com.lyms.platform.common.base.LoginContext; import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.operate.web.facade.CourseFacade; import com.lyms.platform.operate.web.request.CourseRequest; @@ -157,6 +158,21 @@ public class CourseController extends BaseController { @TokenRequired public BaseResponse validateCourseName(HttpServletRequest request, @RequestParam(required = true) String courseName , @RequestParam(required = false) String courseId) { - return courseFacade.validateCourseName(courseName,getUserId(request),courseId); + return courseFacade.validateCourseName(courseName, getUserId(request), courseId); + } + + + /** + * 孕妇课程统计 + * @param request + * @param time + * @return + */ + @RequestMapping(method = RequestMethod.GET, value = "/getCourseCount") + @ResponseBody + @TokenRequired + public BaseResponse getCourseCount(HttpServletRequest request, @RequestParam(required = true) String time) { + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + return courseFacade.getCourseCount(time,loginState.getId()); } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/CourseFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/CourseFacade.java index 0f52541..9d7d0ba 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/CourseFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/CourseFacade.java @@ -14,6 +14,7 @@ import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.common.utils.DateUtil; import com.lyms.platform.operate.web.request.CourseRequest; import com.lyms.platform.operate.web.result.CourseResult; +import com.lyms.platform.operate.web.result.CourseTypeResult; import com.lyms.platform.permission.model.Users; import com.lyms.platform.permission.service.UsersService; import com.lyms.platform.pojo.CourseModel; @@ -27,9 +28,8 @@ import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.text.DecimalFormat; +import java.util.*; /** @@ -348,4 +348,122 @@ public class CourseFacade { objectResponse.setErrormsg("成功"); return objectResponse; } + + /** + * 孕妇课程统计 + * @param time + * @param userId + * @return + */ + public BaseResponse getCourseCount(String time, Integer userId) { + BaseObjectResponse objectResponse = new BaseObjectResponse(); + String hospitalId = autoMatchFacade.getHospitalId(userId); + Map resultData = new HashMap(); + + Map totalData = new HashMap(); + + CourseQuery query = new CourseQuery(); + query.setYn(YnEnums.YES.getId()); + query.setHospitalId(hospitalId); + + int allCourses = courseService.queryCourseCount(query); + int allSends = 0; //TODO + + + PatientCourseQuery patientCourseQuery = new PatientCourseQuery(); + patientCourseQuery.setYn(YnEnums.YES.getId()); + patientCourseQuery.setHospitalId(hospitalId); + //状态 1预约,2签到 + patientCourseQuery.setStatus(1); + + int allOrders = patientCourseService.queryPatientCourseCount(patientCourseQuery); + + patientCourseQuery.setStatus(2); + + + int allSigns = patientCourseService.queryPatientCourseCount(patientCourseQuery); + + DecimalFormat df = new DecimalFormat("0.00"); + + resultData.put("allCourses",allCourses); //课程数 + resultData.put("allSends",allSends); //总推送数 + resultData.put("allOrders",allOrders); //总预约数 + resultData.put("allOrderRate",allCourses == 0 ? 0 : df.format((double) allOrders / allCourses * 100) + "%"); //总预约率 + resultData.put("allSigns",allSigns);//总签到数 + resultData.put("allSignRate",allCourses == 0 ? 0 : df.format((double) allSigns / allCourses * 100) + "%");//总签到率 + + + if (StringUtils.isNotEmpty(time)) { + String[] dates = time.split(" - "); + query.setCreatedStart(DateUtil.parseYMD(dates[0])); + if (dates.length == 2) { + query.setCreatedEnd(DateUtil.parseYMDHMS(dates[1] + " 23:59:59")); + } + } + + allCourses = courseService.queryCourseCount(query); + + + CourseTypeQuery courseTypeQuery = new CourseTypeQuery(); + courseTypeQuery.setHospitalId(hospitalId); + courseTypeQuery.setYn(YnEnums.YES.getId()); + + List tableData = new ArrayList<>(); + + Map chartData = new HashMap(); + List courseModelList = courseService.queryCourseList(query); + if (CollectionUtils.isNotEmpty(courseModelList)) + { + List titles = new ArrayList(); + List sends = new ArrayList(); + List orders = new ArrayList(); + List signs = new ArrayList(); + for (CourseModel courseModel : courseModelList) + { + patientCourseQuery.setCourseId(courseModel.getId()); + titles.add(courseModel.getCourseName()); + + patientCourseQuery.setStatus(1); + int courseOrders = patientCourseService.queryPatientCourseCount(patientCourseQuery); + orders.add(courseOrders); + + patientCourseQuery.setStatus(2); + int courseSigns = patientCourseService.queryPatientCourseCount(patientCourseQuery); + signs.add(courseSigns); + + int courseSends = 0; //TODO + sends.add(courseSends); + + courseTypeQuery.setId(courseModel.getCourseTypeId()); + List typeModels = courseTypeService.queryCourseTypeList(courseTypeQuery); + + Map tableMap = new HashMap(); + + tableMap.put("courseTypeId",CollectionUtils.isNotEmpty(typeModels) ? typeModels.get(0).getId() : ""); + tableMap.put("courseTypeName",CollectionUtils.isNotEmpty(typeModels) ? typeModels.get(0).getCourseTypeName() : ""); + tableMap.put("courseName",courseModel.getCourseName()); + + tableMap.put("sends",0);//TODO + tableMap.put("orders",courseOrders); + tableMap.put("ordersRate",allCourses == 0 ? "0" : df.format((double) courseOrders / allCourses * 100) + "%"); + tableMap.put("signs",courseSigns); + tableMap.put("signsRate",allCourses == 0 ? "0" : df.format((double) courseSigns / allCourses * 100) + "%"); + tableData.add(tableMap); + } + + chartData.put("titles",titles); + chartData.put("sends",sends); + chartData.put("orders",orders); + chartData.put("signs",signs); + } + + resultData.put("totalData",totalData); + resultData.put("chartData",chartData); + resultData.put("tableData",tableData); + + objectResponse.setData(resultData); + objectResponse.setErrorcode(ErrorCodeConstants.SUCCESS); + objectResponse.setErrormsg("成功"); + return objectResponse; + } } \ No newline at end of file -- 1.8.3.1