From 457814c49b4fad2352d0e817c2d76f77902e69ef Mon Sep 17 00:00:00 2001 From: liquanyu Date: Tue, 18 Aug 2020 20:46:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=84=BF=E7=AB=A5=E7=96=BE=E7=97=85=E6=8E=A8?= =?UTF-8?q?=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/lyms/platform/query/BabyModelQuery.java | 13 ++ .../platform/msg/constants/ConfigInterface.java | 1 + .../msg/controller/MsgGenerateController.java | 15 ++ .../platform/msg/remote/AmsMessageService.java | 26 +++- .../platform/msg/service/IMsgGenerateService.java | 2 + .../msg/service/impl/MsgGenerateServiceImpl.java | 28 ++++ .../msg/worker/BabyDiseaseMsgGenerateWorker.java | 155 +++++++++++++++++++++ .../src/main/resources/config.properties | 5 +- .../web/controller/BabyBuildController.java | 18 ++- .../operate/web/facade/BabyBookbuildingFacade.java | 16 +++ .../platform/operate/web/facade/ViewFacade.java | 1 + 11 files changed, 276 insertions(+), 4 deletions(-) create mode 100644 platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/BabyDiseaseMsgGenerateWorker.java diff --git a/platform-dal/src/main/java/com/lyms/platform/query/BabyModelQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/BabyModelQuery.java index 2b44f8d..7fbc73b 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/BabyModelQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/BabyModelQuery.java @@ -335,6 +335,16 @@ public class BabyModelQuery extends BaseQuery implements IConvertToNativeQuery { private String numberCode; + //是否开通疾病发生推送 1或者空没有开通 2开通 + private String openDisease; + + public String getOpenDisease() { + return openDisease; + } + + public void setOpenDisease(String openDisease) { + this.openDisease = openDisease; + } public String getCard() { return card; @@ -1151,6 +1161,9 @@ public class BabyModelQuery extends BaseQuery implements IConvertToNativeQuery { if (null != dueWeek) { condition = condition.and("dueWeek", dueWeek, MongoOper.LTE); } + if (null != openDisease) { + condition = condition.and("openDisease", openDisease, MongoOper.IS); + } if (null != endCase) { condition = condition.and("endCase", endCase, MongoOper.IS); diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/constants/ConfigInterface.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/constants/ConfigInterface.java index ad0f2b7..d7d7785 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/constants/ConfigInterface.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/constants/ConfigInterface.java @@ -11,6 +11,7 @@ public interface ConfigInterface { String SEND_TIME = PropertiesUtils.getPropertyValue("send_time"); //ams服务地址 + String DATA_URL = PropertiesUtils.getPropertyValue("data_url"); String AMS_URL = PropertiesUtils.getPropertyValue("ams_url"); //消息中心 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 4aa6125..6e6e9b5 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 @@ -56,6 +56,21 @@ public class MsgGenerateController extends BaseController { /** + * 生成儿童疾病ams短信 + * @param hospitalId + * @return + */ + @RequestMapping(method = RequestMethod.GET, value = "/generateBabyDiseaseAmsMsg") + @ResponseBody + public String generateBabyDiseaseAmsMsg(@RequestParam(required = false) String hospitalId) + { + + logger.info("The request hospital id is {} ", hospitalId); + msgGenerateService.generateBabyDiseaseAmsMsg(hospitalId); + return ""; + } + + /** * 生成产妇ams消息 * @param hospitalId * @return diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/AmsMessageService.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/AmsMessageService.java index 5aafd72..66a4926 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/AmsMessageService.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/AmsMessageService.java @@ -2,12 +2,15 @@ package com.lyms.platform.msg.remote; import com.lyms.platform.common.enums.AmsServiceTypeEnum; import com.lyms.platform.common.utils.ExceptionUtils; +import com.lyms.platform.common.utils.HttpClientUtil; import com.lyms.platform.common.utils.HttpRequest; import com.lyms.platform.common.utils.JsonUtil; import com.lyms.platform.msg.constants.ConfigInterface; import com.lyms.platform.msg.model.MessageContent; import com.lyms.platform.msg.model.MessageResponseEntity; +import net.sf.json.JSONArray; +import org.apache.commons.collections.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.codehaus.jackson.map.ObjectMapper; @@ -28,6 +31,7 @@ import java.util.Map; public class AmsMessageService { private static final Logger logger = LoggerFactory.getLogger(AmsMessageService.class); public static final String AMS_URL= ConfigInterface.AMS_URL; + public static final String DATA_URL= ConfigInterface.DATA_URL; private static final String AUTHORIZATION = "healthbaby2015"; public static Map> getMessageTemplateMap(String hospitalId,AmsServiceTypeEnum serviceType) { @@ -39,7 +43,7 @@ public class AmsMessageService { params.put("hospitalId", hospitalId); params.put("page", "1"); params.put("limit", "9999"); - String str = HttpRequest.sendGet(AMS_URL, + String str = HttpRequest.sendGet(DATA_URL, params, headers); // System.out.print(str); MessageResponseEntity mre = null; @@ -54,6 +58,26 @@ public class AmsMessageService { + public static List getBabyDiseaseMsg(String id,String disease) { + Map param = new HashMap<>(); + param.put("title", id); + param.put("disease", disease); + String url = AMS_URL+"/v1/getBabyMessages"; + String json = HttpClientUtil.doGet(url, param, "utf-8", ""); + net.sf.json.JSONObject jsonObject = JsonUtil.getObj(json); + if (jsonObject != null && jsonObject.getJSONArray("list") != null) { + JSONArray jsonArray = jsonObject.getJSONArray("list"); + String list = jsonArray.toString(); + List messages = JsonUtil.toList(list, MessageContent.class); + if (messages != null && CollectionUtils.isNotEmpty(messages)) + { + return messages; + } + } + return null; + } + + // /** // * 根据医院id和对象来获取ams短信 // * @param hospitalId diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IMsgGenerateService.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IMsgGenerateService.java index f50cee5..ec4b6c6 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IMsgGenerateService.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IMsgGenerateService.java @@ -37,6 +37,8 @@ public interface IMsgGenerateService { */ void generateCourseMsg(String generateHospitalId); + void generateBabyDiseaseAmsMsg(String generateHospitalId); + void generaterAllCourseMsg(); void generaterAllTmpMsg(); 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 9ba7a5d..b7e672f 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 @@ -134,6 +134,33 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { } } + + /** + * 生成儿童疾病ams短信 + * @param generateHospitalId 医院id + */ + @Override + public void generateBabyDiseaseAmsMsg(String generateHospitalId) { + String week = DateUtils.getWeekOfDate(new Date()); + List configModels = baseService.getHospitalConfigsByWeek(generateHospitalId); + logger.info("The generateBabyAmsMsg configs hospital size is {}", configModels.size()); + + if (CollectionUtils.isNotEmpty(configModels)) + { + int end = 0; + for (int i = 0; i < configModels.size(); i += DEFAULT_BATCH_SIZE) { + end = (end + DEFAULT_BATCH_SIZE); + if (end > configModels.size()) { + end = configModels.size(); + } + BabyDiseaseMsgGenerateWorker checkPointCountWorker = new BabyDiseaseMsgGenerateWorker(configModels.subList(i,end), + baseService,babyBookbuildingService,week); + pool.execute(checkPointCountWorker); + } + + } + } + private Map loadBabyRisk(){ BasicConfigQuery basicConfigQuery = new BasicConfigQuery(); basicConfigQuery.setYn(YnEnums.YES.getId()); @@ -273,6 +300,7 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { generatePatAmsMsg(null); generateBabyAmsMsg(null); generateChanAmsMsg(null); + generateBabyDiseaseAmsMsg(null); } diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/BabyDiseaseMsgGenerateWorker.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/BabyDiseaseMsgGenerateWorker.java new file mode 100644 index 0000000..cff44ee --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/BabyDiseaseMsgGenerateWorker.java @@ -0,0 +1,155 @@ +package com.lyms.platform.msg.worker; + +import com.lyms.platform.beans.MsgListRequest; +import com.lyms.platform.beans.MsgRequest; +import com.lyms.platform.biz.service.BabyBookbuildingService; +import com.lyms.platform.common.enums.*; +import com.lyms.platform.common.utils.JsonUtil; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.msg.model.MessageContent; +import com.lyms.platform.msg.remote.AmsMessageService; +import com.lyms.platform.msg.remote.SaveMessageService; +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.pojo.BabyModel; +import com.lyms.platform.pojo.SmsConfigModel; +import com.lyms.platform.query.BabyModelQuery; +import org.apache.commons.collections.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 儿童疾病服务 + * Created by lqy on 2017-07-18. + */ +public class BabyDiseaseMsgGenerateWorker implements Runnable { + + + private static final Logger logger = LoggerFactory.getLogger(BabyDiseaseMsgGenerateWorker.class); + + + private List configs; + + private String week; + private IBaseService baseService; + + private BabyBookbuildingService babyBookbuildingService; + + + public BabyDiseaseMsgGenerateWorker(List configs, IBaseService baseService, + BabyBookbuildingService babyBookbuildingService, String week) { + this.configs = configs; + this.baseService = baseService; + this.week = week; + this.babyBookbuildingService = babyBookbuildingService; + } + + @Override + public void run() { + if (CollectionUtils.isNotEmpty(configs)) { + for (SmsConfigModel config : configs) { + String hospitalId = config.getHospitalId(); + if (StringUtils.isEmpty(hospitalId)) { + continue; + } + + //每周几发送的指导短信 + String timeStr = config.getGuideTime(); + if (StringUtils.isEmpty(timeStr)) { + continue; + } + + List guideTimes = JsonUtil.toList(timeStr, String.class); + if (guideTimes == null || guideTimes.size() != 2) { + continue; + } + //周几发送必须是配置页面配置的 + if (!guideTimes.contains(week)) + { + continue; + } + + //判断医院是否运行 + if (!baseService.isRunning(hospitalId)) { + continue; + } + + String serviceStr = config.getSmsService(); + String serviceType = config.getServiceType(); + + //判断消息服务是否启动 + //0服务不提供,1 推送服务, 2 短信服务,3推送和短信服务 + int service = baseService.isStartService(SmsServiceEnums.ETJBTX.getId(), serviceStr, serviceType); + if (service == 0) { + continue; + } + + BabyModelQuery babyQuery = new BabyModelQuery(); + babyQuery.setYn(YnEnums.YES.getId()); + babyQuery.setHospitalId(hospitalId); + babyQuery.setOpenDisease("2"); + + //儿童年龄满六岁就不在提供短信服务 + Date birthdayMax = DateUtils.addYear(new Date(), -6); + babyQuery.setBirthStart(birthdayMax); + + //查询符合条件儿童 + List babies = babyBookbuildingService.queryBabyBuildByCond(babyQuery); + + if (CollectionUtils.isNotEmpty(babies)) { + + //发送短信集合 + MsgListRequest list = new MsgListRequest(); + List messages = new ArrayList<>(); + for (BabyModel baby : babies) { + if (baby == null || baby.getBirth() == null) { + continue; + } + List diseases = baby.getDiseases(); + if (CollectionUtils.isNotEmpty(diseases)) + { + String messagePrefix = baseService.getSmsPrefix(config, baby.getBuildDoctor(), ServiceObjEnums.BABYOBJ.getId()); + int weeks = DateUtils.daysBetween(baby.getBirth(), new Date()) / 7; + + for (String did : diseases) + { + // 查询模板短信 从ams平台配置的短信通过医院IDa + List amsSmses = AmsMessageService + .getBabyDiseaseMsg(String.valueOf(weeks), BabyDiseaseEnums.getNameById(Integer.parseInt(did))); + if (CollectionUtils.isNotEmpty(amsSmses)) + { + for (MessageContent message : amsSmses) + { + boolean isExist = SaveMessageService.isExistMsg(baby.getId(), message.getId()); + if (isExist) { + continue; + } + + String weekDay = weeks + "周"; + String messageContent = "【" + messagePrefix + "】" + message.getContent(); + MsgRequest request = HelperUtils.getMessageRequest(messageContent, baby.getMphone(), + ServiceObjEnums.BABYOBJ.getId(), SmsServiceEnums.ETJBTX.getId(), + baby.getHospitalId(), message.getId(), baby.getId(), weekDay, SmsServiceEnums.ETJBTX.getName(), "", + WxTempleteIdEnums.BABY_YI_BAN_ZHI_DAO.getId(), service); + + messages.add(request); + break; + } + + } + } + } + } + list.setMessages(messages); + HelperUtils.sendMsg(list); + } + } + } + } +} diff --git a/platform-msg-generate/src/main/resources/config.properties b/platform-msg-generate/src/main/resources/config.properties index d9d52aa..08b9d6c 100644 --- a/platform-msg-generate/src/main/resources/config.properties +++ b/platform-msg-generate/src/main/resources/config.properties @@ -4,7 +4,10 @@ msg_base_url=https://push.stage.platform.healthbaby.com.cn #AMS地址 线上:http://data.api.healthbaby.com.cn/v1/messages 测试:http://data.api.stage.healthbaby.com.cn/v1/messages #演示地址 https://stage-rp-data-api.healthbaby.com.cn/v1/messages -ams_url=http://data.api.stage.healthbaby.com.cn/v1/messages +data_url=http://data.api.stage.healthbaby.com.cn/v1/messages + + +ams_url=http://ams.api.stage.healthbaby.com.cn #短信当天发送时间 如16:00 send_time=16:00 diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyBuildController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyBuildController.java index 5c8a7bb..6900468 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyBuildController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyBuildController.java @@ -606,7 +606,7 @@ public class BabyBuildController extends BaseController { @RequestParam("page") Integer page, @RequestParam("type") String type, @RequestParam("limit") Integer limit) { - return babyBookbuildingFacade.getBabyDiacrisisListQhd(babyDiagnoseQuery, page, limit,type); + return babyBookbuildingFacade.getBabyDiacrisisListQhd(babyDiagnoseQuery, page, limit, type); } @@ -622,7 +622,7 @@ public class BabyBuildController extends BaseController { public BaseResponse getObstetricDiagnosisQhd(HttpServletRequest httpServletRequest,BabyManageRequest babyManageRequest) { LoginContext loginState = (LoginContext) httpServletRequest.getAttribute("loginContext"); - return babyBookbuildingFacade.getObstetricDiagnosisQhd(babyManageRequest,loginState.getId()); + return babyBookbuildingFacade.getObstetricDiagnosisQhd(babyManageRequest, loginState.getId()); } @@ -808,4 +808,18 @@ public class BabyBuildController extends BaseController { doc.save(response.getOutputStream(), SaveFormat.PDF); } } + + + /** + * 小程序获取儿童疾病 + * @param id + * @return + */ + @RequestMapping(value = "/getBabyDiseases", method = RequestMethod.GET) + @ResponseBody + public String getBabyDisease(@RequestParam(required = true) String id) { + + return babyBookbuildingFacade.getBabyDisease(id); + + } } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java index ea9fd77..e536862 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java @@ -4881,4 +4881,20 @@ public class BabyBookbuildingFacade { } + public String getBabyDisease(String id) { + StringBuffer diseases = new StringBuffer(); + BabyModel babyModel = babyBookbuildingService.queryBabyBuildById(id); + if (babyModel != null && CollectionUtils.isNotEmpty(babyModel.getDiseases())) + { + for (int i = 0, len = babyModel.getDiseases().size(); i < len; i++) { + if (i != len - 1) { + diseases.append(BabyDiseaseEnums.getNameById(Integer.parseInt(babyModel.getDiseases().get(i)))); + diseases.append(","); + } else { + diseases.append(BabyDiseaseEnums.getNameById(Integer.parseInt(babyModel.getDiseases().get(i)))); + } + } + } + return diseases.toString(); + } } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ViewFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ViewFacade.java index acec9c3..85bc616 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ViewFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ViewFacade.java @@ -5110,6 +5110,7 @@ public class ViewFacade { result.setEncoded(babyModel.getEncoded()); result.setsINCard(babyModel.getsINCard()); result.setVcCardNo(babyModel.getVcCardNo()); + result.setOpenDisease(com.lyms.platform.common.utils.StringUtils.isNotEmpty(babyModel.getOpenDisease()) ? babyModel.getOpenDisease() : "1"); } } -- 1.8.3.1