Commit 457814c49b4fad2352d0e817c2d76f77902e69ef

Authored by liquanyu
1 parent cc55e06799

儿童疾病推送

Showing 11 changed files with 276 additions and 4 deletions

platform-dal/src/main/java/com/lyms/platform/query/BabyModelQuery.java View file @ 457814c
... ... @@ -335,7 +335,17 @@
335 335  
336 336 private String numberCode;
337 337  
  338 + //是否开通疾病发生推送 1或者空没有开通 2开通
  339 + private String openDisease;
338 340  
  341 + public String getOpenDisease() {
  342 + return openDisease;
  343 + }
  344 +
  345 + public void setOpenDisease(String openDisease) {
  346 + this.openDisease = openDisease;
  347 + }
  348 +
339 349 public String getCard() {
340 350 return card;
341 351 }
... ... @@ -1150,6 +1160,9 @@
1150 1160  
1151 1161 if (null != dueWeek) {
1152 1162 condition = condition.and("dueWeek", dueWeek, MongoOper.LTE);
  1163 + }
  1164 + if (null != openDisease) {
  1165 + condition = condition.and("openDisease", openDisease, MongoOper.IS);
1153 1166 }
1154 1167  
1155 1168 if (null != endCase) {
platform-msg-generate/src/main/java/com/lyms/platform/msg/constants/ConfigInterface.java View file @ 457814c
... ... @@ -11,6 +11,7 @@
11 11 String SEND_TIME = PropertiesUtils.getPropertyValue("send_time");
12 12  
13 13 //ams服务地址
  14 + String DATA_URL = PropertiesUtils.getPropertyValue("data_url");
14 15 String AMS_URL = PropertiesUtils.getPropertyValue("ams_url");
15 16  
16 17 //消息中心
platform-msg-generate/src/main/java/com/lyms/platform/msg/controller/MsgGenerateController.java View file @ 457814c
... ... @@ -56,6 +56,21 @@
56 56  
57 57  
58 58 /**
  59 + * 生成儿童疾病ams短信
  60 + * @param hospitalId
  61 + * @return
  62 + */
  63 + @RequestMapping(method = RequestMethod.GET, value = "/generateBabyDiseaseAmsMsg")
  64 + @ResponseBody
  65 + public String generateBabyDiseaseAmsMsg(@RequestParam(required = false) String hospitalId)
  66 + {
  67 +
  68 + logger.info("The request hospital id is {} ", hospitalId);
  69 + msgGenerateService.generateBabyDiseaseAmsMsg(hospitalId);
  70 + return "";
  71 + }
  72 +
  73 + /**
59 74 * 生成产妇ams消息
60 75 * @param hospitalId
61 76 * @return
platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/AmsMessageService.java View file @ 457814c
... ... @@ -2,12 +2,15 @@
2 2  
3 3 import com.lyms.platform.common.enums.AmsServiceTypeEnum;
4 4 import com.lyms.platform.common.utils.ExceptionUtils;
  5 +import com.lyms.platform.common.utils.HttpClientUtil;
5 6 import com.lyms.platform.common.utils.HttpRequest;
6 7 import com.lyms.platform.common.utils.JsonUtil;
7 8  
8 9 import com.lyms.platform.msg.constants.ConfigInterface;
9 10 import com.lyms.platform.msg.model.MessageContent;
10 11 import com.lyms.platform.msg.model.MessageResponseEntity;
  12 +import net.sf.json.JSONArray;
  13 +import org.apache.commons.collections.CollectionUtils;
11 14 import org.slf4j.Logger;
12 15 import org.slf4j.LoggerFactory;
13 16 import org.codehaus.jackson.map.ObjectMapper;
... ... @@ -28,6 +31,7 @@
28 31 public class AmsMessageService {
29 32 private static final Logger logger = LoggerFactory.getLogger(AmsMessageService.class);
30 33 public static final String AMS_URL= ConfigInterface.AMS_URL;
  34 + public static final String DATA_URL= ConfigInterface.DATA_URL;
31 35 private static final String AUTHORIZATION = "healthbaby2015";
32 36  
33 37 public static Map<String,List<MessageContent>> getMessageTemplateMap(String hospitalId,AmsServiceTypeEnum serviceType) {
... ... @@ -39,7 +43,7 @@
39 43 params.put("hospitalId", hospitalId);
40 44 params.put("page", "1");
41 45 params.put("limit", "9999");
42   - String str = HttpRequest.sendGet(AMS_URL,
  46 + String str = HttpRequest.sendGet(DATA_URL,
43 47 params, headers);
44 48 // System.out.print(str);
45 49 MessageResponseEntity mre = null;
... ... @@ -52,6 +56,26 @@
52 56 return null;
53 57 }
54 58  
  59 +
  60 +
  61 + public static List<MessageContent> getBabyDiseaseMsg(String id,String disease) {
  62 + Map<String,String> param = new HashMap<>();
  63 + param.put("title", id);
  64 + param.put("disease", disease);
  65 + String url = AMS_URL+"/v1/getBabyMessages";
  66 + String json = HttpClientUtil.doGet(url, param, "utf-8", "");
  67 + net.sf.json.JSONObject jsonObject = JsonUtil.getObj(json);
  68 + if (jsonObject != null && jsonObject.getJSONArray("list") != null) {
  69 + JSONArray jsonArray = jsonObject.getJSONArray("list");
  70 + String list = jsonArray.toString();
  71 + List<MessageContent> messages = JsonUtil.toList(list, MessageContent.class);
  72 + if (messages != null && CollectionUtils.isNotEmpty(messages))
  73 + {
  74 + return messages;
  75 + }
  76 + }
  77 + return null;
  78 + }
55 79  
56 80  
57 81 // /**
platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IMsgGenerateService.java View file @ 457814c
... ... @@ -37,6 +37,8 @@
37 37 */
38 38 void generateCourseMsg(String generateHospitalId);
39 39  
  40 + void generateBabyDiseaseAmsMsg(String generateHospitalId);
  41 +
40 42 void generaterAllCourseMsg();
41 43  
42 44 void generaterAllTmpMsg();
platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/MsgGenerateServiceImpl.java View file @ 457814c
... ... @@ -134,6 +134,33 @@
134 134 }
135 135 }
136 136  
  137 +
  138 + /**
  139 + * 生成儿童疾病ams短信
  140 + * @param generateHospitalId 医院id
  141 + */
  142 + @Override
  143 + public void generateBabyDiseaseAmsMsg(String generateHospitalId) {
  144 + String week = DateUtils.getWeekOfDate(new Date());
  145 + List<SmsConfigModel> configModels = baseService.getHospitalConfigsByWeek(generateHospitalId);
  146 + logger.info("The generateBabyAmsMsg configs hospital size is {}", configModels.size());
  147 +
  148 + if (CollectionUtils.isNotEmpty(configModels))
  149 + {
  150 + int end = 0;
  151 + for (int i = 0; i < configModels.size(); i += DEFAULT_BATCH_SIZE) {
  152 + end = (end + DEFAULT_BATCH_SIZE);
  153 + if (end > configModels.size()) {
  154 + end = configModels.size();
  155 + }
  156 + BabyDiseaseMsgGenerateWorker checkPointCountWorker = new BabyDiseaseMsgGenerateWorker(configModels.subList(i,end),
  157 + baseService,babyBookbuildingService,week);
  158 + pool.execute(checkPointCountWorker);
  159 + }
  160 +
  161 + }
  162 + }
  163 +
