Commit 50178bc998c27636de07169fa88f453376044b87

Authored by dongqin
1 parent 0ba3a134cb

无服务添加业务逻辑

Showing 3 changed files with 156 additions and 52 deletions

platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/MsgGenerateServiceImpl.java View file @ 50178bc
... ... @@ -9,10 +9,7 @@
9 9 import com.lyms.platform.msg.utils.DateUtils;
10 10 import com.lyms.platform.msg.worker.*;
11 11  
12   -import com.lyms.platform.permission.service.BabyPatientExtendEarFollowUpService;
13   -import com.lyms.platform.permission.service.BabyPatientExtendEarHearingDiagnoseService;
14   -import com.lyms.platform.permission.service.BabyPatientExtendEarScreenService;
15   -import com.lyms.platform.permission.service.PatientServiceService;
  12 +import com.lyms.platform.permission.service.*;
16 13 import com.lyms.platform.pojo.BasicConfig;
17 14 import com.lyms.platform.pojo.CourseModel;
18 15 import com.lyms.platform.pojo.SmsConfigModel;
... ... @@ -82,6 +79,8 @@
82 79 @Autowired
83 80 private PatientServiceService patientServiceService;
84 81  
  82 + @Autowired
  83 + private UsersService usersService;
85 84  
86 85 /**
87 86 * 生成孕妇的AMS推送消息
... ... @@ -205,7 +204,8 @@
205 204 babyPatientExtendEarScreenService,
206 205 hearingDiagnoseService,
207 206 babyPatientExtendEarFollowUpService,
208   - patientServiceService);
  207 + patientServiceService,
  208 + usersService);
209 209 pool.execute(worker);
210 210 }
211 211  
platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/HelperUtils.java View file @ 50178bc
... ... @@ -225,6 +225,24 @@
225 225 }
226 226  
227 227 /**
  228 + * 预约模块单独处理
  229 + *
  230 + * @param username
  231 + * @param yuYueDate
  232 + * @param remark
  233 + * @param repalceStr
  234 + * @return
  235 + */
  236 + public static String replaceELD(String username, Date yuYueDate, String remark, String repalceStr) {
  237 +
  238 + if (StringUtils.isNotEmpty(repalceStr)) {
  239 + String date = DateUtil.getyyyy_MM_dd(yuYueDate);
  240 + return repalceStr.replace("{{姓名}}",username).replace("{{预约检查时间}}", date).replace("{{出诊医生}}", remark);
  241 + }
  242 + return repalceStr;
  243 + }
  244 +
  245 + /**
228 246 * 封装孕妇 /产妇 服务类型和服务状态条件
229 247 * @param serviceType
230 248 * @param serviceStatus
... ... @@ -421,5 +439,7 @@
421 439 }
422 440 return "";
423 441 }
  442 +
  443 +
424 444 }
platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/TempleteMsgGenerateWorker.java View file @ 50178bc
... ... @@ -13,10 +13,7 @@
13 13 import com.lyms.platform.msg.utils.DateUtils;
14 14 import com.lyms.platform.msg.utils.HelperUtils;
15 15 import com.lyms.platform.permission.model.*;
16   -import com.lyms.platform.permission.service.BabyPatientExtendEarFollowUpService;
17   -import com.lyms.platform.permission.service.BabyPatientExtendEarHearingDiagnoseService;
18   -import com.lyms.platform.permission.service.BabyPatientExtendEarScreenService;
19   -import com.lyms.platform.permission.service.PatientServiceService;
  16 +import com.lyms.platform.permission.service.*;
20 17 import com.lyms.platform.pojo.*;
21 18 import com.lyms.platform.query.BabyModelQuery;
22 19 import com.lyms.platform.query.PatientsQuery;
... ... @@ -24,6 +21,7 @@
24 21 import org.apache.commons.collections.CollectionUtils;
25 22 import org.slf4j.Logger;
26 23 import org.slf4j.LoggerFactory;
  24 +import org.springframework.data.domain.Sort;
27 25 import org.springframework.data.mongodb.core.MongoTemplate;
28 26 import org.springframework.data.mongodb.core.query.Criteria;
29 27 import org.springframework.data.mongodb.core.query.Query;
... ... @@ -63,6 +61,8 @@
63 61  
64 62 private PatientServiceService patientServiceService;
65 63  
  64 + private UsersService usersService;
  65 +
66 66 public TempleteMsgGenerateWorker(List<SmsConfigModel> configs, IBaseService baseService,
67 67 YunBookbuildingService yunBookbuildingService,
68 68 SmsTemplateService smsTemplateService,
... ... @@ -94,7 +94,8 @@
94 94 BabyPatientExtendEarScreenService babyPatientExtendEarScreenService,
95 95 BabyPatientExtendEarHearingDiagnoseService hearingDiagnoseService,
96 96 BabyPatientExtendEarFollowUpService babyPatientExtendEarFollowUpService,
97   - PatientServiceService patientServiceService) {
  97 + PatientServiceService patientServiceService,
  98 + UsersService usersService) {
98 99 this.configs = configs;
99 100 this.baseService = baseService;
100 101 this.yunBookbuildingService = yunBookbuildingService;
... ... @@ -106,6 +107,7 @@
106 107 this.hearingDiagnoseService = hearingDiagnoseService;
107 108 this.babyPatientExtendEarFollowUpService = babyPatientExtendEarFollowUpService;
108 109 this.patientServiceService = patientServiceService;
  110 + this.usersService = usersService;
109 111 }
110 112  
111 113 @Override
112 114  
... ... @@ -326,16 +328,29 @@
326 328 addBabyRemindMessages(template, config, service, tempHid, sendTimeType, messages, start, end, babyModel);
327 329 }
328 330 } else {
329   - BabyModelQuery babyQuery = getBabyModelQuery(template);
330   - babyQuery.setBirthStart(startDate);
331   - babyQuery.setBirthEnd(endDate);
332   - List<BabyModel> babyModels = babyBookbuildingService.queryBabyBuildByCond(babyQuery);
333   - for (BabyModel babyModel : babyModels){
334   - HashMap<String, Object> hashMap = getMapByParam(template, babyModel.getId(), true);
335   - List<Map> patientServices = patientServiceService.getPatientServices(hashMap);
336   - if (CollectionUtils.isNotEmpty(patientServices)){
  331 + if (serviceType == ServiceTypeEnums.NO_SERVICE.getId()
  332 + && serviceStatus == ServiceStatusEnums.NO_SERVICE.getId() && sendTimeType == SendTimeEnums.QYT.getId()) {
  333 + // 无服务 - 全部 - 前一天
  334 + babyModelQuery.setBirthStart(startDate);
  335 + babyModelQuery.setBirthEnd(endDate);
  336 + babyModelQuery.setServiceTypeIsExist(false);
  337 + List<BabyModel> babyModels = babyBookbuildingService.queryBabyBuildByCond(babyModelQuery);
  338 + for (BabyModel babyModel: babyModels){
337 339 addBabyRemindMessages(template, config, service, tempHid, sendTimeType, messages, start, end, babyModel);
338 340 }
  341 +
  342 + } else {
  343 + BabyModelQuery babyQuery = getBabyModelQuery(template);
  344 + babyQuery.setBirthStart(startDate);
  345 + babyQuery.setBirthEnd(endDate);
  346 + List<BabyModel> babyModels = babyBookbuildingService.queryBabyBuildByCond(babyQuery);
  347 + for (BabyModel babyModel : babyModels){
  348 + HashMap<String, Object> hashMap = getMapByParam(template, babyModel.getId(), true);
  349 + List<Map> patientServices = patientServiceService.getPatientServices(hashMap);
  350 + if (CollectionUtils.isNotEmpty(patientServices)){
  351 + addBabyRemindMessages(template, config, service, tempHid, sendTimeType, messages, start, end, babyModel);
  352 + }
  353 + }
339 354 }
340 355 }
341 356 }
342 357  
343 358  
344 359  
345 360  
346 361  
347 362  
348 363  
349 364  
... ... @@ -936,41 +951,54 @@
936 951 MsgListRequest list = new MsgListRequest();
937 952 List<MsgRequest> messages = new ArrayList<>();
938 953  
939   - //孕妇预约短信
  954 + //孕妇预约短信 + 无服务
940 955 if (smsType == SmsServiceEnums.CJYYTX.getId()) {
941 956 Date yuYueDate = DateUtils.addDay(new Date(), sendTimeType);
  957 +
942 958 //得到孕妇的id
943 959 Set<String> idset = baseService.getYuYuePatient(sendTimeType, tempHid);
944 960  
945 961 for (String id : idset) {
946 962 //查询符合条件的孕妇
947 963 patientsQuery.setId(id);
948   -
  964 + String remark = getRemark(id);
949 965 if (serviceType == com.lyms.platform.common.enums.ServiceTypeEnums.ALL_SERVICE.getId()
950 966 && serviceStatus == ServiceStatusEnums.ADD_ALL.getId()){
951 967 // 服务类型和服务状态都为全部时
952   - addYumReservMessages(template, config, service, messages, yuYueDate, patientsQuery);
  968 + addYumReservMessages(template, config, service, messages, yuYueDate, patientsQuery, remark);
953 969  
954 970 } else {
955   - // 兼容多服务推送
956   - HashMap<String, Object> hashMap = getMapByParam(template, id, false);
957   - List<Map> patientServices = patientServiceService.getPatientServices(hashMap);
958   - if (CollectionUtils.isNotEmpty(patientServices)){
959   - PatientsQuery query = new PatientsQuery();
960   - query.setId(id);
961   - addYumReservMessages(template, config, service, messages, yuYueDate, query);
  971 +
  972 + if (serviceType == ServiceTypeEnums.NO_SERVICE.getId()
  973 + && serviceStatus == ServiceStatusEnums.NO_SERVICE.getId()
  974 + && template.getSendTimeType() == SendTimeEnums.QYT.getId()) {
  975 +
  976 + // 无服务 - 全部 - 产检预约提醒 - 前一天
  977 + patientsQuery.setServiceTypeIsExist(false);
  978 + addYumReservMessages(template, config, service, messages, yuYueDate, patientsQuery, remark);
  979 + } else {
  980 + // 兼容多服务推送
  981 + HashMap<String, Object> hashMap = getMapByParam(template, id, false);
  982 + List<Map> patientServices = patientServiceService.getPatientServices(hashMap);
  983 + if (CollectionUtils.isNotEmpty(patientServices)){
  984 + PatientsQuery query = new PatientsQuery();
  985 + query.setId(id);
  986 + addYumReservMessages(template, config, service, messages, yuYueDate, query, remark);
  987 + }
962 988 }
  989 +
  990 +
963 991 }
964 992 }
965 993  
966 994 list.setMessages(messages);
967 995 HelperUtils.sendMsg(list);
968 996 }
969   - //产检程序提醒
  997 + //产检程序提醒 + 无服务产检程序提醒
970 998 else if (smsType == SmsServiceEnums.CJCXTX.getId()) {
  999 +
971 1000 //发送频次
972 1001 Integer sendFreq = template.getSendFrequency();
973   -
974 1002 if (sendFreq == SendFrequencyEnums.ONCE.getId()) {
975 1003 //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");
976 1004 Integer sendDateType = template.getSendDateType();
... ... @@ -989,7 +1017,6 @@
989 1017 endDate = DateUtils.formatDate(endDate, DateUtils.Y_M_D);
990 1018  
991 1019 //查询符合条件的孕妇
992   -
993 1020 if (serviceType == com.lyms.platform.common.enums.ServiceTypeEnums.ALL_SERVICE.getId()
994 1021 && serviceStatus == ServiceStatusEnums.ADD_ALL.getId()){
995 1022 // 服务类型和服务状态都为全部时
996 1023  
... ... @@ -1002,17 +1029,26 @@
1002 1029 }
1003 1030  
1004 1031 } else {
1005   - PatientsQuery query = getPatientsQuery(template, true);
1006   - query.setLastMensesStart(startDate);
1007   - query.setLastMensesEnd(endDate);
1008   -
1009   - List<Patients> patients = yunBookbuildingService.queryPregnantWithQuery(query);
1010   - for (Patients patient : patients){
1011   - HashMap<String, Object> hashMap = getMapByParam(template, patient.getId(), false);
1012   - List<Map> patientServices = patientServiceService.getPatientServices(hashMap);
1013   - if (CollectionUtils.isNotEmpty(patientServices)){
  1032 + if (serviceType == ServiceTypeEnums.NO_SERVICE.getId() && serviceStatus == ServiceStatusEnums.NO_SERVICE.getId()) {
  1033 + // 无服务产检程序提醒
  1034 + patientsQuery.setServiceTypeIsExist(false);
  1035 + List<Patients> patients = yunBookbuildingService.queryPregnantWithQuery(patientsQuery);
  1036 + for (Patients patient : patients) {
1014 1037 addYumRemindMessages(template, config, service, tempHid, sendTimeType, messages,start, end, patient);
1015 1038 }
  1039 + } else {
  1040 + PatientsQuery query = getPatientsQuery(template, true);
  1041 + query.setLastMensesStart(startDate);
  1042 + query.setLastMensesEnd(endDate);
  1043 +
  1044 + List<Patients> patients = yunBookbuildingService.queryPregnantWithQuery(query);
  1045 + for (Patients patient : patients){
  1046 + HashMap<String, Object> hashMap = getMapByParam(template, patient.getId(), false);
  1047 + List<Map> patientServices = patientServiceService.getPatientServices(hashMap);
  1048 + if (CollectionUtils.isNotEmpty(patientServices)){
  1049 + addYumRemindMessages(template, config, service, tempHid, sendTimeType, messages,start, end, patient);
  1050 + }
  1051 + }
1016 1052 }
1017 1053 }
1018 1054 }
... ... @@ -1022,7 +1058,7 @@
1022 1058 list.setMessages(messages);
1023 1059 HelperUtils.sendMsg(list);
1024 1060 }
1025   - //产检过期提醒
  1061 + //产检过期提醒 + 无服务 - 产检过期提醒
1026 1062 else if (smsType == SmsServiceEnums.CJGQTX.getId()) {
1027 1063 //去产检冗余表,根据产检时间进行降序排列,取第一条的下次产检时间
1028 1064 //查询产检冗余表的产检时间为昨天或前天,再根据patientId集合,查询产检冗余表,然后如果产检时间在规定范围内存在,则已经产检,
... ... @@ -1053,6 +1089,26 @@
1053 1089 HelperUtils.sendMsg(list);
1054 1090 }
1055 1091 } else {
  1092 + if (serviceType == ServiceTypeEnums.NO_SERVICE.getId()
  1093 + && serviceStatus == ServiceStatusEnums.NO_SERVICE.getId()
  1094 + && sendTimeType == SendTimeEnums.DT.getId()) {
  1095 + // 无服务
  1096 + patientsQuery.setServiceTypeIsExist(false);
  1097 + patientsQuery.setIsNextCheckTime(yuYueDate);
  1098 + List<Patients> patients = yunBookbuildingService.queryPregnantWithQuery(patientsQuery);
  1099 + if (CollectionUtils.isNotEmpty(patients)){
  1100 + for (Patients patient: patients){
  1101 + boolean existMsg = HelperUtils.isExistMsg(patient.getId(), template.getId());
  1102 + if (existMsg){
  1103 + continue;
  1104 + }
  1105 + addYunOverdueMessages(template, config, service, messages, yuYueDate, patient);
  1106 + }
  1107 + list.setMessages(messages);
  1108 + HelperUtils.sendMsg(list);
  1109 + }
  1110 + }
  1111 +
1056 1112 PatientsQuery query = getPatientsQuery(template, true);
1057 1113 query.setIsNextCheckTime(yuYueDate);
1058 1114 List<Patients> patients = yunBookbuildingService.queryPregnantWithQuery(query);
1059 1115  
... ... @@ -1075,9 +1131,10 @@
1075 1131 }
1076 1132 }
1077 1133  
  1134 + // todo 体重测量提醒
1078 1135 else if(smsType == SmsServiceEnums.TZTX.getId()){
1079 1136  
1080   - // todo 体重测量提醒
  1137 +
1081 1138 if (serviceType == ServiceTypeEnums.ADD_WEIGHT_MONITOR_SERVICE.getId()){
1082 1139 Integer tzId = PatientSerEnums.SerTypeEnums.tz.getId();
1083 1140 Map kv = new HashMap<>(16);
... ... @@ -1088,9 +1145,9 @@
1088 1145 list.setMessages(messages);
1089 1146 HelperUtils.sendMsg(list);
1090 1147 }
1091   - } else if (smsType == SmsServiceEnums.XTTX.getId()){
1092   -
1093   - // 血糖测量提醒
  1148 + }
  1149 + // 血糖测量提醒
  1150 + else if (smsType == SmsServiceEnums.XTTX.getId()){
1094 1151 Integer xtId = PatientSerEnums.SerTypeEnums.xt.getId();
1095 1152 Map kv = new HashMap<>(16);
1096 1153 kv.put("keyword1","血糖测量提醒");
1097 1154  
... ... @@ -1099,9 +1156,11 @@
1099 1156 commonServiceTypeMsg(template, config, service, messages, xtId, kv);
1100 1157 list.setMessages(messages);
1101 1158 HelperUtils.sendMsg(list);
1102   - } else if (smsType == SmsServiceEnums.XYTX.getId()) {
  1159 + }
  1160 + // todo 血压测量提醒
  1161 + else if (smsType == SmsServiceEnums.XYTX.getId()) {
1103 1162  
1104   - // todo 血压测量提醒
  1163 +
1105 1164 Integer xyId = PatientSerEnums.SerTypeEnums.xy.getId();
1106 1165 Map kv = new HashMap<>(16);
1107 1166 kv.put("keyword1","血压测量提醒");
... ... @@ -1110,9 +1169,9 @@
1110 1169 commonServiceTypeMsg(template, config, service, messages, xyId, kv);
1111 1170 list.setMessages(messages);
1112 1171 HelperUtils.sendMsg(list);
1113   - }else if (smsType == SmsServiceEnums.NOSERVICE.getId()) {
1114   -
1115   - // todo 无服务
  1172 + }
  1173 + // todo 无服务 - 全部
  1174 + else if (smsType == SmsServiceEnums.NOSERVICE.getId()) {
1116 1175 Map kv = new HashMap<>(16);
1117 1176 kv.put("keyword1","无服务");
1118 1177 kv.put("keyword2","标准市场收费@开通即生效@全程/孕周");
1119 1178  
... ... @@ -1124,7 +1183,31 @@
1124 1183  
1125 1184 }
1126 1185  
  1186 + /**
  1187 + * 根据
  1188 + * @param id
  1189 + * @return
  1190 + */
  1191 + private String getRemark(String id) {
  1192 + Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(id)), Patients.class);
  1193 + if (patients != null) {
  1194 + String lastCheckEmployeeId = patients.getLastCheckEmployeeId();
  1195 + if (StringUtils.isNotEmpty(lastCheckEmployeeId)) {
  1196 + Users users = usersService.getUsers(Integer.parseInt(lastCheckEmployeeId));
  1197 + if (users != null) {
  1198 + String name = users.getName();
  1199 + String remarks = users.getRemarks();
  1200 + if (StringUtils.isNotEmpty(name) && StringUtils.isNotEmpty(remarks)) {
  1201 + // e.g "出诊时间:王大锤出诊时间:周一、二、四上午,具体以医院挂号信息为准";
  1202 + return String.format("出诊时间:%s 出诊时间: %s", name, remarks);
  1203 + }
  1204 + }
  1205 + }
  1206 + }
  1207 + return "";
  1208 + }
