diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/AntenatalExaminationDaoImpl.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/AntenatalExaminationDaoImpl.java index 62a64af..6a9bbf2 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/AntenatalExaminationDaoImpl.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/AntenatalExaminationDaoImpl.java @@ -62,7 +62,8 @@ public class AntenatalExaminationDaoImpl extends BaseMongoDAOImpl queryYuyueAntenatalExamination(Date yuYueDate,String hospitalId) { - AggregationOperation match = Aggregation.match(Criteria.where("nextCheckTime").gte(yuYueDate).lte(yuYueDate).and("hospitalId").is(hospitalId)); + AggregationOperation match = Aggregation.match(Criteria.where("hospitalId").gte(yuYueDate).lte(yuYueDate).and("hospitalId").is(hospitalId)); +// AggregationOperation match = Aggregation.match(Criteria.where("nextCheckTime").gte(yuYueDate).lte(yuYueDate).and("hospitalId").is(hospitalId)); AggregationOperation group = Aggregation.group("parentId").max("created").as("created"); Aggregation aggregation = Aggregation.newAggregation(match, group); AggregationResults result = this.mongoTemplate.aggregate(aggregation, "lyms_antex", AntenatalExaminationModel.class); diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/AntenatalExaminationService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/AntenatalExaminationService.java index c45ff4d..58b180d 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/AntenatalExaminationService.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/AntenatalExaminationService.java @@ -142,4 +142,9 @@ public class AntenatalExaminationService { public List queryYuyueAntenatalExamination(Date startDate,String hospitalId,String pid) { return iAntenatalExaminationDao.queryYuyueAntenatalExamination(startDate, hospitalId,pid); } + + + public List queryLastAntenatalExamination(MongoQuery query) { + return iAntenatalExaminationDao.queryAntenatalExamination(query.addOrder(Sort.Direction.DESC, "created")); + } } \ No newline at end of file diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/HighRiskSmsModel.java b/platform-dal/src/main/java/com/lyms/platform/pojo/HighRiskSmsModel.java index fccc7ef..5e60526 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/HighRiskSmsModel.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/HighRiskSmsModel.java @@ -33,6 +33,15 @@ public class HighRiskSmsModel extends BaseModel { private Date modified; private String phone; + private String messageId; + + public String getMessageId() { + return messageId; + } + + public void setMessageId(String messageId) { + this.messageId = messageId; + } public String getId() { return id; diff --git a/platform-dal/src/main/java/com/lyms/platform/query/HighRiskSmsQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/HighRiskSmsQuery.java index 79d9b33..00c2712 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/HighRiskSmsQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/HighRiskSmsQuery.java @@ -31,6 +31,16 @@ public class HighRiskSmsQuery extends BaseQuery implements IConvertToNativeQuery private String phone; + private String messageId; + + public String getMessageId() { + return messageId; + } + + public void setMessageId(String messageId) { + this.messageId = messageId; + } + @Override public MongoQuery convertToQuery() { MongoCondition condition = MongoCondition.newInstance(); @@ -40,6 +50,8 @@ public class HighRiskSmsQuery extends BaseQuery implements IConvertToNativeQuery if (null != patientId) { condition = condition.and("patientId", patientId, MongoOper.IS); + } if (null != messageId) { + condition = condition.and("messageId", messageId, MongoOper.IS); } if(null!=highId){ condition=condition.and("highId",highId,MongoOper.IS); diff --git a/platform-data-api/src/main/java/com/lyms/platform/data/pojo/MessageContent.java b/platform-data-api/src/main/java/com/lyms/platform/data/pojo/MessageContent.java index f015caf..6654448 100644 --- a/platform-data-api/src/main/java/com/lyms/platform/data/pojo/MessageContent.java +++ b/platform-data-api/src/main/java/com/lyms/platform/data/pojo/MessageContent.java @@ -12,6 +12,16 @@ public class MessageContent implements Serializable { private String content; private String title; private List tags; + private String highRiskId; + + public String getHighRiskId() { + return highRiskId; + } + + public void setHighRiskId(String highRiskId) { + this.highRiskId = highRiskId; + } + public String getId() { return id; } diff --git a/platform-data-api/src/main/java/com/lyms/platform/data/service/impl/SmsServiceImpl.java b/platform-data-api/src/main/java/com/lyms/platform/data/service/impl/SmsServiceImpl.java index fe9d6db..eeb33cd 100644 --- a/platform-data-api/src/main/java/com/lyms/platform/data/service/impl/SmsServiceImpl.java +++ b/platform-data-api/src/main/java/com/lyms/platform/data/service/impl/SmsServiceImpl.java @@ -95,53 +95,46 @@ public class SmsServiceImpl implements SmsService{ if (CollectionUtils.isNotEmpty(configs)) { - for(SmsConfigModel config : configs) - { + for(SmsConfigModel config : configs) { String hospitalId = config.getHospitalId(); - if (StringUtils.isEmpty(hospitalId)) - { + if (StringUtils.isEmpty(hospitalId)) { continue; } //每周几发送的指导短信 String timeStr = config.getGuideTime(); - if (StringUtils.isEmpty(timeStr)) - { + if (StringUtils.isEmpty(timeStr)) { continue; } List guideTimes = JsonUtil.toList(timeStr, String.class); - if (guideTimes == null || guideTimes.size() != 2) - { + if (guideTimes == null || guideTimes.size() != 2) { continue; } //判断医院是否运行 - if (!isRunning(hospitalId)) - { + if (!isRunning(hospitalId)) { continue; } String strService = config.getSmsService(); //判断消息服务是否启动 - boolean isStart = isStartService(SmsServiceEnums.YBZD.getId(),strService); - if (!isStart) - { + boolean isStart = isStartService(SmsServiceEnums.YBZD.getId(), strService); + if (!isStart) { continue; } - //通过医院id先从缓存中取 如果没有取到就调用ams获取该医院短信 并保存到amsSmses中 - Map> amsSmses = amsSmsCache.get(hospitalId); - if (amsSmses == null || amsSmses.size() == 0) - { - // 查询模板短信 从ams平台配置的短信通过医院ID - amsSmses = AmsMessageService + //通过医院id先从缓存中取 如果没有取到就调用ams获取该医院短信 并保存到amsSmses中 + Map> amsSmses = amsSmsCache.get(hospitalId); + if (amsSmses == null || amsSmses.size() == 0) + { + // 查询模板短信 从ams平台配置的短信通过医院ID + amsSmses = AmsMessageService .getMessageTemplateMap(hospitalId, AmsServiceTypeEnum.YUN_GUIDE); - amsSmsCache.put(String.valueOf(hospitalId),amsSmses); - - } + amsSmsCache.put(hospitalId,amsSmses); + } PatientsQuery patientsQuery = new PatientsQuery(); patientsQuery.setYn(YnEnums.YES.getId()); @@ -247,52 +240,72 @@ public class SmsServiceImpl implements SmsService{ List risks = findLastRisk(pat.getPid()); if (CollectionUtils.isNotEmpty(risks)) { + List highRiskContents = new ArrayList(); + //把多种高危因素的短信合并在一起 for (Object obj : risks) { Map riskMap = (Map)obj; - - HighRiskSmsQuery hquery = new HighRiskSmsQuery(); - hquery.setHighId(String.valueOf(riskMap.get("id"))); - hquery.setPhone(pat.getPhone()); - hquery.setPatientId(pat.getId()); - int count = highRiskService.queryHighRiskCount(hquery); - if (count > 0) - { - continue; - } - String name = String.valueOf(riskMap.get("name")); List messageContents = amsSmses.get(name); if (CollectionUtils.isNotEmpty(messageContents)) { for (MessageContent message : messageContents) { - String messageContent = "【"+messagePrefix+"】" + message.getContent(); + message.setHighRiskId(String.valueOf(riskMap.get("id"))); + } + } + highRiskContents.addAll(messageContents); + } + if (CollectionUtils.isNotEmpty(highRiskContents)) + { + //可以发送的高危短信 + List sendMessageContents = new ArrayList<>(); + + for (MessageContent message : highRiskContents) + { + + HighRiskSmsQuery hquery = new HighRiskSmsQuery(); + hquery.setMessageId(message.getId()); + hquery.setHighId(message.getHighRiskId()); + hquery.setPhone(pat.getPhone()); + hquery.setPatientId(pat.getId()); - MessageRequest request = getMessageRequest( messageContent,pat.getPhone(),ServiceObjEnums.YUNOBJ.getId(), SmsServiceEnums.GWZD.getId(), - pat.getHospitalId(),message.getId(),pat.getId()); + int count = highRiskService.queryHighRiskCount(hquery); + if (count > 0) + { + continue; + } + //把未发送过的添加到集合中 + sendMessageContents.add(message); + } + + if (CollectionUtils.isNotEmpty(sendMessageContents)) { + //根据集合的长度随机一个数字 + int index = (int)(Math.random()*sendMessageContents.size()); + + //从集合中随机取一个发送 + MessageContent message =sendMessageContents.get(index); + String messageContent = "【" + messagePrefix + "】" + message.getContent(); + MessageRequest request = getMessageRequest(messageContent, pat.getPhone(), ServiceObjEnums.YUNOBJ.getId(), SmsServiceEnums.GWZD.getId(), + pat.getHospitalId(), message.getId(), pat.getId()); messages.add(request); - isRisk = true; - HighRiskSmsModel highRiskSmsModel = new HighRiskSmsModel(); + HighRiskSmsModel highRiskSmsModel = new HighRiskSmsModel(); highRiskSmsModel.setPatientId(pat.getId()); - highRiskSmsModel.setHighId(String.valueOf(riskMap.get("id"))); + highRiskSmsModel.setHighId(message.getHighRiskId()); highRiskSmsModel.setPhone(pat.getPhone()); highRiskSmsModel.setHospitalId(pat.getHospitalId()); highRiskSmsModel.setCreated(new Date()); highRiskSmsModel.setModified(new Date()); + highRiskSmsModel.setMessageId(message.getId()); highRiskService.addHighRiskSmsModel(highRiskSmsModel); - break; - } + isRisk = true; - if (isRisk) - { - break; } } - } + } } @@ -309,7 +322,7 @@ public class SmsServiceImpl implements SmsService{ { for(MessageContent message : messageContents) { -// //判断当前短信是否已经发送 通过短信ID和孕妇ID + //判断当前短信是否已经发送 通过短信ID和孕妇ID boolean isExist = SaveMessageService.isExistSms(pat.getId(), message.getId()); if (isExist) { @@ -2217,7 +2230,19 @@ public class SmsServiceImpl implements SmsService{ for (AntenatalExaminationModel f : fuzs) { - idset.add(f.getId()); //这里的id就是parentid + + AntExQuery antExQuery = new AntExQuery(); + antExQuery.setYn(YnEnums.YES.getId()); + antExQuery.setParentId(f.getId()); + + List list = antenatalExaminationService.queryLastAntenatalExamination(antExQuery.convertToQuery()); + if (CollectionUtils.isNotEmpty(list)) + { + if (list.get(0).getNextCheckTime() != null) + { + idset.add(f.getId()); //这里的id就是parentid + } + } } return idset; } @@ -2263,7 +2288,18 @@ public class SmsServiceImpl implements SmsService{ for (AntenatalExaminationModel f : fuzs) { - idset.add(f.getParentId()); + AntExQuery antExQuery = new AntExQuery(); + antExQuery.setYn(YnEnums.YES.getId()); + antExQuery.setParentId(f.getId()); + + List list = antenatalExaminationService.queryLastAntenatalExamination(antExQuery.convertToQuery()); + if (CollectionUtils.isNotEmpty(list)) + { + if (list.get(0).getNextCheckTime() != null) + { + idset.add(f.getId()); //这里的id就是parentid + } + } } return idset.size() > 0; } diff --git a/platform-data-api/src/main/java/com/lyms/platform/data/util/AmsMessageService.java b/platform-data-api/src/main/java/com/lyms/platform/data/util/AmsMessageService.java index 0dd5f95..0254c76 100644 --- a/platform-data-api/src/main/java/com/lyms/platform/data/util/AmsMessageService.java +++ b/platform-data-api/src/main/java/com/lyms/platform/data/util/AmsMessageService.java @@ -82,13 +82,13 @@ public class AmsMessageService { params.put("limit", "9999"); String str = HttpRequest.sendGet(AMS_URL, params, headers); - System.out.println(str); +// System.out.println(str); ObjectMapper om = new ObjectMapper(); MessageResponseEntity mre = null; Map> map = new HashMap>(); try { mre = om.readValue(str, MessageResponseEntity.class); - System.out.println(mre); +// System.out.println(mre); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { @@ -124,8 +124,9 @@ public class AmsMessageService { } } }else{//失败 - logger.error("error info :errorcode="+mre.getErrorcode() - +" errormsg="+mre.getErrormsg()); + System.out.println("hospitalId="+hospitalId+"---"+mre); + logger.error("error info :errorcode=" + mre.getErrorcode() + + " errormsg=" + mre.getErrormsg()); } }else{ logger.error("接口调用失败!!!"); @@ -182,8 +183,15 @@ public class AmsMessageService { public static void main(String[] args) { -// getMessageTemplateMap("8be01f59-ad25-4ae6-968d-8450c9421e0b", +// Map> list = getMessageTemplateMap("242", // AmsServiceTypeEnum.CHILD_GUIDE); +// +// List msgs = list.get("新生儿感染"); + for (int i = 0;i< 100 ;i++) + { + int index = (int)(Math.random()*8); + System.out.println(index); + } // String result = "头:9.5|胸:10.0|腹:10.0"; // String b = "";