137 164 private Map loadBabyRisk(){
138 165 BasicConfigQuery basicConfigQuery = new BasicConfigQuery();
139 166 basicConfigQuery.setYn(YnEnums.YES.getId());
... ... @@ -273,6 +300,7 @@
273 300 generatePatAmsMsg(null);
274 301 generateBabyAmsMsg(null);
275 302 generateChanAmsMsg(null);
  303 + generateBabyDiseaseAmsMsg(null);
276 304 }
277 305  
278 306  
platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/BabyDiseaseMsgGenerateWorker.java View file @ 457814c
  1 +package com.lyms.platform.msg.worker;
  2 +
  3 +import com.lyms.platform.beans.MsgListRequest;
  4 +import com.lyms.platform.beans.MsgRequest;
  5 +import com.lyms.platform.biz.service.BabyBookbuildingService;
  6 +import com.lyms.platform.common.enums.*;
  7 +import com.lyms.platform.common.utils.JsonUtil;
  8 +import com.lyms.platform.common.utils.StringUtils;
  9 +import com.lyms.platform.msg.model.MessageContent;
  10 +import com.lyms.platform.msg.remote.AmsMessageService;
  11 +import com.lyms.platform.msg.remote.SaveMessageService;
  12 +import com.lyms.platform.msg.service.IBaseService;
  13 +import com.lyms.platform.msg.utils.DateUtils;
  14 +import com.lyms.platform.msg.utils.HelperUtils;
  15 +import com.lyms.platform.pojo.BabyModel;
  16 +import com.lyms.platform.pojo.SmsConfigModel;
  17 +import com.lyms.platform.query.BabyModelQuery;
  18 +import org.apache.commons.collections.CollectionUtils;
  19 +import org.slf4j.Logger;
  20 +import org.slf4j.LoggerFactory;
  21 +
  22 +import java.util.ArrayList;
  23 +import java.util.Date;
  24 +import java.util.List;
  25 +import java.util.Map;
  26 +
  27 +/**
  28 + * 儿童疾病服务
  29 + * Created by lqy on 2017-07-18.
  30 + */
  31 +public class BabyDiseaseMsgGenerateWorker implements Runnable {
  32 +
  33 +
  34 + private static final Logger logger = LoggerFactory.getLogger(BabyDiseaseMsgGenerateWorker.class);
  35 +
  36 +
  37 + private List<SmsConfigModel> configs;
  38 +
  39 + private String week;
  40 + private IBaseService baseService;
  41 +
  42 + private BabyBookbuildingService babyBookbuildingService;
  43 +
  44 +
  45 + public BabyDiseaseMsgGenerateWorker(List<SmsConfigModel> configs, IBaseService baseService,
  46 + BabyBookbuildingService babyBookbuildingService, String week) {
  47 + this.configs = configs;
  48 + this.baseService = baseService;
  49 + this.week = week;
  50 + this.babyBookbuildingService = babyBookbuildingService;
  51 + }
  52 +
  53 + @Override
  54 + public void run() {
  55 + if (CollectionUtils.isNotEmpty(configs)) {
  56 + for (SmsConfigModel config : configs) {
  57 + String hospitalId = config.getHospitalId();
  58 + if (StringUtils.isEmpty(hospitalId)) {
  59 + continue;
  60 + }
  61 +
  62 + //每周几发送的指导短信
  63 + String timeStr = config.getGuideTime();
  64 + if (StringUtils.isEmpty(timeStr)) {
  65 + continue;
  66 + }
  67 +
  68 + List<String> guideTimes = JsonUtil.toList(timeStr, String.class);
  69 + if (guideTimes == null || guideTimes.size() != 2) {
  70 + continue;
  71 + }
  72 + //周几发送必须是配置页面配置的
  73 + if (!guideTimes.contains(week))
  74 + {
  75 + continue;
  76 + }
  77 +
  78 + //判断医院是否运行
  79 + if (!baseService.isRunning(hospitalId)) {
  80 + continue;
  81 + }
  82 +
  83 + String serviceStr = config.getSmsService();
  84 + String serviceType = config.getServiceType();
  85 +
  86 + //判断消息服务是否启动
  87 + //0服务不提供,1 推送服务, 2 短信服务,3推送和短信服务
  88 + int service = baseService.isStartService(SmsServiceEnums.ETJBTX.getId(), serviceStr, serviceType);
  89 + if (service == 0) {
  90 + continue;
  91 + }
  92 +
  93 + BabyModelQuery babyQuery = new BabyModelQuery();
  94 + babyQuery.setYn(YnEnums.YES.getId());
  95 + babyQuery.setHospitalId(hospitalId);
  96 + babyQuery.setOpenDisease("2");
  97 +
  98 + //儿童年龄满六岁就不在提供短信服务
  99 + Date birthdayMax = DateUtils.addYear(new Date(), -6);
  100 + babyQuery.setBirthStart(birthdayMax);
  101 +
  102 + //查询符合条件儿童
  103 + List<BabyModel> babies = babyBookbuildingService.queryBabyBuildByCond(babyQuery);
  104 +
  105 + if (CollectionUtils.isNotEmpty(babies)) {
  106 +
  107 + //发送短信集合
  108 + MsgListRequest list = new MsgListRequest();
  109 + List<MsgRequest> messages = new ArrayList<>();
  110 + for (BabyModel baby : babies) {
  111 + if (baby == null || baby.getBirth() == null) {
  112 + continue;
  113 + }
  114 + List<String> diseases = baby.getDiseases();
  115 + if (CollectionUtils.isNotEmpty(diseases))
  116 + {
  117 + String messagePrefix = baseService.getSmsPrefix(config, baby.getBuildDoctor(), ServiceObjEnums.BABYOBJ.getId());
  118 + int weeks = DateUtils.daysBetween(baby.getBirth(), new Date()) / 7;
  119 +
  120 + for (String did : diseases)
  121 + {
  122 + // 查询模板短信 从ams平台配置的短信通过医院IDa
  123 + List<MessageContent> amsSmses = AmsMessageService
  124 + .getBabyDiseaseMsg(String.valueOf(weeks), BabyDiseaseEnums.getNameById(Integer.parseInt(did)));
  125 + if (CollectionUtils.isNotEmpty(amsSmses))
  126 + {
  127 + for (MessageContent message : amsSmses)
  128 + {
  129 + boolean isExist = SaveMessageService.isExistMsg(baby.getId(), message.getId());
  130 + if (isExist) {
  131 + continue;
  132 + }
  133 +
  134 + String weekDay = weeks + "周";
  135 + String messageContent = "【" + messagePrefix + "】" + message.getContent();
  136 + MsgRequest request = HelperUtils.getMessageRequest(messageContent, baby.getMphone(),
  137 + ServiceObjEnums.BABYOBJ.getId(), SmsServiceEnums.ETJBTX.getId(),
  138 + baby.getHospitalId(), message.getId(), baby.getId(), weekDay, SmsServiceEnums.ETJBTX.getName(), "",
  139 + WxTempleteIdEnums.BABY_YI_BAN_ZHI_DAO.getId(), service);
  140 +
  141 + messages.add(request);
  142 + break;
  143 + }
  144 +
  145 + }
  146 + }
  147 + }
  148 + }
  149 + list.setMessages(messages);
  150 + HelperUtils.sendMsg(list);
  151 + }
  152 + }
  153 + }
  154 + }
  155 +}
