diff --git a/platform-common/src/main/java/com/lyms/platform/common/enums/WeekEnums.java b/platform-common/src/main/java/com/lyms/platform/common/enums/WeekEnums.java new file mode 100644 index 0000000..dc06678 --- /dev/null +++ b/platform-common/src/main/java/com/lyms/platform/common/enums/WeekEnums.java @@ -0,0 +1,60 @@ +package com.lyms.platform.common.enums; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * + * 周类型 + * + * @author lqy + * + */ +public enum WeekEnums { + + WEEK_ONE(1,"星期一"),WEEK_TWO(2,"星期二"),WEEK_THREE(3,"星期三"),WEEK_FOUR(4,"星期四"),WEEK_FIVE(5,"星期五"),WEEK_SIX(6,"星期六"),WEEK_SEVEN(7,"星期日"); + private WeekEnums(int id, String name) { + this.id = id; + this.name = name; + } + + public static String getNameById(int id){ + for(WeekEnums week : values()){ + if(id==week.id){ + return week.getName(); + } + } + return ""; + } + + public static int getIdByName(String name){ + for(WeekEnums week : values()){ + if(name==week.name){ + return week.getId(); + } + } + return 0; + } + + public static List getWeekEnums() { + List list = new ArrayList<>(); + for (WeekEnums e : WeekEnums.values()) { + list.add(e.getName()); + } + return list; + } + + private int id; + + private String name; + + public int getId() { + return id; + } + + public String getName() { + return name; + } +} \ No newline at end of file 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 60f0b4d..e8dd20e 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 @@ -25,7 +25,7 @@ import java.util.*; /** * 短信生成 - * Created by Administrator on 2016/7/5. + * Created by lqy on 2016/7/5. */ @Service("smsService") public class SmsServiceImpl implements SmsService{ @@ -82,29 +82,22 @@ public class SmsServiceImpl implements SmsService{ { continue; } + String strService = config.getSmsService(); - String serviceStr = config.getSmsService(); - if (StringUtils.isEmpty(serviceStr)) - { - continue; - } - - //消息服务启动 - List smsServices = JsonUtil.toList(serviceStr, Map.class); //判断消息服务是否启动 - boolean isStart = isStartService(SmsServiceEnums.YBZD.getId(),smsServices); + boolean isStart = isStartService(SmsServiceEnums.YBZD.getId(),strService); if (!isStart) { continue; } //通过医院id先从缓存中取 如果没有取到就调用ams获取该医院短信 并保存到amsSmses中 - Map> amsSmses = amsSmsCache.get(String.valueOf(hospitalId)); + Map> amsSmses = amsSmsCache.get(hospitalId); if (amsSmses == null || amsSmses.size() == 0) { // 查询模板短信 从ams平台配置的短信通过医院ID amsSmses = AmsMessageService - .getMessageTemplateMap(String.valueOf(hospitalId), + .getMessageTemplateMap(hospitalId, AmsServiceTypeEnum.YUN_GUIDE); amsSmsCache.put(String.valueOf(hospitalId),amsSmses); @@ -116,7 +109,7 @@ public class SmsServiceImpl implements SmsService{ patientsQuery.setType(1); //末次月经必须大于当前时间减去42周视为为分娩孕妇 - Date lastMensesMax = DateUtil.addDay(new Date(), -42); + Date lastMensesMax = DateUtil.getNewDate(-42,"周",1); patientsQuery.setLastMensesStart(lastMensesMax); //健康指导短信 只能是类型为 增值服务 开通状态 才发送 patientsQuery.setServiceType(ServiceTypeEnums.ADD_SERVICE.getId()); @@ -147,55 +140,80 @@ public class SmsServiceImpl implements SmsService{ messagePrefix = res == "" ? messagePrefix : res; } - /** - * 高危短信 - */ + String timeStr = config.getGuideTime(); + if (StringUtils.isEmpty(timeStr)) + { + continue; + } + + List guideTimes = JsonUtil.toList(timeStr,String.class); + if (guideTimes == null || guideTimes.size() != 2) + { + continue; + } + int weekNum = 0; + for (String guide : guideTimes) + { + if (!week.equals(guide)) + { + weekNum = WeekEnums.getIdByName(guide); + } + } boolean isRisk = false; - //获取最后一次高危因素 - List risks = findLastRisk(pat.getId()); - if (CollectionUtils.isNotEmpty(risks)) + if (weekNum < WeekEnums.getIdByName(week)) { - for (Object obj : risks) + /** + * 高危短信 + */ + //获取最后一次高危因素 + List risks = findLastRisk(pat.getId()); + if (CollectionUtils.isNotEmpty(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; - } - - HighRiskSmsModel highRiskSmsModel = new HighRiskSmsModel(); - highRiskSmsModel.setPatientId(pat.getId()); - highRiskSmsModel.setHighId(String.valueOf(riskMap.get("id"))); - highRiskSmsModel.setPhone(pat.getPhone()); - highRiskSmsModel.setHospitalId(pat.getHospitalId()); - highRiskSmsModel.setCreated(new Date()); - highRiskSmsModel.setModified(new Date()); - highRiskService.addHighRiskSmsModel(highRiskSmsModel); - - String name = String.valueOf(riskMap.get("id")); - List messageContents = amsSmses.get(name); - if (CollectionUtils.isNotEmpty(messageContents)) + for (Object obj : risks) { - for (MessageContent message : messageContents) + 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) { - 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; - break; + continue; } + HighRiskSmsModel highRiskSmsModel = new HighRiskSmsModel(); + highRiskSmsModel.setPatientId(pat.getId()); + highRiskSmsModel.setHighId(String.valueOf(riskMap.get("id"))); + highRiskSmsModel.setPhone(pat.getPhone()); + highRiskSmsModel.setHospitalId(pat.getHospitalId()); + highRiskSmsModel.setCreated(new Date()); + highRiskSmsModel.setModified(new Date()); + highRiskService.addHighRiskSmsModel(highRiskSmsModel); + + String name = String.valueOf(riskMap.get("id")); + List messageContents = amsSmses.get(name); + if (CollectionUtils.isNotEmpty(messageContents)) + { + for (MessageContent message : messageContents) + { + 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; + break; + } + + if (isRisk) + { + break; + } + } } - } } @@ -267,15 +285,9 @@ public class SmsServiceImpl implements SmsService{ } String serviceStr = config.getSmsService(); - if (StringUtils.isEmpty(serviceStr)) - { - continue; - } - //消息服务启动 - List smsServices = JsonUtil.toList(serviceStr, Map.class); //判断消息服务是否启动 - boolean isStart = isStartService(SmsServiceEnums.YBZD.getId(),smsServices); + boolean isStart = isStartService(SmsServiceEnums.YBZD.getId(),serviceStr); if (!isStart) { continue; @@ -392,15 +404,9 @@ public class SmsServiceImpl implements SmsService{ } String serviceStr = config.getSmsService(); - if (StringUtils.isEmpty(serviceStr)) - { - continue; - } - //消息服务启动 - List smsServices = JsonUtil.toList(serviceStr, Map.class); //判断消息服务是否启动 - boolean isStart = isStartService(SmsServiceEnums.YBZD.getId(),smsServices); + boolean isStart = isStartService(SmsServiceEnums.YBZD.getId(),serviceStr); if (!isStart) { continue; @@ -446,7 +452,6 @@ public class SmsServiceImpl implements SmsService{ continue; } - String messagePrefix = getSmsPrefix(config, pat.getBookbuildingDoctor()); //计算产后多少周 按分娩日期计算 @@ -477,9 +482,7 @@ public class SmsServiceImpl implements SmsService{ } list.setMessages(messages); sendSms(list); - } - } } @@ -490,11 +493,39 @@ public class SmsServiceImpl implements SmsService{ */ @Override public void serviceEnd() { + /** + * 产妇服务结束 + */ + Date chanEndDate = DateUtil.getNewDate(-16, "周", 0); + //把时间格式化成 yyyy_MM_dd 的日期 + chanEndDate = DateUtil.parseYMD(DateUtil.getyyyy_MM_dd(chanEndDate)); + PatientsQuery chanpatientsQuery = new PatientsQuery(); + chanpatientsQuery.setYn(YnEnums.YES.getId()); + //3产妇 + chanpatientsQuery.setType(3); + chanpatientsQuery.setLastMensesEnd(chanEndDate); + chanpatientsQuery.setLastMensesStart(chanEndDate); + + List patients = yunBookbuildingService.queryPregnantWithQuery(chanpatientsQuery); + if (CollectionUtils.isNotEmpty(patients)) + { + for (Patients pat : patients) + { + //更新状态为过期 + //判断其为增值服务还是 标准服务 + if (pat.getServiceType() == ServiceTypeEnums.STANDARD_SERVICE.getId()) + { + pat.setServiceStatus(ServiceStatusEnums.STANDARD_OVERDUE.getId()); + } + else if (pat.getServiceType() == ServiceTypeEnums.ADD_SERVICE.getId()) + { + pat.setServiceStatus(ServiceStatusEnums.ADD_OVERDUE.getId()); + } + yunBookbuildingService.updatePregnant(pat, pat.getId()); - Date endDate = DateUtil.getNewDate(-42, "周", 0); - -// yunBookbuildingService.updatePatientStatus(endDate,ServiceStatusEnums.); + } + } } @@ -759,14 +790,43 @@ public class SmsServiceImpl implements SmsService{ //服务结束 if (specialDateType == SpecialDateEnums.FWJS.getId()) { - //TODO - } - //孕妇建档在 孕妇建档生成 - else if (specialDateType == SpecialDateEnums.JD.getId()) - { + /** + * 孕妇超过42周的 就自动分娩 + */ + Date endDate = DateUtil.getNewDate(-42, "周", 0); + //把时间格式化成 yyyy_MM_dd 的日期 + endDate = DateUtil.parseYMD(DateUtil.getyyyy_MM_dd(endDate)); + patientsQuery.setYn(YnEnums.YES.getId()); + //1孕妇 + patientsQuery.setType(1); + patientsQuery.setLastMensesEnd(endDate); + patientsQuery.setLastMensesStart(endDate); + + List patients = yunBookbuildingService.queryPregnantWithQuery(patientsQuery); + if (CollectionUtils.isNotEmpty(patients)) + { + for (Patients pat : patients) + { + + //短信前缀 + String messagePrefix = getSmsPrefix(config,pat.getBookbuildingDoctor()); + String messageContent = "【"+messagePrefix+"】"+template.getContent(); + messageContent = replaceName(pat.getUsername(), messageContent); + MessageRequest request = getMessageRequest( messageContent,pat.getPhone(),ServiceObjEnums.YUNOBJ.getId(), template.getSmsType(), + pat.getHospitalId(),template.getId(),pat.getId()); + messages.add(request); + //更新成产妇状态 分娩时间设置成当前时间 + pat.setType(3); + pat.setDueDate(new Date()); + pat.setModified(new Date()); + yunBookbuildingService.updatePregnant(pat, pat.getId()); + } + } } + //孕妇建档在 孕妇建档生成 + } //特殊日期中的公历和农历 else if (sendDateType == SendDateEnums.GL.getId() || sendDateType == SendDateEnums.NL.getId() ) @@ -1063,16 +1123,50 @@ public class SmsServiceImpl implements SmsService{ babyModelQuery.setBirthEnd(birthday); messages.addAll(getBabyMessageRequestList( babyModelQuery, config, template)); } - //儿童建档 - else if (specialDateType == SpecialDateEnums.JD.getId()) - { - } //儿童服务结束 else if (specialDateType == SpecialDateEnums.FWJS.getId()) { - //TODO + + /** + * 儿童服务结束 + */ + babyModelQuery.setYn(YnEnums.YES.getId()); + Date babyEndDate = DateUtil.getNewDate(-36, "月", 0); + //把时间格式化成 yyyy_MM_dd 的日期 + babyEndDate = DateUtil.parseYMD(DateUtil.getyyyy_MM_dd(babyEndDate)); + + babyModelQuery.setBirthStart(babyEndDate); + babyModelQuery.setBirthEnd(babyEndDate); + + List babyModels = babyBookbuildingService.queryBabyBuildByCond(babyModelQuery); + if (CollectionUtils.isNotEmpty(babyModels)) + { + for(BabyModel model : babyModels) + { + //短信前缀 + String messagePrefix = getSmsPrefix(config, model.getBuildDoctor()); + String messageContent = "【"+messagePrefix+"】"+template.getContent(); + messageContent = replaceName(model.getName(), messageContent); + MessageRequest request = getMessageRequest(messageContent,model.getMphone(),ServiceObjEnums.YUNOBJ.getId(), template.getSmsType(), + model.getHospitalId(),template.getId(),model.getId()); + messages.add(request); + + //更新状态为过期 + //判断其为增值服务还是 标准服务 + if (model.getServiceType() == ServiceTypeEnums.STANDARD_SERVICE.getId()) + { + model.setServiceStatus(ServiceStatusEnums.STANDARD_OVERDUE.getId()); + } + else if (model.getServiceType() == ServiceTypeEnums.ADD_SERVICE.getId()) + { + model.setServiceStatus(ServiceStatusEnums.ADD_OVERDUE.getId()); + } + babyBookbuildingService.updateBabyBuild(model,model.getId()); + } + } } + //儿童建档 在儿童建档时候生成 及时短信 } else if (sendDateType == SendDateEnums.GL.getId() || sendDateType == SendDateEnums.NL.getId()) { @@ -1212,11 +1306,7 @@ public class SmsServiceImpl implements SmsService{ } } } - //产妇为分娩日期 - else if (sendDateType == SendDateEnums.TSRQ.getId()) - { - //TODO - } + } else if (sendFreq == SendFrequencyEnums.MONTH.getId()) { @@ -1263,9 +1353,23 @@ public class SmsServiceImpl implements SmsService{ } } } + //产妇为分娩日期 else if (sendDateType == SendDateEnums.TSRQ.getId()) { - //TODO + Integer specialDateType = template.getSpecialDateType(); + if (specialDateType == SpecialDateEnums.FM.getId()) + { + //分娩都为分娩后第二天发送短信 + Date dueDate = DateUtil.addDay(new Date(),-1); + //把时间格式化成 yyyy_MM_dd 的日期 + dueDate = DateUtil.parseYMD(DateUtil.getyyyy_MM_dd(dueDate)); + + patientsQuery.setDueDateStart(dueDate); + patientsQuery.setDueDateEnd(dueDate); + + messages.addAll(getChanMessageRequestList(patientsQuery, config, template)); + } + } } @@ -1926,11 +2030,7 @@ public class SmsServiceImpl implements SmsService{ { if (config != null) { String serviceStr = config.getSmsService(); - if (StringUtils.isEmpty(serviceStr)) { - return false; - } - List smsTypes = JsonUtil.toList(serviceStr, Map.class); - boolean isStart = isStartService(smsType, smsTypes); + boolean isStart = isStartService(smsType, serviceStr); return isStart; } return false; @@ -2013,8 +2113,15 @@ public class SmsServiceImpl implements SmsService{ /** * 判断对应服务是否启动 */ - private boolean isStartService(Integer smsType,List smsServices) + private boolean isStartService(Integer smsType,String serviceStr) { + if (StringUtils.isEmpty(serviceStr)) + { + return false; + } + //消息服务启动 + List smsServices = JsonUtil.toList(serviceStr, Map.class); + if (CollectionUtils.isNotEmpty(smsServices)) { for (Map map : smsServices) diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/EnumsController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/EnumsController.java index f17bea9..f0183ad 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/EnumsController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/EnumsController.java @@ -325,6 +325,16 @@ public class EnumsController { return list; } + /** + * 周枚举 + * @return + */ + @RequestMapping(value = "/getWeeks", method = RequestMethod.GET) + @ResponseBody + public List getWeeks() { + return WeekEnums.getWeekEnums(); + } + public static void main(String a[]) { List list = SmsServiceEnums.getSmsServiceLeaf(); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SmsTemplateController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SmsTemplateController.java index 56e765d..89afbf4 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SmsTemplateController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SmsTemplateController.java @@ -65,7 +65,8 @@ public class SmsTemplateController extends BaseController { @RequestParam(value = "serviceType", required = false) Integer serviceType, @RequestParam(value = "serviceStatus", required = false) Integer serviceStatus, @RequestParam(value = "smsType", required = false) Integer smsType, - @RequestParam(value = "content", required = false) String content) { + @RequestParam(value = "content", required = false) String content, + @RequestParam(value = "hospitalId", required = false) String hospitalId) { SmsTemplateRequest request = new SmsTemplateRequest(); request.setServiceObj(serviceObj); @@ -75,6 +76,7 @@ public class SmsTemplateController extends BaseController { request.setServiceStatus(serviceStatus); request.setLimit(limit); request.setPage(page); + request.setHospitalId(hospitalId); return smsTemplateFacade.querySmsTemps(request); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SmsConfigFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SmsConfigFacade.java index dad1f6d..840d338 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SmsConfigFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SmsConfigFacade.java @@ -13,6 +13,7 @@ import com.lyms.platform.permission.model.DepartmentsQuery; import com.lyms.platform.permission.service.DepartmentsService; import com.lyms.platform.pojo.*; import com.lyms.platform.query.*; +import com.qiniu.util.Json; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -57,7 +58,7 @@ public class SmsConfigFacade { model.setPrefixType(request.getPrefixType()); model.setHospitalPrefix(request.getHospitalPrefix()); model.setDeptPrefix(JsonUtil.array2JsonString(request.getDeptPrefix())); - model.setGuideTime(request.getGuideTime()); + model.setGuideTime(JsonUtil.array2JsonString(request.getGuideTime())); model.setSmsService(JsonUtil.array2JsonString(request.getSmsService())); return model; @@ -159,7 +160,7 @@ public class SmsConfigFacade { sr.setHospitalPrefix(model.getHospitalPrefix()); sr.setHospitalId(model.getHospitalId()); sr.setPrefixType(model.getPrefixType()); - sr.setGuideTime(model.getGuideTime()); + sr.setGuideTime(JsonUtil.toList(model.getGuideTime(),String.class)); List deptsPrefix = JsonUtil.toList(model.getDeptPrefix(), Map.class); if (CollectionUtils.isNotEmpty(deptsPrefix)) { diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SmsConfigRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SmsConfigRequest.java index f9e451f..ac57772 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SmsConfigRequest.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SmsConfigRequest.java @@ -28,7 +28,7 @@ public class SmsConfigRequest { //指导发送时间 @FormParam @NotEmpty(message = "指导发送时间不能为空.") - private String guideTime; + private List guideTime; //消息服务启动 private List> smsService; @@ -75,11 +75,11 @@ public class SmsConfigRequest { this.deptPrefix = deptPrefix; } - public String getGuideTime() { + public List getGuideTime() { return guideTime; } - public void setGuideTime(String guideTime) { + public void setGuideTime(List guideTime) { this.guideTime = guideTime; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/SmsConfigResult.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/SmsConfigResult.java index de16dc7..6d46868 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/SmsConfigResult.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/SmsConfigResult.java @@ -20,7 +20,7 @@ public class SmsConfigResult { private List deptPrefix; //指导发送时间 - private String guideTime; + private List guideTime; //消息服务启动 private List smsService; @@ -67,11 +67,11 @@ public class SmsConfigResult { this.deptPrefix = deptPrefix; } - public String getGuideTime() { + public List getGuideTime() { return guideTime; } - public void setGuideTime(String guideTime) { + public void setGuideTime(List guideTime) { this.guideTime = guideTime; }