diff --git a/platform-common/src/main/java/com/lyms/platform/common/enums/SmsServiceEnums.java b/platform-common/src/main/java/com/lyms/platform/common/enums/SmsServiceEnums.java index 5a49a56..e2e7145 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/enums/SmsServiceEnums.java +++ b/platform-common/src/main/java/com/lyms/platform/common/enums/SmsServiceEnums.java @@ -56,7 +56,9 @@ public enum SmsServiceEnums { XYTX(42,"血压测量提醒",21,"1"), NOSERVICE(43,"无服务",18,"0,1,2,3,4"), CHWJTX(44,"产后问卷提醒",4,"3"), - ETJBTX(45,"儿保疾病提醒",14,"2"); + ETJBTX(45,"儿保疾病提醒",14,"2"), + PXTX(46,"贫血提醒",21,"1"), + TZCBTX(47,"体重超标提醒",21,"1"); private SmsServiceEnums(int id,String name,int pid,String serviceObj){ this.id = id; diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/PatientWeight.java b/platform-dal/src/main/java/com/lyms/platform/pojo/PatientWeight.java index be30e0f..8bdef4e 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/PatientWeight.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/PatientWeight.java @@ -138,6 +138,17 @@ public class PatientWeight extends BaseModel { private boolean printing; + //是否超过上线值 + private String isNormal; + + public String getIsNormal() { + return isNormal; + } + + public void setIsNormal(String isNormal) { + this.isNormal = isNormal; + } + public boolean isPrinting() { return printing; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PatientWeightController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PatientWeightController.java index 521b105..fc45c32 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PatientWeightController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PatientWeightController.java @@ -37,6 +37,13 @@ public class PatientWeightController extends BaseController { return patientWeightService.addOrUpdate(getUserId(request), patientWeight); } + + @ResponseBody + @RequestMapping(value = "/generateWeightMsg", method = RequestMethod.GET) + public void generateWeightMsg() { + patientWeightService.generateWeightMsg(); + } + /** * @param key 姓名/证件号/联系方式 * @param vcCardNo 就诊卡号 diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/PatientWeightService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/PatientWeightService.java index 522d2e3..9757e77 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/PatientWeightService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/PatientWeightService.java @@ -73,6 +73,7 @@ public interface PatientWeightService extends IBaseService { String getDoctorId(List> dayWeights2); BaseResponse updateLastMenstrual(String lastMenstrual, String pid); + void generateWeightMsg(); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/PatientWeightServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/PatientWeightServiceImpl.java index 0291155..eda20dd 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/PatientWeightServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/PatientWeightServiceImpl.java @@ -23,16 +23,20 @@ import com.lyms.platform.permission.service.PatientServiceService; import com.lyms.platform.permission.service.UsersService; import com.lyms.platform.pojo.*; import com.lyms.platform.query.PatientsQuery; +import com.lyms.platform.query.SmsConfigQuery; +import com.lyms.platform.query.SmsTemplateQuery; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -43,6 +47,9 @@ import java.util.*; @Service public class PatientWeightServiceImpl extends BaseServiceImpl implements PatientWeightService { + private static final String WEIGHT_MSG_CONTENT = "提示:您好,您在产检过程中监测体重增长幅度超标,为避免体重增长过快对您和您的宝宝带来不好的结局,请收到消息后尽快到产科门诊就诊。"; + private static final String QHDFY_WEIGHT_MSG_CONTENT = "提示:您好,您在产检过程中监测体重增长幅度超标,为避免体重增长过快对您和您的宝宝带来不好的结局,请收到消息后尽快到产科门诊106室就诊。"; + @Autowired private MongoTemplate mongoTemplate; @@ -54,7 +61,8 @@ public class PatientWeightServiceImpl extends BaseServiceImpl implements Patient @Autowired private PatientWeightService2 patientWeightService2; - + @Autowired + private SmsConfigService smsConfigService; @Autowired private PatientsService patientsService; @@ -86,8 +94,14 @@ public class PatientWeightServiceImpl extends BaseServiceImpl implements Patient @Autowired private UsersService usersService; - /*@Autowired - private PatientWeightService patientWeightService;*/ + + @Autowired + @Qualifier("commonThreadPool") + private ThreadPoolTaskExecutor commonThreadPool; + @Autowired + private SmsTemplateService smsTemplateService; + + @Autowired private HealthChargeFacade healthChargeFacade; @@ -156,6 +170,12 @@ public class PatientWeightServiceImpl extends BaseServiceImpl implements Patient patientsService.addPatient(patients); patientWeight.setPatientId(patients.getId()); } + + + + + + Map dayWeights = new LinkedHashMap<>(); List> dayWeights2 = new ArrayList<>(); if (pw != null) { @@ -166,6 +186,9 @@ public class PatientWeightServiceImpl extends BaseServiceImpl implements Patient pw.setDayWeights(dayWeights); pw.setNowWeight(patientWeight.getNowWeight()); + + String isNormal = getWeightRangeIsNormal(patients,pw); + String ymdDate = DateUtil.getyyyy_MM_dd(new Date()); boolean flag = true; if (CollectionUtils.isNotEmpty(pw.getDayWeights2())) { @@ -193,6 +216,7 @@ public class PatientWeightServiceImpl extends BaseServiceImpl implements Patient } pw.setDayWeights2(dayWeights2); pw.setModified(new Date()); + pw.setIsNormal(isNormal); patientWeightService2.update(Query.query(Criteria.where("id").is(pw.getId())), pw); return RespBuilder.buildSuccess(pw.getId()); } @@ -221,7 +245,7 @@ public class PatientWeightServiceImpl extends BaseServiceImpl implements Patient /*m.put("doctorId", doctorId);*/ dayWeights2.add(m); patientWeight.setDayWeights2(dayWeights2); - + pw.setIsNormal(getWeightRangeIsNormal(patients,patientWeight)); patientWeight.setModified(new Date()); patientWeightService2.add(patientWeight); @@ -245,6 +269,136 @@ public class PatientWeightServiceImpl extends BaseServiceImpl implements Patient return RespBuilder.buildSuccess(patientWeight.getId()); } } + /** + * 计算当前测量的体重是否超过上线值 + */ + private String getWeightRangeIsNormal(Patients patients,PatientWeight pw) { + + Map series = new LinkedHashMap<>(); + String isNormal = "true"; + if (pw != null) + { + + double bmiD = Double.parseDouble(pw.getBmi()); + String bmiStr = pw.getBmi(); + String bregmatic = pw.getBregmatic(); + //空和1表示单胎 + if (!StringUtils.isNotEmpty(bregmatic) || "1".equals(bregmatic)) { + if (bmiD < 18.5) { + bmiStr = "BMI<18.5"; + } else if (bmiD >= 18.5 && bmiD <= 24.9) { + bmiStr = "BMI=18.5-24.9"; + } else if (bmiD > 24.9 && bmiD < 30) { + bmiStr = "BMI=25-29.9"; + } else if (bmiD >= 30) { + bmiStr = "BMI≥30"; + } + } else { + if (bmiD <= 24.9) { + bmiStr = "BMI≤24.9"; + } else if (bmiD >= 25 && bmiD <= 29.9) { + bmiStr = "BMI=25-29.9"; + } else if (bmiD >= 30) { + bmiStr = "BMI≥30"; + } + } + + getSeries(series, bmiStr, pw.getBregmatic()); + if (series.get("highDataMap") != null) + { + int week = DateUtil.getWeek(patients.getLastMenses(),new Date()); + Map map = (Map)series.get("highDataMap"); + Double d = map.get(week); + if (d != null && d < Double.parseDouble(pw.getNowWeight()) - Double.parseDouble(pw.getBeforeWeight())) + { + isNormal = "false"; + } + } + } + return isNormal; + } + + + /** + * 创建建档短信 + */ + public void generateWeightMsg() { + + SmsConfigQuery configQuery = new SmsConfigQuery(); + configQuery.setYn(YnEnums.YES.getId()); + configQuery.setPrefixTypes(new Integer[]{0, 1}); + //查询出对应医院配置 + List smsConfigModels = smsConfigService.querySmsConfig(configQuery); + if (CollectionUtils.isNotEmpty(smsConfigModels)) + { + for (SmsConfigModel configModel : smsConfigModels) + { + // 1 推送服务, 2 推送和短信服务 3短信服务, + int startType = smsConfigFacade.hospitalIsStart(configModel.getHospitalId(), configModel, SmsServiceEnums.TZCBTX.getId()); + if (startType == 0) { + return; + } + + Date date = DateUtil.addWeek(DateUtil.addDay(new Date(),-1),-4); + Date start = DateUtil.getDayFirstSecond(date); + Date end = DateUtil.getDayLastSecond(date); + List patientWeights = mongoTemplate.find(Query.query(Criteria.where("isNormal"). + is("false").and("lastMenses").gt(start).lte(end)), PatientWeight.class); + + Date date1 = DateUtil.addWeek(DateUtil.addDay(new Date(),-1),-8); + Date start1 = DateUtil.getDayFirstSecond(date1); + Date end1 = DateUtil.getDayLastSecond(date1); + patientWeights.addAll(mongoTemplate.find(Query.query(Criteria.where("isNormal"). + is("false").and("modified").gt(start1).lte(end1)), PatientWeight.class)); + + if (CollectionUtils.isNotEmpty(patientWeights)) + { + for (PatientWeight weight : patientWeights) + { + //短信前缀 + String messagePrefix = smsConfigFacade.getMsgPrefix(configModel, weight.getOperaterId(), ServiceObjEnums.YUNOBJ.getId()); + + List messages = new ArrayList<>(); + MsgRequest mr = new MsgRequest(); + + String content = "【" + messagePrefix + "】" + ("216".equals(weight.getHospitalId()) ? QHDFY_WEIGHT_MSG_CONTENT : WEIGHT_MSG_CONTENT); + + mr.setFirst(content); + mr.setObjType(ServiceObjEnums.YUNOBJ.getId()); + Patients patients = patientsService.findOnePatientById(weight.getPatientId()); + mr.setPhone(patients.getPhone()); + mr.setTypeId(ProjectTypeEnums.YNXT.getId()); + mr.setPlanTime(DateUtil.getyyyy_MM_dd(new Date())+" 16:00:00"); + mr.setSubTypeId(SmsServiceEnums.TZCBTX.getId()); + mr.setStatus(SmsStatusEnums.WFS.getId()); + mr.setTimeType(SmsTimeTypeEnums.NO_ONTIME.getId()); + + mr.setHospitalId(weight.getHospitalId()); + mr.setTempId(weight.getId()); + mr.setPatientId(patients.getId()); + + mr.setKeyword1("产科医生"); + mr.setKeyword2(DateUtil.getyyyy_MM_dd(new Date())); + mr.setRemark(""); + mr.setCreated(DateUtil.getyyyy_MM_dd_hms(new Date())); + mr.setSmsStatus(SmsStatusEnums.WFS.getId()); + mr.setServiceType(startType); + + mr.setWxTempId(WxTempleteIdEnums.YUN_XUE_KE_CHEN_TX.getId()); + messages.add(mr); + ExceptionUtils.catchException("generateWeightMsg msg = " + mr); + if (CollectionUtils.isNotEmpty(messages)) { + smsConfigFacade.saveMsg(messages, weight.getHospitalId()); + } + + } + } + } + } + } + + + @Override public BaseResponse list(String key, String vcCardNo, Integer currentWeekStart, Integer currentWeekEnd, Integer age, Integer page, Integer limit, Integer userId) { @@ -1846,6 +2000,7 @@ public class PatientWeightServiceImpl extends BaseServiceImpl implements Patient series.put("lowData", CollectionUtils.getValList(lowMap)); series.put("highData", CollectionUtils.getValList(highMap)); + series.put("highDataMap", highMap); series.put("normalData", CollectionUtils.getValList(normalMap)); }