1127 1209  
  1210 +
1128 1211 /**
1129 1212 * 常用的服务类型的业务代码
1130 1213 *
... ... @@ -1486,7 +1569,7 @@
1486 1569 * @param yuYueDate
1487 1570 * @param query
1488 1571 */
1489   - private void addYumReservMessages(SmsTemplateModel template, SmsConfigModel config, Integer service, List<MsgRequest> messages, Date yuYueDate, PatientsQuery query) {
  1572 + private void addYumReservMessages(SmsTemplateModel template, SmsConfigModel config, Integer service, List<MsgRequest> messages, Date yuYueDate, PatientsQuery query, String remark) {
1490 1573 List<Patients> patients = yunBookbuildingService.queryPregnantWithQuery(query);
1491 1574  
1492 1575 if (CollectionUtils.isNotEmpty(patients)) {
... ... @@ -1500,7 +1583,8 @@
1500 1583 //短信前缀
1501 1584 String messagePrefix = baseService.getSmsPrefix(config, pat.getBookbuildingDoctor(), ServiceObjEnums.YUNOBJ.getId());
1502 1585 String messageContent = "【" + messagePrefix + "】" + template.getContent();
1503   - messageContent = HelperUtils.replaceEL(pat.getUsername(), yuYueDate, messageContent);
  1586 + //messageContent = HelperUtils.replaceEL(pat.getUsername(), yuYueDate, messageContent);
  1587 + messageContent = HelperUtils.replaceELD(pat.getUsername(), yuYueDate, remark, messageContent);
1504 1588  
1505 1589 String checkTimeStr = DateUtils.getDateStr(yuYueDate, DateUtils.Y_M_D);
1506 1590 String checkName = "产前检查";