platform-msg-generate/src/main/resources/config.properties View file @ 457814c
... ... @@ -4,7 +4,10 @@
4 4  
5 5 #AMS地址 线上:http://data.api.healthbaby.com.cn/v1/messages 测试:http://data.api.stage.healthbaby.com.cn/v1/messages
6 6 #演示地址 https://stage-rp-data-api.healthbaby.com.cn/v1/messages
7   -ams_url=http://data.api.stage.healthbaby.com.cn/v1/messages
  7 +data_url=http://data.api.stage.healthbaby.com.cn/v1/messages
  8 +
  9 +
  10 +ams_url=http://ams.api.stage.healthbaby.com.cn
8 11  
9 12 #短信当天发送时间 如16:00
10 13 send_time=16:00
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyBuildController.java View file @ 457814c
... ... @@ -606,7 +606,7 @@
606 606 @RequestParam("page") Integer page,
607 607 @RequestParam("type") String type,
608 608 @RequestParam("limit") Integer limit) {
609   - return babyBookbuildingFacade.getBabyDiacrisisListQhd(babyDiagnoseQuery, page, limit,type);
  609 + return babyBookbuildingFacade.getBabyDiacrisisListQhd(babyDiagnoseQuery, page, limit, type);
610 610 }
611 611  
612 612  
... ... @@ -622,7 +622,7 @@
622 622 public BaseResponse getObstetricDiagnosisQhd(HttpServletRequest httpServletRequest,BabyManageRequest babyManageRequest) {
623 623 LoginContext loginState = (LoginContext) httpServletRequest.getAttribute("loginContext");
624 624  
625   - return babyBookbuildingFacade.getObstetricDiagnosisQhd(babyManageRequest,loginState.getId());
  625 + return babyBookbuildingFacade.getObstetricDiagnosisQhd(babyManageRequest, loginState.getId());
626 626 }
627 627  
628 628  
... ... @@ -807,6 +807,20 @@
807 807 response.setContentType("application/pdf");
808 808 doc.save(response.getOutputStream(), SaveFormat.PDF);
809 809 }
  810 + }
  811 +
  812 +
  813 + /**
  814 + * 小程序获取儿童疾病
  815 + * @param id
  816 + * @return
  817 + */
  818 + @RequestMapping(value = "/getBabyDiseases", method = RequestMethod.GET)
  819 + @ResponseBody
  820 + public String getBabyDisease(@RequestParam(required = true) String id) {
  821 +
  822 + return babyBookbuildingFacade.getBabyDisease(id);
  823 +
810 824 }
811 825 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java View file @ 457814c
... ... @@ -4881,5 +4881,21 @@
4881 4881 }
4882 4882  
4883 4883  
  4884 + public String getBabyDisease(String id) {
  4885 + StringBuffer diseases = new StringBuffer();
  4886 + BabyModel babyModel = babyBookbuildingService.queryBabyBuildById(id);
  4887 + if (babyModel != null && CollectionUtils.isNotEmpty(babyModel.getDiseases()))
  4888 + {
  4889 + for (int i = 0, len = babyModel.getDiseases().size(); i < len; i++) {
  4890 + if (i != len - 1) {
  4891 + diseases.append(BabyDiseaseEnums.getNameById(Integer.parseInt(babyModel.getDiseases().get(i))));
  4892 + diseases.append(",");
  4893 + } else {
  4894 + diseases.append(BabyDiseaseEnums.getNameById(Integer.parseInt(babyModel.getDiseases().get(i))));
  4895 + }
  4896 + }
  4897 + }
  4898 + return diseases.toString();
  4899 + }
4884 4900 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ViewFacade.java View file @ 457814c
... ... @@ -5110,6 +5110,7 @@
5110 5110 result.setEncoded(babyModel.getEncoded());
5111 5111 result.setsINCard(babyModel.getsINCard());
5112 5112 result.setVcCardNo(babyModel.getVcCardNo());
  5113 + result.setOpenDisease(com.lyms.platform.common.utils.StringUtils.isNotEmpty(babyModel.getOpenDisease()) ? babyModel.getOpenDisease() : "1");
5113 5114 }
5114 5115 }
5115 5116