Commit 91c71e2e67e514ec01c60c46b979e916ca1b3192

Authored by liquanyu
1 parent 11a6a537a3

孕妇学校

Showing 4 changed files with 241 additions and 158 deletions

platform-dal/src/main/java/com/lyms/platform/query/PatientCourseQuery.java View file @ 91c71e2
... ... @@ -53,6 +53,8 @@
53 53 //课程id
54 54 private String courseId;
55 55  
  56 + private List<String> courseIds;
  57 +
56 58 //操作签到人id
57 59 private String operUserId;
58 60  
... ... @@ -115,6 +117,9 @@
115 117 condition = condition.and("courseId", courseId, MongoOper.IS);
116 118 }
117 119  
  120 + if (null != courseIds) {
  121 + condition = condition.and("courseId", courseIds, MongoOper.IN);
  122 + }
118 123  
119 124 if (null != hospitalId) {
120 125 condition = condition.and("hospitalId", hospitalId, MongoOper.IS);
... ... @@ -161,6 +166,14 @@
161 166 }
162 167  
163 168 return condition.toMongoQuery();
  169 + }
  170 +
  171 + public List<String> getCourseIds() {
  172 + return courseIds;
  173 + }
  174 +
  175 + public void setCourseIds(List<String> courseIds) {
  176 + this.courseIds = courseIds;
164 177 }
165 178  
166 179 public Date getCreatedStart() {
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/CourseFacade.java View file @ 91c71e2
... ... @@ -12,15 +12,17 @@
12 12 import com.lyms.platform.common.result.BaseListResponse;
13 13 import com.lyms.platform.common.result.BaseObjectResponse;
14 14 import com.lyms.platform.common.result.BaseResponse;
15   -import com.lyms.platform.common.utils.DateUtil;
16   -import com.lyms.platform.common.utils.HttpClientUtil;
17   -import com.lyms.platform.common.utils.JsonUtil;
18   -import com.lyms.platform.common.utils.PropertiesUtils;
  15 +import com.lyms.platform.common.utils.*;
19 16 import com.lyms.platform.operate.web.request.CourseRequest;
  17 +import com.lyms.platform.operate.web.result.BabyManageListResult;
20 18 import com.lyms.platform.operate.web.result.CourseResult;
21 19 import com.lyms.platform.operate.web.result.CourseTypeResult;
  20 +import com.lyms.platform.operate.web.utils.BabyListTask;
  21 +import com.lyms.platform.operate.web.utils.MessageCenterService;
  22 +import com.lyms.platform.operate.web.worker.CourseCountWorker;
22 23 import com.lyms.platform.permission.model.Users;
23 24 import com.lyms.platform.permission.service.UsersService;
  25 +import com.lyms.platform.pojo.BabyModel;
24 26 import com.lyms.platform.pojo.CourseModel;
25 27 import com.lyms.platform.pojo.CourseTypeModel;
26 28 import com.lyms.platform.pojo.PatientCourseModel;
27 29  
... ... @@ -30,10 +32,14 @@
30 32 import org.apache.commons.collections.CollectionUtils;
31 33 import org.apache.commons.lang.StringUtils;
32 34 import org.springframework.beans.factory.annotation.Autowired;
  35 +import org.springframework.beans.factory.annotation.Qualifier;
  36 +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
33 37 import org.springframework.stereotype.Component;
34 38  
35 39 import java.text.DecimalFormat;
36 40 import java.util.*;
  41 +import java.util.concurrent.Callable;
  42 +import java.util.concurrent.Future;
37 43  
38 44  
39 45 /**
... ... @@ -61,6 +67,10 @@
61 67 @Autowired
62 68 private OperateLogFacade operateLogFacade;
63 69  
  70 + @Autowired
  71 + @Qualifier("commonThreadPool")
  72 + private ThreadPoolTaskExecutor commonThreadPool;
  73 +
64 74 public BaseResponse addCourese(CourseRequest request, Integer userId) {
65 75  
66 76 String hospitalId = autoMatchFacade.getHospitalId(userId);
... ... @@ -385,8 +395,8 @@
385 395  
386 396  
387 397 //总推送数
388   - int allSends = getCourseCountData(hospitalId, String.valueOf(SmsServiceEnums.YFXXKCTX.getId()), 3,
389   - 1,null, null, null);
  398 + int allSends = MessageCenterService.getCourseCountData(hospitalId, String.valueOf(SmsServiceEnums.YFXXKCTX.getId()), 3,
  399 + 1, null, null, null);
390 400  
391 401 PatientCourseQuery patientCourseQuery = new PatientCourseQuery();
392 402 patientCourseQuery.setYn(YnEnums.YES.getId());
393 403  
394 404  
395 405  
396 406  
397 407  
398 408  
399 409  
400 410  
401 411  
402 412  
403 413  
404 414  
405 415  
406 416  
... ... @@ -417,69 +427,109 @@
417 427 courseTypeQuery.setHospitalId(hospitalId);
418 428 courseTypeQuery.setYn(YnEnums.YES.getId());
419 429  
420   - String start = null;
421   - String end = null;
  430 + String startTime = null;
  431 + String endTime = null;
422 432  
423 433 if (StringUtils.isNotEmpty(time)) {
424 434 String[] dates = time.split(" - ");
425   - start = dates[0];
426   - patientCourseQuery.setCreatedStart(DateUtil.parseYMD(start));
  435 + startTime = dates[0];
  436 + query.setPublishTimeStart(DateUtil.parseYMD(startTime));
427 437 if (dates.length == 2) {
428   - end = dates[1];
429   - patientCourseQuery.setCreatedEnd(DateUtil.parseYMDHMS(end + " 23:59:59"));
  438 + endTime = dates[1];
  439 + query.setPublishTimeStart(DateUtil.parseYMDHMS(endTime + " 23:59:59"));
430 440 }
431 441  
432   - allPatientCourses = patientCourseService.queryPatientCourseCount(patientCourseQuery);
433 442 }
434 443  
435   -
436   -
437   -
438 444 List<CourseModel> courseModelList = courseService.queryCourseList(query);
439 445 if (CollectionUtils.isNotEmpty(courseModelList))
440 446 {
441   - List titles = new ArrayList();
442   - List sends = new ArrayList();
443   - List orders = new ArrayList();
444   - List signs = new ArrayList();
  447 +
  448 + List<String> courseIds = new ArrayList<>();
445 449 for (CourseModel courseModel : courseModelList)
446 450 {
447   - patientCourseQuery.setCourseId(courseModel.getId());
448   - titles.add(courseModel.getCourseName());
  451 + courseIds.add(courseModel.getId());
  452 + }
  453 + patientCourseQuery.setCourseIds(courseIds);
449 454  
450   - patientCourseQuery.setStatus(1);
451   - int courseOrders = patientCourseService.queryPatientCourseCount(patientCourseQuery);
452   - orders.add(courseOrders);
  455 + allPatientCourses = patientCourseService.queryPatientCourseCount(patientCourseQuery);
453 456  
454   - patientCourseQuery.setStatus(2);
455   - int courseSigns = patientCourseService.queryPatientCourseCount(patientCourseQuery);
456   - signs.add(courseSigns);
  457 + List<Map<String,String>> list = new ArrayList<>();
  458 + int batchSize = 2;
  459 + int end = 0;
  460 + List<Future> futures = new ArrayList<>();
  461 + for (int i = 0; i < courseModelList.size(); i += batchSize) {
  462 + end = (end + batchSize);
  463 + if (end > courseModelList.size()) {
  464 + end = courseModelList.size();
  465 + }
  466 + List<CourseModel> ms = courseModelList.subList(i, end);
  467 + Callable c = new CourseCountWorker(ms, hospitalId,
  468 + startTime,
  469 + endTime,
  470 + patientCourseService,
  471 + courseTypeService,
  472 + allPatientCourses);
  473 + Future f = commonThreadPool.submit(c);
  474 + futures.add(f);
  475 + }
457 476  
458   - int courseSends = getCourseCountData(hospitalId, String.valueOf(SmsServiceEnums.YFXXKCTX.getId()), 3,
459   - 1,courseModel.getId(), start, end);
460   - sends.add(courseSends);
  477 + if (CollectionUtils.isNotEmpty(futures))
  478 + {
  479 + for (Future f : futures)
  480 + {
  481 + try {
  482 + list.addAll((List<Map<String,String>>) f.get());
  483 + } catch (Exception e) {
  484 + ExceptionUtils.catchException(e, "getCourseCount list error.");
  485 + }
  486 + }
  487 + }
461 488  
462   - courseTypeQuery.setId(courseModel.getCourseTypeId());
463   - List<CourseTypeModel> typeModels = courseTypeService.queryCourseTypeList(courseTypeQuery);
  489 + List titles = new ArrayList();
  490 + List sends = new ArrayList();
  491 + List orders = new ArrayList();
  492 + List signs = new ArrayList();
  493 + int orderAll = 0;
  494 + int signsAll = 0;
464 495  
465   - Map tableMap = new HashMap();
  496 + for (CourseModel courseModel : courseModelList)
  497 + {
  498 + Map tableItem = new HashMap();
  499 + for (Map<String,String> map: list)
  500 + {
  501 + if (courseModel.getId().equals(map.get("courseId")))
  502 + {
  503 + titles.add(map.get("title"));
  504 + orders.add(map.get("order"));
  505 + signs.add(map.get("courseSigns"));
  506 + sends.add(map.get("courseSends"));
466 507  
467   - tableMap.put("courseTypeId",CollectionUtils.isNotEmpty(typeModels) ? typeModels.get(0).getId() : "");
468   - tableMap.put("courseTypeName",CollectionUtils.isNotEmpty(typeModels) ? typeModels.get(0).getCourseTypeName() : "");
469   - tableMap.put("courseName",courseModel.getCourseName());
  508 + tableItem.put("courseTypeId", map.get("courseTypeId"));
  509 + tableItem.put("courseTypeName", map.get("courseTypeName"));
  510 + tableItem.put("courseName", map.get("courseName"));
  511 + tableItem.put("orders", map.get("orders"));
  512 + orderAll+=Integer.parseInt(map.get("orders"));
470 513  
471   - tableMap.put("sends",courseSends);
472   - tableMap.put("orders",courseOrders);
473   - tableMap.put("ordersRate",allCourses == 0 ? "0" : df.format((double) courseOrders / allPatientCourses * 100) + "%");
474   - tableMap.put("signs",courseSigns);
475   - tableMap.put("signsRate",allCourses == 0 ? "0" : df.format((double) courseSigns / allPatientCourses * 100) + "%");
476   - tableData.add(tableMap);
  514 + tableItem.put("ordersRate", map.get("ordersRate"));
  515 + tableItem.put("signs",map.get("signs"));
  516 +
  517 + signsAll+=Integer.parseInt(map.get("signs"));
  518 + tableItem.put("signsRate",map.get("signsRate"));
  519 + }
  520 + }
  521 + tableData.add(tableItem);
477 522 }
478 523  
479   - chartData.put("titles",titles);
480   - chartData.put("sends",sends);
481   - chartData.put("orders",orders);
482   - chartData.put("signs",signs);
  524 + Map tableItem = new HashMap();
  525 + tableItem.put("courseTypeId","courseTypeId");
  526 + tableItem.put("courseTypeName", "合计");
  527 + tableItem.put("courseName",courseModelList.size());
  528 + tableItem.put("orders", orderAll);
  529 + tableItem.put("ordersRate", allPatientCourses == 0 ? "0" : df.format((double) orderAll / allPatientCourses * 100) + "%");
  530 + tableItem.put("signs",signsAll);
  531 + tableItem.put("signsRate",allPatientCourses == 0 ? "0" : df.format((double) signsAll / allPatientCourses * 100) + "%");
  532 + tableData.add(tableItem);
483 533 }
484 534  
485 535 resultData.put("totalData",totalData);
... ... @@ -491,45 +541,5 @@
491 541 objectResponse.setErrormsg("成功");
492 542 return objectResponse;
493 543 }
494   -
495   -
496   - private static int getCourseCountData(String hospitalId,
497   - String subTypeId,
498   - Integer status,
499   - Integer sendType,
500   - String tempId,
501   - String createTimeStart,
502   - String createTimeEnd)
503   - {
504   - Map<String,String> param = new HashMap<>();
505   -
506   - param.put("hospitalId",hospitalId);
507   - param.put("subTypeId",subTypeId);
508   - param.put("tempId",tempId == null ? null : String.valueOf(tempId));
509   - param.put("status",status == null ? null : String.valueOf(status));
510   - param.put("sendType",sendType == null ? null : String.valueOf(sendType));
511   - param.put("createTimeStart",createTimeStart);
512   - param.put("createTimeEnd",createTimeEnd);
513   - param.put("page","1");
514   - param.put("limit","900000000");
515   -
516   - String result = HttpClientUtil.doGet(CENTER_BASE_URL + "/biz-push-web/pushCount", param, "utf-8", null);
517   -
518   - Map<String,String> map = JsonUtil.str2Obj(result, Map.class);
519   - if ("0".equals(String.valueOf(map.get("errorcode"))))
520   - {
521   - return Integer.parseInt(String.valueOf(map.get("object")));
522   - }
523   - return 0;
524   - }
525   -//
526   -//
527   -// public static void main(String[] args)
528   -// {
529   -//
530   -// int allSends = getCourseCountData("216", String.valueOf(SmsServiceEnums.YFXXKCTX.getId()), 1,
531   -// 1,null, null, null);
532   -// System.out.println(allSends);
533   -// }
534 544 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/MessageCenterService.java View file @ 91c71e2
... ... @@ -109,7 +109,7 @@
109 109 String json = "";
110 110 try{
111 111 json = JsonUtil.obj2Str(list);
112   - String result = HttpClientUtil.doPostSSL(CENTER_BASE_URL+"/biz-push-web/push", json);
  112 + String result = HttpClientUtil.doPostSSL(CENTER_BASE_URL + "/biz-push-web/push", json);
113 113 if (StringUtils.isNotEmpty(result))
114 114 {
115 115 Map<String,Integer> map = JsonUtil.str2Obj(result, Map.class);
... ... @@ -126,6 +126,38 @@
126 126 return false;
127 127 }
128 128  
  129 +
  130 + public static int getCourseCountData(String hospitalId,
  131 + String subTypeId,
  132 + Integer status,
  133 + Integer sendType,
  134 + String tempId,
  135 + String createTimeStart,
  136 + String createTimeEnd)
  137 + {
  138 + Map<String,String> param = new HashMap<>();
  139 +
  140 + param.put("hospitalId",hospitalId);
  141 + param.put("subTypeId",subTypeId);
  142 + param.put("tempId",tempId == null ? null : String.valueOf(tempId));
  143 + param.put("status",status == null ? null : String.valueOf(status));
  144 + param.put("sendType",sendType == null ? null : String.valueOf(sendType));
  145 + param.put("createTimeStart",createTimeStart);
  146 + param.put("createTimeEnd",createTimeEnd);
  147 + param.put("page","1");
  148 + param.put("limit","900000000");
  149 +
  150 + String result = HttpClientUtil.doGet(CENTER_BASE_URL + "/biz-push-web/pushCount", param, "utf-8", null);
  151 +
  152 + Map<String,String> map = JsonUtil.str2Obj(result, Map.class);
  153 + if ("0".equals(String.valueOf(map.get("errorcode"))))
  154 + {
  155 + return Integer.parseInt(String.valueOf(map.get("object")));
  156 + }
  157 + return 0;
  158 + }
  159 +
  160 +
129 161 // /**
130 162 // * 演示换调用
131 163 // * @param list
... ... @@ -242,12 +274,22 @@
242 274 return null;
243 275 }
244 276  
245   - public static void main(String[] args){
246   - queryMsgList(null, null,null,
247   - null,null,
248   - null,null,null,null,
249   - null,null ,2,null,null,
250   - 1,10);
251   - }
  277 +// public static void main(String[] args){
  278 +// queryMsgList(null, null,null,
  279 +// null,null,
  280 +// null,null,null,null,
  281 +// null,null ,2,null,null,
  282 +// 1,10);
  283 +// }
  284 +
  285 +
  286 +// public static void main(String[] args)
  287 +// {
  288 +//
  289 +// int allSends = getCourseCountData("216", String.valueOf(SmsServiceEnums.YFXXKCTX.getId()), 1,
  290 +// 1,null, null, null);
  291 +// System.out.println(allSends);
  292 +// }
  293 +
252 294 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/CourseCountWorker.java View file @ 91c71e2
1 1 package com.lyms.platform.operate.web.worker;
2 2  
  3 +import com.lyms.platform.biz.service.CourseTypeService;
  4 +import com.lyms.platform.biz.service.PatientCourseService;
3 5 import com.lyms.platform.common.enums.SmsServiceEnums;
4 6 import com.lyms.platform.common.enums.YnEnums;
  7 +import com.lyms.platform.operate.web.utils.MessageCenterService;
5 8 import com.lyms.platform.pojo.CourseModel;
6 9 import com.lyms.platform.pojo.CourseTypeModel;
7 10 import com.lyms.platform.query.CourseTypeQuery;
8 11 import com.lyms.platform.query.PatientCourseQuery;
9 12 import org.apache.commons.collections.CollectionUtils;
10 13  
  14 +import java.text.DecimalFormat;
11 15 import java.util.ArrayList;
12 16 import java.util.HashMap;
13 17 import java.util.List;
14 18  
15 19  
16 20  
... ... @@ -19,71 +23,85 @@
19 23 */
20 24 public class CourseCountWorker implements Callable {
21 25  
22   - public CourseCountWorker()
23   - {
  26 + private List<CourseModel> courseModelList;
  27 + private String hospitalId;
  28 + private String start;
  29 + private String end;
  30 + private PatientCourseService patientCourseService;
  31 + private CourseTypeService courseTypeService;
  32 + private int allPatientCourses;
24 33  
  34 + public CourseCountWorker(List<CourseModel> courseModelList,String hospitalId,
  35 + String start,
  36 + String end,
  37 + PatientCourseService patientCourseService,
  38 + CourseTypeService courseTypeService,
  39 + int allPatientCourses)
  40 + {
  41 + this.hospitalId = hospitalId;
  42 + this.courseModelList = courseModelList;
  43 + this.patientCourseService = patientCourseService;
  44 + this.courseTypeService = courseTypeService;
  45 + this.allPatientCourses = allPatientCourses;
  46 + this.start = start;
  47 + this.end = end;
25 48 }
26 49  
27 50 @Override
28   - public Map call() throws Exception {
29   - Map chartData = new HashMap();
30   -// if (CollectionUtils.isNotEmpty(courseModelList))
31   -// {
32   -//
33   -// CourseTypeQuery courseTypeQuery = new CourseTypeQuery();
34   -// courseTypeQuery.setHospitalId(hospitalId);
35   -// courseTypeQuery.setYn(YnEnums.YES.getId());
36   -//
37   -//
38   -// PatientCourseQuery patientCourseQuery = new PatientCourseQuery();
39   -// patientCourseQuery.setYn(YnEnums.YES.getId());
40   -// patientCourseQuery.setHospitalId(hospitalId);
41   -//
42   -// List titles = new ArrayList();
43   -// List sends = new ArrayList();
44   -// List orders = new ArrayList();
45   -// List signs = new ArrayList();
46   -// for (CourseModel courseModel : courseModelList)
47   -// {
48   -// patientCourseQuery.setCourseId(courseModel.getId());
49   -// titles.add(courseModel.getCourseName());
50   -//
51   -// patientCourseQuery.setStatus(1);
52   -// int courseOrders = patientCourseService.queryPatientCourseCount(patientCourseQuery);
53   -// orders.add(courseOrders);
54   -//
55   -// patientCourseQuery.setStatus(2);
56   -// int courseSigns = patientCourseService.queryPatientCourseCount(patientCourseQuery);
57   -// signs.add(courseSigns);
58   -//
59   -// int courseSends = getCourseCountData(hospitalId, String.valueOf(SmsServiceEnums.YFXXKCTX.getId()), 3,
60   -// 1,courseModel.getId(), start, end);
61   -// sends.add(courseSends);
62   -//
63   -// courseTypeQuery.setId(courseModel.getCourseTypeId());
64   -// List<CourseTypeModel> typeModels = courseTypeService.queryCourseTypeList(courseTypeQuery);
65   -//
66   -// Map tableMap = new HashMap();
67   -//
68   -// tableMap.put("courseTypeId",CollectionUtils.isNotEmpty(typeModels) ? typeModels.get(0).getId() : "");
69   -// tableMap.put("courseTypeName",CollectionUtils.isNotEmpty(typeModels) ? typeModels.get(0).getCourseTypeName() : "");
70   -// tableMap.put("courseName",courseModel.getCourseName());
71   -//
72   -// tableMap.put("sends",courseSends);
73   -// tableMap.put("orders",courseOrders);
74   -// tableMap.put("ordersRate",allPatientCourses == 0 ? "0" : df.format((double) courseOrders / allPatientCourses * 100) + "%");
75   -// tableMap.put("signs",courseSigns);
76   -// tableMap.put("signsRate",allPatientCourses == 0 ? "0" : df.format((double) courseSigns / allPatientCourses * 100) + "%");
77   -// tableData.add(tableMap);
78   -// }
79   -//
80   -// chartData.put("titles",titles);
81   -// chartData.put("sends",sends);
82   -// chartData.put("orders",orders);
83   -// chartData.put("signs",signs);
84   -// }
  51 + public List<Map<String,String>> call() throws Exception {
85 52  
86   - return chartData;
  53 + List<Map<String,String>> data = new ArrayList<>();
  54 + if (CollectionUtils.isNotEmpty(courseModelList))
  55 + {
  56 + DecimalFormat df = new DecimalFormat("0.00");
  57 +
  58 + CourseTypeQuery courseTypeQuery = new CourseTypeQuery();
  59 + courseTypeQuery.setHospitalId(hospitalId);
  60 + courseTypeQuery.setYn(YnEnums.YES.getId());
  61 +
  62 +
  63 + PatientCourseQuery patientCourseQuery = new PatientCourseQuery();
  64 + patientCourseQuery.setYn(YnEnums.YES.getId());
  65 + patientCourseQuery.setHospitalId(hospitalId);
  66 +
  67 + for (CourseModel courseModel : courseModelList)
  68 + {
  69 + Map<String,String> topmap = new HashMap();
  70 +
  71 + topmap.put("courseId",courseModel.getId());
  72 +
  73 + patientCourseQuery.setCourseId(courseModel.getId());
  74 + topmap.put("title", courseModel.getCourseName());
  75 +
  76 + patientCourseQuery.setStatus(1);
  77 + int courseOrders = patientCourseService.queryPatientCourseCount(patientCourseQuery);
  78 + topmap.put("order", String.valueOf(courseOrders));
  79 +
  80 + patientCourseQuery.setStatus(2);
  81 + int courseSigns = patientCourseService.queryPatientCourseCount(patientCourseQuery);
  82 + topmap.put("courseSigns", String.valueOf(courseSigns));
  83 +
  84 + int courseSends = MessageCenterService.getCourseCountData(hospitalId, String.valueOf(SmsServiceEnums.YFXXKCTX.getId()), 3,
  85 + 1, courseModel.getId(), null, null);
  86 + topmap.put("courseSends", String.valueOf(courseSends));
  87 +
  88 + courseTypeQuery.setId(courseModel.getCourseTypeId());
  89 + List<CourseTypeModel> typeModels = courseTypeService.queryCourseTypeList(courseTypeQuery);
  90 +
  91 + topmap.put("courseTypeId",CollectionUtils.isNotEmpty(typeModels) ? typeModels.get(0).getId() : "");
  92 + topmap.put("courseTypeName",CollectionUtils.isNotEmpty(typeModels) ? typeModels.get(0).getCourseTypeName() : "");
  93 + topmap.put("courseName",courseModel.getCourseName());
  94 +
  95 + topmap.put("sends",String.valueOf(courseSends));
  96 + topmap.put("orders",String.valueOf(courseOrders));
  97 + topmap.put("ordersRate",allPatientCourses == 0 ? "0" : df.format((double) courseOrders / allPatientCourses * 100) + "%");
  98 + topmap.put("signs",String.valueOf(courseSigns));
  99 + topmap.put("signsRate", allPatientCourses == 0 ? "0" : df.format((double) courseSigns / allPatientCourses * 100) + "%");
  100 +
  101 + data.add(topmap);
  102 + }
  103 + }
  104 + return data;
87 105 }
88 106 }