From dbe39881eb38bf13cfa3e892603dfca6048b19a1 Mon Sep 17 00:00:00 2001 From: liquanyu Date: Fri, 6 Nov 2020 16:39:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A6=87=E5=A5=B3=E6=B6=88=E6=81=AF=E7=94=9F?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/permission/model/FolviteQuery.java | 22 ++ .../resources/mainOrm/master/FolviteMapper.xml | 7 + .../lyms/platform/query/CancerScreeningQuery.java | 28 +++ .../lyms/platform/msg/service/IBaseService.java | 2 + .../platform/msg/service/impl/BaseServiceImpl.java | 12 +- .../msg/service/impl/MsgGenerateServiceImpl.java | 14 +- .../msg/worker/TempleteMsgGenerateWorker.java | 243 ++++++++++++++++++--- 7 files changed, 296 insertions(+), 32 deletions(-) diff --git a/platform-biz-service/src/main/java/com/lyms/platform/permission/model/FolviteQuery.java b/platform-biz-service/src/main/java/com/lyms/platform/permission/model/FolviteQuery.java index 525751b..adead19 100644 --- a/platform-biz-service/src/main/java/com/lyms/platform/permission/model/FolviteQuery.java +++ b/platform-biz-service/src/main/java/com/lyms/platform/permission/model/FolviteQuery.java @@ -40,12 +40,34 @@ public class FolviteQuery extends BaseQuery { //领取结束时间 private Date endReceiveDate; + + //建档开始时间 + private Date drawTimeStartDate; + + //建档结束时间 + private Date drawTimeEndDate; + //高危风险因素 private String highRisk; //是否 private Integer yn; + public Date getDrawTimeEndDate() { + return drawTimeEndDate; + } + + public void setDrawTimeEndDate(Date drawTimeEndDate) { + this.drawTimeEndDate = drawTimeEndDate; + } + + public Date getDrawTimeStartDate() { + return drawTimeStartDate; + } + + public void setDrawTimeStartDate(Date drawTimeStartDate) { + this.drawTimeStartDate = drawTimeStartDate; + } public Integer getYn() { return yn; diff --git a/platform-biz-service/src/main/resources/mainOrm/master/FolviteMapper.xml b/platform-biz-service/src/main/resources/mainOrm/master/FolviteMapper.xml index 4ddc495..c9c7feb 100644 --- a/platform-biz-service/src/main/resources/mainOrm/master/FolviteMapper.xml +++ b/platform-biz-service/src/main/resources/mainOrm/master/FolviteMapper.xml @@ -305,6 +305,13 @@ drawTime ) VALUES ( and ispregnancy=#{ispregnancy} + + and drawTime >= #{drawTimeStartDate} + + + and drawTime #{drawTimeEndDate} + + diff --git a/platform-dal/src/main/java/com/lyms/platform/query/CancerScreeningQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/CancerScreeningQuery.java index b1b5ee1..040c445 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/CancerScreeningQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/CancerScreeningQuery.java @@ -71,6 +71,9 @@ public class CancerScreeningQuery extends BaseQuery implements IConvertToNativeQ private Date createdStart; private Date createdEnd; + private Date sfZlrqStart; + + private Date sfZlrqEnd; //操作人 private Integer operator; //医院ID @@ -198,6 +201,14 @@ public class CancerScreeningQuery extends BaseQuery implements IConvertToNativeQ } } + if (null != sfZlrqStart && sfZlrqEnd != null) { + if (null != c) { + c = c.and("sfZlrq").gte(sfZlrqStart).lte(sfZlrqEnd); + } else { + c = Criteria.where("sfZlrq").gte(sfZlrqStart).lte(sfZlrqEnd); + } + } + if (null != c) { @@ -207,6 +218,23 @@ public class CancerScreeningQuery extends BaseQuery implements IConvertToNativeQ return condition.toMongoQuery(); } + + public Date getSfZlrqStart() { + return sfZlrqStart; + } + + public void setSfZlrqStart(Date sfZlrqStart) { + this.sfZlrqStart = sfZlrqStart; + } + + public Date getSfZlrqEnd() { + return sfZlrqEnd; + } + + public void setSfZlrqEnd(Date sfZlrqEnd) { + this.sfZlrqEnd = sfZlrqEnd; + } + public String getRxlYyz() { return rxlYyz; } diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IBaseService.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IBaseService.java index a8f18a6..2b26455 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IBaseService.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IBaseService.java @@ -40,4 +40,6 @@ public interface IBaseService { public String getBabySmsPrefix(SmsConfigModel config,String babyId,String mainPrefix,SmsTemplateModel template); public String getPregnantSmsPrefix(SmsConfigModel config,String pid,String mainPrefix,SmsTemplateModel template); + + public String getDoctorName(String doctorId); } diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/BaseServiceImpl.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/BaseServiceImpl.java index 77da2c1..0dd284e 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/BaseServiceImpl.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/BaseServiceImpl.java @@ -502,12 +502,16 @@ public class BaseServiceImpl implements IBaseService { return ""; } - private String getDoctorName(String doctorId) + public String getDoctorName(String doctorId) { try { - //通过建档医生查询用户信息 - Users user = usersService.getUsers(Integer.valueOf(doctorId)); - return user != null ? user.getName() : ""; + if (StringUtils.isNum(doctorId)) + { + //通过建档医生查询用户信息 + Users user = usersService.getUsers(Integer.valueOf(doctorId)); + return user != null ? user.getName() : ""; + } + return doctorId; }catch (Exception e) { return ""; 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 77f0d94..cd3b646 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 @@ -9,6 +9,7 @@ import com.lyms.platform.msg.service.IMsgGenerateService; import com.lyms.platform.msg.utils.DateUtils; import com.lyms.platform.msg.worker.*; +import com.lyms.platform.permission.dao.master.FolviteMapper; import com.lyms.platform.permission.service.*; import com.lyms.platform.pojo.BasicConfig; import com.lyms.platform.pojo.CourseModel; @@ -47,10 +48,20 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { private CourseService courseService; @Autowired + private PremaritalCheckupService premaritalCheckupService; + @Autowired + private ResidentsArchiveService residentsArchiveService; + + @Autowired private MongoTemplate mongoTemplate; @Autowired private YunBookbuildingService yunBookbuildingService; + @Autowired + private CancerScreeningService cancerScreenService; + + @Autowired + private FolviteMapper folviteMapper; @Autowired private SmsTemplateService smsTemplateService; @@ -237,7 +248,8 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { hearingDiagnoseService, babyPatientExtendEarFollowUpService, patientServiceService, - usersService,matDeliverService); + usersService,matDeliverService,premaritalCheckupService,residentsArchiveService, cancerScreenService, + folviteMapper); pool.execute(worker); } diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/TempleteMsgGenerateWorker.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/TempleteMsgGenerateWorker.java index a486289..06e4a11 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/TempleteMsgGenerateWorker.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/TempleteMsgGenerateWorker.java @@ -10,13 +10,11 @@ import com.lyms.platform.common.utils.StringUtils; 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.permission.dao.master.FolviteMapper; import com.lyms.platform.permission.model.*; import com.lyms.platform.permission.service.*; import com.lyms.platform.pojo.*; -import com.lyms.platform.query.BabyModelQuery; -import com.lyms.platform.query.MatDeliverQuery; -import com.lyms.platform.query.PatientsQuery; -import com.lyms.platform.query.SmsTemplateQuery; +import com.lyms.platform.query.*; import org.apache.commons.collections.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -63,31 +61,18 @@ public class TempleteMsgGenerateWorker implements Runnable { private UsersService usersService; + private PremaritalCheckupService premaritalCheckupService; + private ResidentsArchiveService residentsArchiveService; - private MatDeliverService matDeliverService; - public TempleteMsgGenerateWorker(List configs, IBaseService baseService, - YunBookbuildingService yunBookbuildingService, - SmsTemplateService smsTemplateService, - BabyBookbuildingService babyBookbuildingService, - PostReviewService postReviewService, - MongoTemplate mongoTemplate, - BabyPatientExtendEarScreenService babyPatientExtendEarScreenService, - BabyPatientExtendEarHearingDiagnoseService hearingDiagnoseService, - BabyPatientExtendEarFollowUpService babyPatientExtendEarFollowUpService) { - this.configs = configs; - this.baseService = baseService; - this.yunBookbuildingService = yunBookbuildingService; - this.smsTemplateService = smsTemplateService; - this.babyBookbuildingService = babyBookbuildingService; - this.postReviewService = postReviewService; - this.mongoTemplate = mongoTemplate; - this.babyPatientExtendEarScreenService = babyPatientExtendEarScreenService; - this.hearingDiagnoseService = hearingDiagnoseService; - this.babyPatientExtendEarFollowUpService = babyPatientExtendEarFollowUpService; - } + private FolviteMapper folviteMapper; + + private CancerScreeningService cancerScreenService; + + + private MatDeliverService matDeliverService; public TempleteMsgGenerateWorker(List configs, IBaseService baseService, YunBookbuildingService yunBookbuildingService, @@ -100,7 +85,13 @@ public class TempleteMsgGenerateWorker implements Runnable { BabyPatientExtendEarFollowUpService babyPatientExtendEarFollowUpService, PatientServiceService patientServiceService, UsersService usersService, - MatDeliverService matDeliverService) { + MatDeliverService matDeliverService, + PremaritalCheckupService premaritalCheckupService, + ResidentsArchiveService residentsArchiveService, + CancerScreeningService cancerScreenService, + FolviteMapper folviteMapper + + ) { this.configs = configs; this.baseService = baseService; this.yunBookbuildingService = yunBookbuildingService; @@ -114,6 +105,10 @@ public class TempleteMsgGenerateWorker implements Runnable { this.patientServiceService = patientServiceService; this.usersService = usersService; this.matDeliverService = matDeliverService; + this.premaritalCheckupService = premaritalCheckupService; + this.residentsArchiveService = residentsArchiveService; + this.cancerScreenService = cancerScreenService; + this.folviteMapper = folviteMapper; } @Override @@ -205,6 +200,10 @@ public class TempleteMsgGenerateWorker implements Runnable { else if (serviceObj == ServiceObjEnums.CHANOBJ.getId()) { generateChanTempMsg(template, config, service); } + //妇女 + else if (serviceObj == ServiceObjEnums.FUNV.getId()) { + generateFunvTempMsg(template, config, service); + } } catch (Exception e) { logger.error("genernate templete error. [" + template.toString() + "]", e); continue; @@ -222,6 +221,165 @@ public class TempleteMsgGenerateWorker implements Runnable { } /** + * 妇女短信消息生成 + * @param template + * @param config + * @param service + */ + private void generateFunvTempMsg(SmsTemplateModel template, SmsConfigModel config, int service) { + //模板属于的医院id + String tempHid = template.getHospitalId(); + + //消息类型 + Integer smsType = template.getSmsType(); + + //发送时间 SendTimeEnums DT(0,"当天"),QYT(1,"前一天"),QLT(2,"前两天"),QST(3,"前三天"); + Integer sendTimeType = template.getSendTimeType(); + + Integer start = template.getStart(); + Integer end = template.getEnd(); + + Date startDate = DateUtils.getNewDate(new Date(), -end, "天", sendTimeType); + Date endDate = DateUtils.getNewDate(new Date(), -start, "天", sendTimeType); + startDate = DateUtils.formatDate(startDate, DateUtils.Y_M_D); + endDate = DateUtils.formatDate(endDate, DateUtils.Y_M_D); + + //发送短信集合 + MsgListRequest list = new MsgListRequest(); + List messages = new ArrayList<>(); + //婚检提醒 + if (smsType == SmsServiceEnums.HJTX.getId()) { + + + PremaritalCheckupQuery query = new PremaritalCheckupQuery(); + query.setYn(YnEnums.YES.getId()); + query.setHospitalId(tempHid); + + + startDate = DateUtils.formatDate(startDate, DateUtils.Y_M_D); + endDate = DateUtils.formatDate(endDate, DateUtils.Y_M_D); + + query.setPremaritalUpTimeStart(startDate); + query.setPremaritalUpTimeEnd(endDate); + + List checkupList = premaritalCheckupService.queryPremaritalCheckup(query); + + if (CollectionUtils.isNotEmpty(checkupList)) + { + for (PremaritalCheckup checkup: checkupList){ + ResidentsArchiveModel model = residentsArchiveService.getResident(checkup.getParentId()); + if (model != null) + { + addFunvMessages(template, config, service, messages,model.getId(), checkup.getHunJianDoctor(), model.getPhone()); + } + } + } + } + //叶酸提醒 + else if (smsType == SmsServiceEnums.YSTX.getId()) { + //发送短信集合 + + FolviteQuery folviteQuery = new FolviteQuery(); + folviteQuery.setDrawTimeStartDate(startDate); + folviteQuery.setDrawTimeEndDate(DateUtil.getDayLastSecond(endDate)); + //未结束孕辰 + folviteQuery.setIspregnancy(0); + folviteQuery.setHospitalId(tempHid); + List recordModels = folviteMapper.queryList(folviteQuery); + + if (CollectionUtils.isNotEmpty(recordModels)) + { + for (FolviteRecordModel checkup: recordModels){ + ResidentsArchiveModel model = residentsArchiveService.getResident(checkup.getWomanId()); + if (model != null) + { + addFunvMessages(template, config, service, messages,model.getId(), checkup.getOperationDoctor(), model.getPhone()); + } + } + } + } + //优生提醒 + else if (smsType == SmsServiceEnums.YQYSTX.getId()) + { + Query query = new Query(); + query.addCriteria(Criteria.where("hospitalId").is(tempHid)); + query.addCriteria(Criteria.where("fillDate").gte(startDate).lte(DateUtil.getDayLastSecond(endDate))); + List preEugenicsBaseModels = mongoTemplate.find(query, PreEugenicsBaseModel.class); + if (CollectionUtils.isNotEmpty(preEugenicsBaseModels)) + { + for (PreEugenicsBaseModel preEugenicsBaseModel : preEugenicsBaseModels) { + ResidentsArchiveQuery archiveQuery = new ResidentsArchiveQuery(); + archiveQuery.setYn(YnEnums.YES.getId()); + archiveQuery.setHospitalId(tempHid); + archiveQuery.setCertificateNum(preEugenicsBaseModel.getWifeCardNo()); + List hjCounts = residentsArchiveService.queryResident(archiveQuery); + if (CollectionUtils.isNotEmpty(hjCounts)) + { + addFunvMessages(template, config, service, messages,hjCounts.get(0).getId(), preEugenicsBaseModel.getDoctor(), preEugenicsBaseModel.getWifePhone()); + } + } + } + + } + //乳腺癌提醒 + else if (smsType == SmsServiceEnums.RXATX.getId()) + { + + startDate = DateUtils.formatDate(startDate, DateUtils.Y_M_D); + endDate = DateUtils.formatDate(endDate, DateUtils.Y_M_D); + + //查询条件 + CancerScreeningQuery query = new CancerScreeningQuery(); + query.setYn(YnEnums.YES.getId()); + query.setHospitalId(tempHid); + query.setSfZlrqStart(startDate); + query.setSfZlrqEnd(DateUtil.getDayLastSecond(endDate)); + + List cancerScreeningModels = cancerScreenService.queryCancerScreList(query); + if (CollectionUtils.isNotEmpty(cancerScreeningModels)) + { + for (CancerScreeningModel cs : cancerScreeningModels) { + ResidentsArchiveModel model = residentsArchiveService.getResident(cs.getResidentId()); + if (model != null) + { + addFunvMessages(template, config, service, messages,model.getId(), cs.getSfBlzd(), model.getPhone()); + } + } + } + + } + //宫颈癌提醒 + else if (smsType == SmsServiceEnums.GJATX.getId()) + { + + startDate = DateUtils.formatDate(startDate, DateUtils.Y_M_D); + endDate = DateUtils.formatDate(endDate, DateUtils.Y_M_D); + + //查询条件 + Query query = new Query(); + query.addCriteria(Criteria.where("hospitalId").is(tempHid)); + query.addCriteria(Criteria.where("created").gte(startDate) + .lte(DateUtil.getDayLastSecond(endDate))); + + List cervicalCancerModels = mongoTemplate.find(query, CervicalCancerModel.class); + if (CollectionUtils.isNotEmpty(cervicalCancerModels)) + { + for (CervicalCancerModel cs : cervicalCancerModels) { + ResidentsArchiveModel model = residentsArchiveService.getResident(cs.getParentId()); + if (model != null) + { + addFunvMessages(template, config, service, messages,model.getId(), cs.getCreateUser(), model.getPhone()); + } + } + } + } + + list.setMessages(messages); + HelperUtils.sendMsg(list); + + } + + /** * 生成儿童模板消息 * * @param template @@ -798,7 +956,7 @@ public class TempleteMsgGenerateWorker implements Runnable { //短信前缀 String messagePrefix = baseService.getSmsPrefix(config, model.getBuildDoctor(), ServiceObjEnums.BABYOBJ.getId()); - messagePrefix = baseService.getBabySmsPrefix(config,model.getId(),messagePrefix,template); + messagePrefix = baseService.getBabySmsPrefix(config, model.getId(), messagePrefix, template); String messageContent = "【" + messagePrefix + "】" + template.getContent(); messageContent = HelperUtils.replaceName(model.getName(), messageContent); String itemName = "儿童保健"; @@ -811,6 +969,37 @@ public class TempleteMsgGenerateWorker implements Runnable { messages.add(request); } + + + private void addFunvMessages(SmsTemplateModel template, + SmsConfigModel config, + Integer service, + List messages, + String id,String doctorId,String phone) { + + if (HelperUtils.isExistMsg(id, template.getId())) { + return; + } + + + String serDoc = baseService.getDoctorName(doctorId); + + //短信前缀 + String messagePrefix = baseService.getSmsPrefix(config, doctorId, ServiceObjEnums.FUNV.getId()); + //messagePrefix = baseService.getBabySmsPrefix(config, model.getId(), messagePrefix, template); + String messageContent = "【" + messagePrefix + "】" + template.getContent(); + + String itemName = "妇女保健"; + String date = DateUtil.getyyyy_MM_dd(new Date()); + + MsgRequest request = HelperUtils.getMessageRequest1(template.getSendTime(), messageContent, phone, + ServiceObjEnums.FUNV.getId(), template.getSmsType(), + template.getHospitalId(), template.getId(), id,serDoc, date, itemName, + WxTempleteIdEnums.YI_SHENG_ZHI_DAO.getId(), service); + + messages.add(request); + } + /** * 儿童天数 - 儿童提醒消息 * -- 1.8.3.1