From 50178bc998c27636de07169fa88f453376044b87 Mon Sep 17 00:00:00 2001 From: dongqin <123456> Date: Thu, 12 Sep 2019 16:35:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A0=E6=9C=8D=E5=8A=A1=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msg/service/impl/MsgGenerateServiceImpl.java | 10 +- .../com/lyms/platform/msg/utils/HelperUtils.java | 20 +++ .../msg/worker/TempleteMsgGenerateWorker.java | 178 +++++++++++++++------ 3 files changed, 156 insertions(+), 52 deletions(-) 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 4882c05..9ba7a5d 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 @@ -9,10 +9,7 @@ import com.lyms.platform.msg.service.IMsgGenerateService; import com.lyms.platform.msg.utils.DateUtils; import com.lyms.platform.msg.worker.*; -import com.lyms.platform.permission.service.BabyPatientExtendEarFollowUpService; -import com.lyms.platform.permission.service.BabyPatientExtendEarHearingDiagnoseService; -import com.lyms.platform.permission.service.BabyPatientExtendEarScreenService; -import com.lyms.platform.permission.service.PatientServiceService; +import com.lyms.platform.permission.service.*; import com.lyms.platform.pojo.BasicConfig; import com.lyms.platform.pojo.CourseModel; import com.lyms.platform.pojo.SmsConfigModel; @@ -82,6 +79,8 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { @Autowired private PatientServiceService patientServiceService; + @Autowired + private UsersService usersService; /** * 生成孕妇的AMS推送消息 @@ -205,7 +204,8 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { babyPatientExtendEarScreenService, hearingDiagnoseService, babyPatientExtendEarFollowUpService, - patientServiceService); + patientServiceService, + usersService); pool.execute(worker); } diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/HelperUtils.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/HelperUtils.java index dabdf56..8a4676b 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/HelperUtils.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/HelperUtils.java @@ -225,6 +225,24 @@ public class HelperUtils { } /** + * 预约模块单独处理 + * + * @param username + * @param yuYueDate + * @param remark + * @param repalceStr + * @return + */ + public static String replaceELD(String username, Date yuYueDate, String remark, String repalceStr) { + + if (StringUtils.isNotEmpty(repalceStr)) { + String date = DateUtil.getyyyy_MM_dd(yuYueDate); + return repalceStr.replace("{{姓名}}",username).replace("{{预约检查时间}}", date).replace("{{出诊医生}}", remark); + } + return repalceStr; + } + + /** * 封装孕妇 /产妇 服务类型和服务状态条件 * @param serviceType * @param serviceStatus @@ -421,4 +439,6 @@ public class HelperUtils { } return ""; } + + } diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/TempleteMsgGenerateWorker.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/TempleteMsgGenerateWorker.java index 765157b..d33234b 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/TempleteMsgGenerateWorker.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/TempleteMsgGenerateWorker.java @@ -13,10 +13,7 @@ import com.lyms.platform.msg.service.IBaseService; import com.lyms.platform.msg.utils.DateUtils; import com.lyms.platform.msg.utils.HelperUtils; import com.lyms.platform.permission.model.*; -import com.lyms.platform.permission.service.BabyPatientExtendEarFollowUpService; -import com.lyms.platform.permission.service.BabyPatientExtendEarHearingDiagnoseService; -import com.lyms.platform.permission.service.BabyPatientExtendEarScreenService; -import com.lyms.platform.permission.service.PatientServiceService; +import com.lyms.platform.permission.service.*; import com.lyms.platform.pojo.*; import com.lyms.platform.query.BabyModelQuery; import com.lyms.platform.query.PatientsQuery; @@ -24,6 +21,7 @@ import com.lyms.platform.query.SmsTemplateQuery; import org.apache.commons.collections.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +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; @@ -63,6 +61,8 @@ public class TempleteMsgGenerateWorker implements Runnable { private PatientServiceService patientServiceService; + private UsersService usersService; + public TempleteMsgGenerateWorker(List configs, IBaseService baseService, YunBookbuildingService yunBookbuildingService, SmsTemplateService smsTemplateService, @@ -94,7 +94,8 @@ public class TempleteMsgGenerateWorker implements Runnable { BabyPatientExtendEarScreenService babyPatientExtendEarScreenService, BabyPatientExtendEarHearingDiagnoseService hearingDiagnoseService, BabyPatientExtendEarFollowUpService babyPatientExtendEarFollowUpService, - PatientServiceService patientServiceService) { + PatientServiceService patientServiceService, + UsersService usersService) { this.configs = configs; this.baseService = baseService; this.yunBookbuildingService = yunBookbuildingService; @@ -106,6 +107,7 @@ public class TempleteMsgGenerateWorker implements Runnable { this.hearingDiagnoseService = hearingDiagnoseService; this.babyPatientExtendEarFollowUpService = babyPatientExtendEarFollowUpService; this.patientServiceService = patientServiceService; + this.usersService = usersService; } @Override @@ -326,16 +328,29 @@ public class TempleteMsgGenerateWorker implements Runnable { addBabyRemindMessages(template, config, service, tempHid, sendTimeType, messages, start, end, babyModel); } } else { - BabyModelQuery babyQuery = getBabyModelQuery(template); - babyQuery.setBirthStart(startDate); - babyQuery.setBirthEnd(endDate); - List babyModels = babyBookbuildingService.queryBabyBuildByCond(babyQuery); - for (BabyModel babyModel : babyModels){ - HashMap hashMap = getMapByParam(template, babyModel.getId(), true); - List patientServices = patientServiceService.getPatientServices(hashMap); - if (CollectionUtils.isNotEmpty(patientServices)){ + if (serviceType == ServiceTypeEnums.NO_SERVICE.getId() + && serviceStatus == ServiceStatusEnums.NO_SERVICE.getId() && sendTimeType == SendTimeEnums.QYT.getId()) { + // 无服务 - 全部 - 前一天 + babyModelQuery.setBirthStart(startDate); + babyModelQuery.setBirthEnd(endDate); + babyModelQuery.setServiceTypeIsExist(false); + List babyModels = babyBookbuildingService.queryBabyBuildByCond(babyModelQuery); + for (BabyModel babyModel: babyModels){ addBabyRemindMessages(template, config, service, tempHid, sendTimeType, messages, start, end, babyModel); } + + } else { + BabyModelQuery babyQuery = getBabyModelQuery(template); + babyQuery.setBirthStart(startDate); + babyQuery.setBirthEnd(endDate); + List babyModels = babyBookbuildingService.queryBabyBuildByCond(babyQuery); + for (BabyModel babyModel : babyModels){ + HashMap hashMap = getMapByParam(template, babyModel.getId(), true); + List patientServices = patientServiceService.getPatientServices(hashMap); + if (CollectionUtils.isNotEmpty(patientServices)){ + addBabyRemindMessages(template, config, service, tempHid, sendTimeType, messages, start, end, babyModel); + } + } } } } @@ -936,41 +951,54 @@ public class TempleteMsgGenerateWorker implements Runnable { MsgListRequest list = new MsgListRequest(); List messages = new ArrayList<>(); - //孕妇预约短信 + //孕妇预约短信 + 无服务 if (smsType == SmsServiceEnums.CJYYTX.getId()) { Date yuYueDate = DateUtils.addDay(new Date(), sendTimeType); + //得到孕妇的id Set idset = baseService.getYuYuePatient(sendTimeType, tempHid); for (String id : idset) { //查询符合条件的孕妇 patientsQuery.setId(id); - + String remark = getRemark(id); if (serviceType == com.lyms.platform.common.enums.ServiceTypeEnums.ALL_SERVICE.getId() && serviceStatus == ServiceStatusEnums.ADD_ALL.getId()){ // 服务类型和服务状态都为全部时 - addYumReservMessages(template, config, service, messages, yuYueDate, patientsQuery); + addYumReservMessages(template, config, service, messages, yuYueDate, patientsQuery, remark); } else { - // 兼容多服务推送 - HashMap hashMap = getMapByParam(template, id, false); - List patientServices = patientServiceService.getPatientServices(hashMap); - if (CollectionUtils.isNotEmpty(patientServices)){ - PatientsQuery query = new PatientsQuery(); - query.setId(id); - addYumReservMessages(template, config, service, messages, yuYueDate, query); + + if (serviceType == ServiceTypeEnums.NO_SERVICE.getId() + && serviceStatus == ServiceStatusEnums.NO_SERVICE.getId() + && template.getSendTimeType() == SendTimeEnums.QYT.getId()) { + + // 无服务 - 全部 - 产检预约提醒 - 前一天 + patientsQuery.setServiceTypeIsExist(false); + addYumReservMessages(template, config, service, messages, yuYueDate, patientsQuery, remark); + } else { + // 兼容多服务推送 + HashMap hashMap = getMapByParam(template, id, false); + List patientServices = patientServiceService.getPatientServices(hashMap); + if (CollectionUtils.isNotEmpty(patientServices)){ + PatientsQuery query = new PatientsQuery(); + query.setId(id); + addYumReservMessages(template, config, service, messages, yuYueDate, query, remark); + } } + + } } list.setMessages(messages); HelperUtils.sendMsg(list); } - //产检程序提醒 + //产检程序提醒 + 无服务产检程序提醒 else if (smsType == SmsServiceEnums.CJCXTX.getId()) { + //发送频次 Integer sendFreq = template.getSendFrequency(); - if (sendFreq == SendFrequencyEnums.ONCE.getId()) { //GL(0,"公历","0,1,2","0,1,2,3"),NL(1,"农历","0,1,2","0,1,2,3"),TSRQ(2,"特殊日期","0,2","1,2,3"),SLRQ(3,"生理日期","0","1,2,3"); Integer sendDateType = template.getSendDateType(); @@ -989,7 +1017,6 @@ public class TempleteMsgGenerateWorker implements Runnable { endDate = DateUtils.formatDate(endDate, DateUtils.Y_M_D); //查询符合条件的孕妇 - if (serviceType == com.lyms.platform.common.enums.ServiceTypeEnums.ALL_SERVICE.getId() && serviceStatus == ServiceStatusEnums.ADD_ALL.getId()){ // 服务类型和服务状态都为全部时 @@ -1002,17 +1029,26 @@ public class TempleteMsgGenerateWorker implements Runnable { } } else { - PatientsQuery query = getPatientsQuery(template, true); - query.setLastMensesStart(startDate); - query.setLastMensesEnd(endDate); - - List patients = yunBookbuildingService.queryPregnantWithQuery(query); - for (Patients patient : patients){ - HashMap hashMap = getMapByParam(template, patient.getId(), false); - List patientServices = patientServiceService.getPatientServices(hashMap); - if (CollectionUtils.isNotEmpty(patientServices)){ + if (serviceType == ServiceTypeEnums.NO_SERVICE.getId() && serviceStatus == ServiceStatusEnums.NO_SERVICE.getId()) { + // 无服务产检程序提醒 + patientsQuery.setServiceTypeIsExist(false); + List patients = yunBookbuildingService.queryPregnantWithQuery(patientsQuery); + for (Patients patient : patients) { addYumRemindMessages(template, config, service, tempHid, sendTimeType, messages,start, end, patient); } + } else { + PatientsQuery query = getPatientsQuery(template, true); + query.setLastMensesStart(startDate); + query.setLastMensesEnd(endDate); + + List patients = yunBookbuildingService.queryPregnantWithQuery(query); + for (Patients patient : patients){ + HashMap hashMap = getMapByParam(template, patient.getId(), false); + List patientServices = patientServiceService.getPatientServices(hashMap); + if (CollectionUtils.isNotEmpty(patientServices)){ + addYumRemindMessages(template, config, service, tempHid, sendTimeType, messages,start, end, patient); + } + } } } } @@ -1022,7 +1058,7 @@ public class TempleteMsgGenerateWorker implements Runnable { list.setMessages(messages); HelperUtils.sendMsg(list); } - //产检过期提醒 + //产检过期提醒 + 无服务 - 产检过期提醒 else if (smsType == SmsServiceEnums.CJGQTX.getId()) { //去产检冗余表,根据产检时间进行降序排列,取第一条的下次产检时间 //查询产检冗余表的产检时间为昨天或前天,再根据patientId集合,查询产检冗余表,然后如果产检时间在规定范围内存在,则已经产检, @@ -1053,6 +1089,26 @@ public class TempleteMsgGenerateWorker implements Runnable { HelperUtils.sendMsg(list); } } else { + if (serviceType == ServiceTypeEnums.NO_SERVICE.getId() + && serviceStatus == ServiceStatusEnums.NO_SERVICE.getId() + && sendTimeType == SendTimeEnums.DT.getId()) { + // 无服务 + patientsQuery.setServiceTypeIsExist(false); + patientsQuery.setIsNextCheckTime(yuYueDate); + List patients = yunBookbuildingService.queryPregnantWithQuery(patientsQuery); + if (CollectionUtils.isNotEmpty(patients)){ + for (Patients patient: patients){ + boolean existMsg = HelperUtils.isExistMsg(patient.getId(), template.getId()); + if (existMsg){ + continue; + } + addYunOverdueMessages(template, config, service, messages, yuYueDate, patient); + } + list.setMessages(messages); + HelperUtils.sendMsg(list); + } + } + PatientsQuery query = getPatientsQuery(template, true); query.setIsNextCheckTime(yuYueDate); List patients = yunBookbuildingService.queryPregnantWithQuery(query); @@ -1075,9 +1131,10 @@ public class TempleteMsgGenerateWorker implements Runnable { } } + // todo 体重测量提醒 else if(smsType == SmsServiceEnums.TZTX.getId()){ - // todo 体重测量提醒 + if (serviceType == ServiceTypeEnums.ADD_WEIGHT_MONITOR_SERVICE.getId()){ Integer tzId = PatientSerEnums.SerTypeEnums.tz.getId(); Map kv = new HashMap<>(16); @@ -1088,9 +1145,9 @@ public class TempleteMsgGenerateWorker implements Runnable { list.setMessages(messages); HelperUtils.sendMsg(list); } - } else if (smsType == SmsServiceEnums.XTTX.getId()){ - - // 血糖测量提醒 + } + // 血糖测量提醒 + else if (smsType == SmsServiceEnums.XTTX.getId()){ Integer xtId = PatientSerEnums.SerTypeEnums.xt.getId(); Map kv = new HashMap<>(16); kv.put("keyword1","血糖测量提醒"); @@ -1099,9 +1156,11 @@ public class TempleteMsgGenerateWorker implements Runnable { commonServiceTypeMsg(template, config, service, messages, xtId, kv); list.setMessages(messages); HelperUtils.sendMsg(list); - } else if (smsType == SmsServiceEnums.XYTX.getId()) { + } + // todo 血压测量提醒 + else if (smsType == SmsServiceEnums.XYTX.getId()) { + - // todo 血压测量提醒 Integer xyId = PatientSerEnums.SerTypeEnums.xy.getId(); Map kv = new HashMap<>(16); kv.put("keyword1","血压测量提醒"); @@ -1110,9 +1169,9 @@ public class TempleteMsgGenerateWorker implements Runnable { commonServiceTypeMsg(template, config, service, messages, xyId, kv); list.setMessages(messages); HelperUtils.sendMsg(list); - }else if (smsType == SmsServiceEnums.NOSERVICE.getId()) { - - // todo 无服务 + } + // todo 无服务 - 全部 + else if (smsType == SmsServiceEnums.NOSERVICE.getId()) { Map kv = new HashMap<>(16); kv.put("keyword1","无服务"); kv.put("keyword2","标准市场收费@开通即生效@全程/孕周"); @@ -1124,6 +1183,30 @@ public class TempleteMsgGenerateWorker implements Runnable { } + /** + * 根据 + * @param id + * @return + */ + private String getRemark(String id) { + Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(id)), Patients.class); + if (patients != null) { + String lastCheckEmployeeId = patients.getLastCheckEmployeeId(); + if (StringUtils.isNotEmpty(lastCheckEmployeeId)) { + Users users = usersService.getUsers(Integer.parseInt(lastCheckEmployeeId)); + if (users != null) { + String name = users.getName(); + String remarks = users.getRemarks(); + if (StringUtils.isNotEmpty(name) && StringUtils.isNotEmpty(remarks)) { + // e.g "出诊时间:王大锤出诊时间:周一、二、四上午,具体以医院挂号信息为准"; + return String.format("出诊时间:%s 出诊时间: %s", name, remarks); + } + } + } + } + return ""; + } + /** * 常用的服务类型的业务代码 @@ -1486,7 +1569,7 @@ public class TempleteMsgGenerateWorker implements Runnable { * @param yuYueDate * @param query */ - private void addYumReservMessages(SmsTemplateModel template, SmsConfigModel config, Integer service, List messages, Date yuYueDate, PatientsQuery query) { + private void addYumReservMessages(SmsTemplateModel template, SmsConfigModel config, Integer service, List messages, Date yuYueDate, PatientsQuery query, String remark) { List patients = yunBookbuildingService.queryPregnantWithQuery(query); if (CollectionUtils.isNotEmpty(patients)) { @@ -1500,7 +1583,8 @@ public class TempleteMsgGenerateWorker implements Runnable { //短信前缀 String messagePrefix = baseService.getSmsPrefix(config, pat.getBookbuildingDoctor(), ServiceObjEnums.YUNOBJ.getId()); String messageContent = "【" + messagePrefix + "】" + template.getContent(); - messageContent = HelperUtils.replaceEL(pat.getUsername(), yuYueDate, messageContent); + //messageContent = HelperUtils.replaceEL(pat.getUsername(), yuYueDate, messageContent); + messageContent = HelperUtils.replaceELD(pat.getUsername(), yuYueDate, remark, messageContent); String checkTimeStr = DateUtils.getDateStr(yuYueDate, DateUtils.Y_M_D); String checkName = "产前检查"; -- 1.8.3.1