Commit 457814c49b4fad2352d0e817c2d76f77902e69ef
1 parent
cc55e06799
Exists in
master
and in
6 other branches
儿童疾病推送
Showing 11 changed files with 276 additions and 4 deletions
- platform-dal/src/main/java/com/lyms/platform/query/BabyModelQuery.java
- platform-msg-generate/src/main/java/com/lyms/platform/msg/constants/ConfigInterface.java
- platform-msg-generate/src/main/java/com/lyms/platform/msg/controller/MsgGenerateController.java
- platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/AmsMessageService.java
- platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IMsgGenerateService.java
- platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/MsgGenerateServiceImpl.java
- platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/BabyDiseaseMsgGenerateWorker.java
- platform-msg-generate/src/main/resources/config.properties
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyBuildController.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ViewFacade.java
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
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
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 |