From dc0e3a8eaa7fae2399b6b05a4e2f041226a30703 Mon Sep 17 00:00:00 2001 From: jiangjiazhi Date: Thu, 9 Aug 2018 15:21:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=84=BF=E7=AB=A5=E7=B2=BE?= =?UTF-8?q?=E5=87=86=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msg/service/impl/MsgGenerateServiceImpl.java | 28 ++++- .../msg/worker/BabyAmsMsgGenerateWorker.java | 135 ++++++++++++--------- 2 files changed, 107 insertions(+), 56 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 cd7c670..58ef70a 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 @@ -12,8 +12,10 @@ 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.pojo.BasicConfig; import com.lyms.platform.pojo.CourseModel; import com.lyms.platform.pojo.SmsConfigModel; +import com.lyms.platform.query.BasicConfigQuery; import com.lyms.platform.query.CourseQuery; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; @@ -73,6 +75,8 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { @Autowired private PostReviewService postReviewService; + @Autowired + private BasicConfigService basicConfigService; /** @@ -108,9 +112,11 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { @Override public void generateBabyAmsMsg(String generateHospitalId) { List configModels = baseService.getHospitalConfigsByWeek(generateHospitalId); - logger.info("The generateBabyAmsMsg configs hospital size is {}",configModels.size()); + logger.info("The generateBabyAmsMsg configs hospital size is {}", configModels.size()); + if (CollectionUtils.isNotEmpty(configModels)) { + Map babyRiskMap = loadBabyRisk(); int end = 0; for (int i = 0; i < configModels.size(); i += DEFAULT_BATCH_SIZE) { end = (end + DEFAULT_BATCH_SIZE); @@ -118,13 +124,31 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { end = configModels.size(); } BabyAmsMsgGenerateWorker checkPointCountWorker = new BabyAmsMsgGenerateWorker(configModels.subList(i,end), - baseService,babyBookbuildingService); + baseService,babyBookbuildingService,babyRiskMap); pool.execute(checkPointCountWorker); } } } + private Map loadBabyRisk(){ + BasicConfigQuery basicConfigQuery = new BasicConfigQuery(); + basicConfigQuery.setYn(YnEnums.YES.getId()); + basicConfigQuery.setEnable(1); + //出生时异常 + //新生儿期严重疾病 + //加载儿童的高危因素 + basicConfigQuery.setTypeId("5b18f8a7422b03d4ad2bf913"); + List data = basicConfigService.queryBasicConfig(basicConfigQuery); + Map map =new HashMap(); + if(CollectionUtils.isNotEmpty(data)){ + for(BasicConfig config:data){ + map.put(config.getId(),config.getName()); + } + } + return map; + } + /** * 生成产妇的ams消息 diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/BabyAmsMsgGenerateWorker.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/BabyAmsMsgGenerateWorker.java index ea8d3e1..3c98e72 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/BabyAmsMsgGenerateWorker.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/BabyAmsMsgGenerateWorker.java @@ -29,38 +29,33 @@ public class BabyAmsMsgGenerateWorker implements Runnable { private static final Logger logger = LoggerFactory.getLogger(BabyAmsMsgGenerateWorker.class); - private List configs; private IBaseService baseService; private BabyBookbuildingService babyBookbuildingService; - + private Map babyRiskMap; public BabyAmsMsgGenerateWorker(List configs, IBaseService baseService, - BabyBookbuildingService babyBookbuildingService) - { + BabyBookbuildingService babyBookbuildingService, Map babyRiskMap) { this.configs = configs; this.baseService = baseService; this.babyBookbuildingService = babyBookbuildingService; + this.babyRiskMap = babyRiskMap; } @Override public void run() { - if (CollectionUtils.isNotEmpty(configs)) - { - for (SmsConfigModel config : configs) - { + if (CollectionUtils.isNotEmpty(configs)) { + for (SmsConfigModel config : configs) { String hospitalId = config.getHospitalId(); - if (StringUtils.isEmpty(hospitalId)) - { + if (StringUtils.isEmpty(hospitalId)) { continue; } //判断医院是否运行 - if (!baseService.isRunning(hospitalId)) - { + if (!baseService.isRunning(hospitalId)) { continue; } @@ -69,23 +64,21 @@ public class BabyAmsMsgGenerateWorker implements Runnable { //判断消息服务是否启动 //0服务不提供,1 推送服务, 2 短信服务,3推送和短信服务 - int service = baseService.isStartService(SmsServiceEnums.YBZD.getId(), serviceStr,serviceType); - if (service == 0) - { + int service = baseService.isStartService(SmsServiceEnums.YBZD.getId(), serviceStr, serviceType); + if (service == 0) { continue; } // 查询模板短信 从ams平台配置的短信通过医院IDa - Map> amsSmses = AmsMessageService - .getMessageTemplateMap(String.valueOf(hospitalId), - AmsServiceTypeEnum.CHILD_GUIDE); + Map> amsSmses = AmsMessageService + .getMessageTemplateMap(String.valueOf(hospitalId), + AmsServiceTypeEnum.CHILD_GUIDE); - if (amsSmses == null || amsSmses.size() == 0) - { + if (amsSmses == null || amsSmses.size() == 0) { continue; } - logger.info("The BabyAmsMsgGenerate hospital id is "+hospitalId); + logger.info("The BabyAmsMsgGenerate hospital id is " + hospitalId); BabyModelQuery babyQuery = new BabyModelQuery(); @@ -104,51 +97,41 @@ public class BabyAmsMsgGenerateWorker implements Runnable { babyQuery.setServiceType(ServiceTypeEnums.ADD_SERVICE.getId()); babyQuery.setServiceStatus(ServiceStatusEnums.ADD_OPEN.getId()); //查询符合条件儿童 - List babies = babyBookbuildingService.queryBabyBuildByCond(babyQuery); + List babies = babyBookbuildingService.queryBabyBuildByCond(babyQuery); - if (CollectionUtils.isNotEmpty(babies)) - { + if (CollectionUtils.isNotEmpty(babies)) { //发送短信集合 MsgListRequest list = new MsgListRequest(); List messages = new ArrayList<>(); - for (BabyModel baby : babies) - { - if (baby == null || baby.getBirth() == null) - { + for (BabyModel baby : babies) { + if (baby == null || baby.getBirth() == null) { continue; } - String messagePrefix = baseService.getSmsPrefix(config, baby.getBuildDoctor(),ServiceObjEnums.BABYOBJ.getId()); + String messagePrefix = baseService.getSmsPrefix(config, baby.getBuildDoctor(), ServiceObjEnums.BABYOBJ.getId()); - int weeks = DateUtils.daysBetween(baby.getBirth(),new Date()) / 7; - String weekAge = String.valueOf(weeks)+"周"; + int weeks = DateUtils.daysBetween(baby.getBirth(), new Date()) / 7; + String weekAge = String.valueOf(weeks) + "周"; //得到符合当前周龄的短信条数 - List messageContents = amsSmses.get(weekAge); - - if (CollectionUtils.isNotEmpty(messageContents)) - { - for(MessageContent message : messageContents) - { - //判断当前短信是否已经发送 通过短信ID和儿童ID - boolean isExist = SaveMessageService.isExistMsg(baby.getId(), message.getId()); - if (isExist) - { - continue; + List messageContents = amsSmses.get(weekAge); + + String weekDay = weeks + "周"; + //生成儿童健康指导 + doHandlAndBuildMsg(messageContents,baby,messagePrefix,messages,service,0,weekDay); + + //判断儿童是否有高危因素 + if (CollectionUtils.isNotEmpty(baby.getHighRiskInfo())) { + for (Object riskId : baby.getHighRiskInfo()) { + String riskName = babyRiskMap.get(riskId.toString()); + if (StringUtils.isNotEmpty(riskName)) { + String riskKey = riskName + "&" + weekAge; + //得到符合当前周龄的短信条数 + List messageContents1 = amsSmses.get(riskKey); + //生成儿童健康指导 + doHandlAndBuildMsg(messageContents1,baby,messagePrefix,messages,service,1,riskKey); } - - String weekDay = weeks+"周"; - String title = "儿童健康指导"; - - String messageContent = "【"+messagePrefix+"】" + message.getContent(); - MsgRequest request = HelperUtils.getMessageRequest(messageContent, baby.getMphone(), - ServiceObjEnums.BABYOBJ.getId(), SmsServiceEnums.YBZD.getId(), - baby.getHospitalId(), message.getId(), baby.getId(), weekDay, title, "", - WxTempleteIdEnums.BABY_YI_BAN_ZHI_DAO.getId(),service); - - messages.add(request); - break; } } } @@ -158,4 +141,48 @@ public class BabyAmsMsgGenerateWorker implements Runnable { } } } + + + /** + * 根据规则生成推送消息 + * + * @param messageContents 符合该条件的短信发送内容 + * @param baby + * @param messagePrefix + * @param messages + * @param service + * @param type + * @param weekDay + */ + private void doHandlAndBuildMsg(List messageContents, + BabyModel baby, + String messagePrefix, + List messages, + int service, + int type, + String weekDay) { + if (CollectionUtils.isNotEmpty(messageContents)) { + for (MessageContent message : messageContents) { + //判断当前短信是否已经发送 通过短信ID和儿童ID + boolean isExist = SaveMessageService.isExistMsg(baby.getId(), message.getId()); + if (isExist) { + continue; + } + + String title = "儿童健康指导"; + if (type == 1) { + title = "儿童高危精准指导"; + } + + String messageContent = "【" + messagePrefix + "】" + message.getContent(); + MsgRequest request = HelperUtils.getMessageRequest(messageContent, baby.getMphone(), + ServiceObjEnums.BABYOBJ.getId(), SmsServiceEnums.YBZD.getId(), + baby.getHospitalId(), message.getId(), baby.getId(), weekDay, title, "", + WxTempleteIdEnums.BABY_YI_BAN_ZHI_DAO.getId(), service); + + messages.add(request); + break; + } + } + } } -- 1.8.3.1