From 9537eaa5439ce843293c5a410dc7a3737ebdb863 Mon Sep 17 00:00:00 2001 From: liquanyu Date: Thu, 19 Apr 2018 14:25:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=95=E5=A6=87=E5=AD=A6=E6=A0=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/lyms/platform/pojo/CourseModel.java | 12 ++ .../java/com/lyms/platform/query/CourseQuery.java | 36 ++++ .../com/lyms/platform/query/PatientsQuery.java | 8 + .../msg/controller/MsgGenerateController.java | 16 ++ .../msg/service/impl/MsgGenerateServiceImpl.java | 7 +- .../msg/worker/ChanAmsMsgGenerateWorker.java | 4 +- .../msg/worker/CourseMsgGenerateWorker.java | 184 ++++++++++++++------- .../platform/operate/web/facade/CourseFacade.java | 31 ++-- 8 files changed, 217 insertions(+), 81 deletions(-) diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/CourseModel.java b/platform-dal/src/main/java/com/lyms/platform/pojo/CourseModel.java index 55be653..c00eeff 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/CourseModel.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/CourseModel.java @@ -75,6 +75,18 @@ public class CourseModel extends BaseModel { //是否发送过推送 字段不存在表示未推送,1已推送 private Integer isSend; + //发布时间 + private Date publishTime; + + + public Date getPublishTime() { + return publishTime; + } + + public void setPublishTime(Date publishTime) { + this.publishTime = publishTime; + } + public Integer getIsSend() { return isSend; } diff --git a/platform-dal/src/main/java/com/lyms/platform/query/CourseQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/CourseQuery.java index 8980cc0..334be6f 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/CourseQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/CourseQuery.java @@ -32,6 +32,11 @@ public class CourseQuery extends BaseQuery implements IConvertToNativeQuery { private Date courseTimeEnd; + //课程发布时间 + private Date publishTimeStart; + + private Date publishTimeEnd; + //时长 private String timeLong; @@ -171,6 +176,21 @@ public class CourseQuery extends BaseQuery implements IConvertToNativeQuery { } + if (null != publishTimeStart) { + if (null != c1) { + c1 = c1.and("publishTime").gte(publishTimeStart); + } else { + c1 = Criteria.where("publishTime").gte(publishTimeStart); + } + } + + if (null != publishTimeEnd) { + if (null != c1) { + c1 = c1.lte(publishTimeEnd); + } else { + c1 = Criteria.where("publishTime").lte(publishTimeEnd); + } + } if (null != createdStart) { if (null != c1) { @@ -194,6 +214,22 @@ public class CourseQuery extends BaseQuery implements IConvertToNativeQuery { return condition.toMongoQuery(); } + public Date getPublishTimeStart() { + return publishTimeStart; + } + + public void setPublishTimeStart(Date publishTimeStart) { + this.publishTimeStart = publishTimeStart; + } + + public Date getPublishTimeEnd() { + return publishTimeEnd; + } + + public void setPublishTimeEnd(Date publishTimeEnd) { + this.publishTimeEnd = publishTimeEnd; + } + public boolean isSend() { return isSend; } diff --git a/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java index 693e28c..f2d01c5 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java @@ -1325,6 +1325,14 @@ public class PatientsQuery extends BaseQuery implements IConvertToNativeQuery { c1 = Criteria.where("fmDate").gte(fmDateStart).lte(fmDateEnd); } } + else if (fmDateStart != null) + { + if (null != c1) { + c1 = c1.and("fmDate").gte(fmDateStart); + } else { + c1 = Criteria.where("fmDate").gte(fmDateStart); + } + } if (null != serviceType) { condition = condition.and("serviceType", serviceType, MongoOper.IS); diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/controller/MsgGenerateController.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/controller/MsgGenerateController.java index 4563fed..f0c2fd6 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/controller/MsgGenerateController.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/controller/MsgGenerateController.java @@ -87,6 +87,22 @@ public class MsgGenerateController extends BaseController { /** + * 孕妇课程 + * @param hospitalId + * @return + */ + @RequestMapping(method = RequestMethod.GET, value = "/generateCourseMsg") + @ResponseBody + public String generateCourseMsg(@RequestParam(required = false) String hospitalId) + { + + logger.info("The request hospital id is {} ", hospitalId); + msgGenerateService.generateCourseMsg(hospitalId); + return ""; + } + + + /** * 生成所有 * @return */ diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/MsgGenerateServiceImpl.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/MsgGenerateServiceImpl.java index 7c42c1a..62c9daa 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/MsgGenerateServiceImpl.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/MsgGenerateServiceImpl.java @@ -198,8 +198,8 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { query.setStatus(CourseStatusEnums.YFB.getId()); query.setIsSend(false); String currentDate = DateUtil.getyyyy_MM_dd(new Date()); - query.setCreatedStart(DateUtil.parseYMD(currentDate)); - query.setCreatedEnd(DateUtil.parseYMDHMS(currentDate + " 23:59:59")); + query.setPublishTimeStart(DateUtil.parseYMD(currentDate)); + query.setPublishTimeEnd(DateUtil.parseYMDHMS(currentDate + " 23:59:59")); if (StringUtils.isNotEmpty(generateHospitalId)) { @@ -220,8 +220,7 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { CourseMsgGenerateWorker worker = new CourseMsgGenerateWorker(courseModels.subList(i,end), baseService, yunBookbuildingService, - smsTemplateService, - babyBookbuildingService + courseService ); pool.execute(worker); } diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/ChanAmsMsgGenerateWorker.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/ChanAmsMsgGenerateWorker.java index c414258..462d2f8 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/ChanAmsMsgGenerateWorker.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/ChanAmsMsgGenerateWorker.java @@ -98,9 +98,7 @@ public class ChanAmsMsgGenerateWorker implements Runnable { buildType.add(2); patientsQuery.setSmsBuildTypeList(buildType); -// //末次月经必须大于当前时间减去42周视为为分娩孕妇 -// Date lastMensesMax = DateUtil.addDay(new Date(), -42); -// patientsQuery.setLastMensesStart(lastMensesMax); + //健康指导短信 只能是类型为 增值服务 开通状态 才发送 patientsQuery.setServiceType(ServiceTypeEnums.ADD_SERVICE.getId()); patientsQuery.setServiceStatus(ServiceStatusEnums.ADD_OPEN.getId()); diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/CourseMsgGenerateWorker.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/CourseMsgGenerateWorker.java index 6128586..a2ca7b0 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/CourseMsgGenerateWorker.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/CourseMsgGenerateWorker.java @@ -45,21 +45,16 @@ public class CourseMsgGenerateWorker implements Runnable { private YunBookbuildingService yunBookbuildingService; + private CourseService courseService; - private SmsTemplateService smsTemplateService; - - private BabyBookbuildingService babyBookbuildingService; public CourseMsgGenerateWorker( List courseModels, IBaseService baseService, - YunBookbuildingService yunBookbuildingService, - SmsTemplateService smsTemplateService, - BabyBookbuildingService babyBookbuildingService) + YunBookbuildingService yunBookbuildingService,CourseService courseService) { this.courseModels = courseModels; this.baseService = baseService; this.yunBookbuildingService = yunBookbuildingService; - this.smsTemplateService = smsTemplateService; - this.babyBookbuildingService = babyBookbuildingService; + this.courseService = courseService; } @@ -121,70 +116,131 @@ public class CourseMsgGenerateWorker implements Runnable { private void generateYun(CourseModel course,SmsConfigModel config,int service) { - //发送短信集合 - MsgListRequest list = new MsgListRequest(); - List messages = new ArrayList<>(); - PatientsQuery patientsQuery = new PatientsQuery(); - patientsQuery.setYn(YnEnums.YES.getId()); - patientsQuery.setHospitalId(course.getHospitalId()); - patientsQuery.setLimit(1000); - int count = 1; - while (true) - { - List buildType = new ArrayList(); - buildType.add(0); - buildType.add(2); - patientsQuery.setSmsBuildTypeList(buildType); - //1孕妇 3 产妇 - patientsQuery.setType(1); - //分娩状态 - patientsQuery.setDueStatus(0); - - //末次月经必须大于当前时间减去42周视为未分娩孕妇 - Date lastMenses = DateUtils.getNewDate(new Date(),-42, "周", 0); - Date lastMensesMax = DateUtils.formatDate(lastMenses,DateUtils.Y_M_D); - patientsQuery.setLastMensesStart(lastMensesMax); - - patientsQuery.setNeed("true"); - patientsQuery.setPage(count); - - //查询符合条件的孕妇 - List patients = yunBookbuildingService.queryPregnantWithQuery(patientsQuery); - if (CollectionUtils.isNotEmpty(patients)) + try { + //发送短信集合 + MsgListRequest list = new MsgListRequest(); + List messages = new ArrayList<>(); + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setHospitalId(course.getHospitalId()); + patientsQuery.setLimit(1000); + int count = 1; + while (true) { - for (Patients pat : patients) + logger.info("generateYun course page="+count+";courseName="+course.getCourseName()+";courseId="+course.getId()); + List buildType = new ArrayList(); + buildType.add(0); + buildType.add(2); + patientsQuery.setSmsBuildTypeList(buildType); + //1孕妇 3 产妇 + patientsQuery.setType(1); + //分娩状态 + patientsQuery.setDueStatus(0); + + //末次月经必须大于当前时间减去42周视为未分娩孕妇 + Date lastMenses = DateUtils.getNewDate(new Date(),-42, "周", 0); + Date lastMensesMax = DateUtils.formatDate(lastMenses,DateUtils.Y_M_D); + patientsQuery.setLastMensesStart(lastMensesMax); + + patientsQuery.setNeed("true"); + patientsQuery.setPage(count); + + //查询符合条件的孕妇 + List patients = yunBookbuildingService.queryPregnantWithQuery(patientsQuery); + if (CollectionUtils.isNotEmpty(patients)) { - //消息前缀 - String messagePrefix = baseService.getSmsPrefix(config, pat.getBookbuildingDoctor(), ServiceObjEnums.YUNOBJ.getId()); - String courseTime = DateUtils.getDateStr(course.getCourseTime(),DateUtils.Y_M_D_H_M)+" ("+DateUtils.getWeekOfDate(course.getCourseTime())+")"; - - String messageContent = "【"+messagePrefix+"】"; - MsgRequest request = HelperUtils.getMessageRequest(messageContent, pat.getPhone(), - ServiceObjEnums.YUNOBJ.getId(), SmsServiceEnums.YFXXKCTX.getId(), - course.getHospitalId(), course.getId(), pat.getId(), course.getCourseName(), - course.getCourseSpeaker(), courseTime, - WxTempleteIdEnums.YUN_XUE_KE_CHEN_TX.getId(),service); - - messages.add(request); + for (Patients pat : patients) + { + //消息前缀 + String messagePrefix = baseService.getSmsPrefix(config, pat.getBookbuildingDoctor(), ServiceObjEnums.YUNOBJ.getId()); + String courseTime = DateUtils.getDateStr(course.getCourseTime(),DateUtils.Y_M_D_H_M)+" ("+DateUtils.getWeekOfDate(course.getCourseTime())+")"; + + String messageContent = "【"+messagePrefix+"】"; + MsgRequest request = HelperUtils.getMessageRequest(messageContent, pat.getPhone(), + ServiceObjEnums.YUNOBJ.getId(), SmsServiceEnums.YFXXKCTX.getId(), + course.getHospitalId(), course.getId(), pat.getId(), course.getCourseName(), + course.getCourseSpeaker(), courseTime, + WxTempleteIdEnums.YUN_XUE_KE_CHEN_TX.getId(),service); + + messages.add(request); + } } + else + { + break; + } + count++; } - else - { - break; - } - count++; + list.setMessages(messages); + HelperUtils.sendMsg(list); + Thread.sleep(5000); + + course.setIsSend(1); + courseService.updateCourse(course); + } catch (InterruptedException e) { + logger.info("generateYun error." + course); } - list.setMessages(messages); - HelperUtils.sendMsg(list); } private void generateChan(CourseModel course,SmsConfigModel config,int service) { - //发送短信集合 - MsgListRequest list = new MsgListRequest(); - List messages = new ArrayList<>(); - - list.setMessages(messages); - HelperUtils.sendMsg(list); + try { + //发送短信集合 + MsgListRequest list = new MsgListRequest(); + List messages = new ArrayList<>(); + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setHospitalId(course.getHospitalId()); + patientsQuery.setLimit(1000); + int count = 1; + while (true) + { + logger.info("generateChan course page=" + count + ";courseName=" + course.getCourseName() + ";courseId=" + course.getId()); + List buildType = new ArrayList(); + buildType.add(0); + buildType.add(2); + patientsQuery.setSmsBuildTypeList(buildType); + //1孕妇 3 产妇 + patientsQuery.setType(3); + //分娩状态 + patientsQuery.setDueStatus(0); + + patientsQuery.setNeed("true"); + patientsQuery.setPage(count); + + //查询符合条件的孕妇 + List patients = yunBookbuildingService.queryPregnantWithQuery(patientsQuery); + if (CollectionUtils.isNotEmpty(patients)) + { + for (Patients pat : patients) + { + //消息前缀 + String messagePrefix = baseService.getSmsPrefix(config, pat.getBookbuildingDoctor(), ServiceObjEnums.YUNOBJ.getId()); + String courseTime = DateUtils.getDateStr(course.getCourseTime(),DateUtils.Y_M_D_H_M)+" ("+DateUtils.getWeekOfDate(course.getCourseTime())+")"; + + String messageContent = "【"+messagePrefix+"】"; + MsgRequest request = HelperUtils.getMessageRequest(messageContent, pat.getPhone(), + ServiceObjEnums.YUNOBJ.getId(), SmsServiceEnums.YFXXKCTX.getId(), + course.getHospitalId(), course.getId(), pat.getId(), course.getCourseName(), + course.getCourseSpeaker(), courseTime, + WxTempleteIdEnums.YUN_XUE_KE_CHEN_TX.getId(),service); + + messages.add(request); + } + } + else + { + break; + } + count++; + } + list.setMessages(messages); + HelperUtils.sendMsg(list); + Thread.sleep(5000); + course.setIsSend(1); + courseService.updateCourse(course); + } catch (InterruptedException e) { + logger.info("generateChan error."+course); + } } } 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 b260966..cb90e2d 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 @@ -7,6 +7,7 @@ import com.lyms.platform.biz.service.PatientCourseService; import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.enums.CourseStatusEnums; import com.lyms.platform.common.enums.OptActionEnums; +import com.lyms.platform.common.enums.SmsServiceEnums; import com.lyms.platform.common.enums.YnEnums; import com.lyms.platform.common.result.BaseListResponse; import com.lyms.platform.common.result.BaseObjectResponse; @@ -235,6 +236,7 @@ public class CourseFacade { model.setStatus(CourseStatusEnums.YFB.getId()); model.setId(id); model.setModified(new Date()); + model.setPublishTime(new Date()); courseService.updateCourse(model); } @@ -374,7 +376,8 @@ public class CourseFacade { query.setYn(YnEnums.YES.getId()); query.setHospitalId(hospitalId); - int allSends = 0; //TODO + int allSends = getCourseCountData(hospitalId, String.valueOf(SmsServiceEnums.YFXXKCTX.getId()), 3, + 1,null, null, null); PatientCourseQuery patientCourseQuery = new PatientCourseQuery(); patientCourseQuery.setYn(YnEnums.YES.getId()); @@ -399,19 +402,24 @@ public class CourseFacade { resultData.put("allCourses",allCourses); //课程数 resultData.put("allSends",allSends); //总推送数 resultData.put("allOrders",allOrders); //总预约数 - resultData.put("allOrderRate",allCourses == 0 ? 0 : df.format((double) allOrders / allPatientCourses * 100) + "%"); //总预约率 - resultData.put("allSigns",allSigns);//总签到数 - resultData.put("allSignRate",allCourses == 0 ? 0 : df.format((double) allSigns / allPatientCourses * 100) + "%");//总签到率 + resultData.put("allOrderRate", allCourses == 0 ? 0 : df.format((double) allOrders / allPatientCourses * 100) + "%"); //总预约率 + resultData.put("allSigns", allSigns);//总签到数 + resultData.put("allSignRate", allCourses == 0 ? 0 : df.format((double) allSigns / allPatientCourses * 100) + "%");//总签到率 CourseTypeQuery courseTypeQuery = new CourseTypeQuery(); courseTypeQuery.setHospitalId(hospitalId); courseTypeQuery.setYn(YnEnums.YES.getId()); + String start = null; + String end = null; + if (StringUtils.isNotEmpty(time)) { String[] dates = time.split(" - "); - patientCourseQuery.setCreatedStart(DateUtil.parseYMD(dates[0])); + start = dates[0]; + patientCourseQuery.setCreatedStart(DateUtil.parseYMD(start)); if (dates.length == 2) { - patientCourseQuery.setCreatedEnd(DateUtil.parseYMDHMS(dates[1] + " 23:59:59")); + end = dates[1]; + patientCourseQuery.setCreatedEnd(DateUtil.parseYMDHMS(end + " 23:59:59")); } } @@ -440,7 +448,8 @@ public class CourseFacade { int courseSigns = patientCourseService.queryPatientCourseCount(patientCourseQuery); signs.add(courseSigns); - int courseSends = 0; //TODO + int courseSends = getCourseCountData(hospitalId, String.valueOf(SmsServiceEnums.YFXXKCTX.getId()), 3, + 1,courseModel.getId(), start, end); sends.add(courseSends); courseTypeQuery.setId(courseModel.getCourseTypeId()); @@ -452,7 +461,7 @@ public class CourseFacade { tableMap.put("courseTypeName",CollectionUtils.isNotEmpty(typeModels) ? typeModels.get(0).getCourseTypeName() : ""); tableMap.put("courseName",courseModel.getCourseName()); - tableMap.put("sends",0);//TODO + tableMap.put("sends",courseSends); tableMap.put("orders",courseOrders); tableMap.put("ordersRate",allCourses == 0 ? "0" : df.format((double) courseOrders / allPatientCourses * 100) + "%"); tableMap.put("signs",courseSigns); @@ -479,8 +488,9 @@ public class CourseFacade { private int getCourseCountData(String hospitalId, String subTypeId, - Integer smsStatus, + Integer status, Integer sendType, + String tempId, String createTimeStart, String createTimeEnd) { @@ -488,7 +498,8 @@ public class CourseFacade { param.put("hospitalId",hospitalId); param.put("subTypeId",subTypeId); - param.put("status",smsStatus == null ? null : String.valueOf(smsStatus)); + param.put("tempId",tempId == null ? null : String.valueOf(tempId)); + param.put("status",status == null ? null : String.valueOf(status)); param.put("sendType",sendType == null ? null : String.valueOf(sendType)); param.put("createTimeStart",createTimeStart); param.put("createTimeEnd",createTimeEnd); -- 1.8.3.1