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 8778974..333638c 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 @@ -54,7 +54,8 @@ public enum SmsServiceEnums { TZTX(40,"体重测量提醒",21,"1"), XTTX(41,"血糖测量提醒",21,"1"), XYTX(42,"血压测量提醒",21,"1"), - NOSERVICE(43,"无服务",18,"0,1,2,3,4"); + NOSERVICE(43,"无服务",18,"0,1,2,3,4"), + CHWJTX(44,"产后问卷提醒",4,"3"); private SmsServiceEnums(int id,String name,int pid,String serviceObj){ this.id = id; diff --git a/platform-dal/src/main/java/com/lyms/platform/beans/SerialIdEnum.java b/platform-dal/src/main/java/com/lyms/platform/beans/SerialIdEnum.java index 2e45d70..b924e0c 100644 --- a/platform-dal/src/main/java/com/lyms/platform/beans/SerialIdEnum.java +++ b/platform-dal/src/main/java/com/lyms/platform/beans/SerialIdEnum.java @@ -101,7 +101,8 @@ public enum SerialIdEnum { BabyNeuroPsychologicalModel("BabyNeuroPsychologicalModel", -7902299259467567060L), ExerciseAppraisalModel("ExerciseAppraisalModel", 993491777685035796L), AfterVisitPelvicFloorModel("AfterVisitPelvicFloorModel", -534393866388205106L), - BabyAppointmentBuildModel("BabyAppointmentBuildModel",356770820236242411L) + BabyAppointmentBuildModel("BabyAppointmentBuildModel",356770820236242411L), + MatdeliverFollowPushModel("MatdeliverFollowPushModel", -5956731779920504355L) ; diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/MatdeliverFollowPushModel.java b/platform-dal/src/main/java/com/lyms/platform/pojo/MatdeliverFollowPushModel.java new file mode 100644 index 0000000..e442627 --- /dev/null +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/MatdeliverFollowPushModel.java @@ -0,0 +1,183 @@ +package com.lyms.platform.pojo; + +import com.lyms.platform.beans.SerialIdEnum; +import com.lyms.platform.common.result.BaseModel; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; + +/** + * 产后追访推送记录 + * @Author dongqin + * @Description + * @Date 11:32 2019/8/23 + */ +@Document(collection = "lyms_matdeliver_follow_push") +public class MatdeliverFollowPushModel extends BaseModel { + + // + private static final long serialVersionUID = SerialIdEnum.MatdeliverFollowPushModel.getCid(); + + /** + * 主键 + */ + private String id; + + /** + * 姓名 + */ + private String username; + + /** + * 生日 + */ + private Date birth; + + /** + * 证件号 + */ + private String cardNo; + + /** + * 就诊卡号 + */ + private String vcCardNo; + + /** + * 手机号 + */ + private String phone; + + /** + * 分娩时间 + */ + private Date dueDate; + + /** + * 发送日期 + */ + private Date sendTime; + + /** + * 填写日期 + */ + private Date writeTime; + + /** + * 确认时间 + */ + private Date confirmTime; + + /** + * 确认医生 + */ + private String confirmDoctor; + + private Date createTime; + + private Date updateTime; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public Date getBirth() { + return birth; + } + + public void setBirth(Date birth) { + this.birth = birth; + } + + public String getCardNo() { + return cardNo; + } + + public void setCardNo(String cardNo) { + this.cardNo = cardNo; + } + + public String getVcCardNo() { + return vcCardNo; + } + + public void setVcCardNo(String vcCardNo) { + this.vcCardNo = vcCardNo; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public Date getDueDate() { + return dueDate; + } + + public void setDueDate(Date dueDate) { + this.dueDate = dueDate; + } + + public Date getSendTime() { + return sendTime; + } + + public void setSendTime(Date sendTime) { + this.sendTime = sendTime; + } + + public Date getWriteTime() { + return writeTime; + } + + public void setWriteTime(Date writeTime) { + this.writeTime = writeTime; + } + + public Date getConfirmTime() { + return confirmTime; + } + + public void setConfirmTime(Date confirmTime) { + this.confirmTime = confirmTime; + } + + public String getConfirmDoctor() { + return confirmDoctor; + } + + public void setConfirmDoctor(String confirmDoctor) { + this.confirmDoctor = confirmDoctor; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MatdeliverFollowController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MatdeliverFollowController.java index 7c78482..54328ef 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MatdeliverFollowController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MatdeliverFollowController.java @@ -8,6 +8,7 @@ import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.operate.web.facade.MatdeliverFollowFacade; import com.lyms.platform.operate.web.request.MatDeliverFollowAddRequest; import com.lyms.platform.operate.web.request.MatdeliverFollowRequest; +import com.lyms.platform.operate.web.request.QuestionnaireListRequest; import com.lyms.platform.operate.web.request.QuestionnairePushRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -147,4 +148,18 @@ public class MatdeliverFollowController extends BaseController { return matdeliverFollowFacade.addQuestionnaire(param); } + + /** + * 推送问卷 -- 列表 + * + * @param param + * @return + */ + @ResponseBody + @RequestMapping(value = "/questionnaire/list", method = RequestMethod.POST) + public BaseResponse questionnaireList(@RequestBody @Valid QuestionnaireListRequest param, HttpServletRequest request) { + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + return matdeliverFollowFacade.questionnaireList(param, loginState.getId()); + } + } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatdeliverFollowFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatdeliverFollowFacade.java index e953d91..d87c652 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatdeliverFollowFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatdeliverFollowFacade.java @@ -11,15 +11,14 @@ import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.common.utils.BeanUtils; import com.lyms.platform.common.utils.DateUtil; -import com.lyms.platform.common.utils.ExcelUtil; import com.lyms.platform.operate.web.request.MatDeliverFollowAddRequest; import com.lyms.platform.operate.web.request.MatdeliverFollowRequest; +import com.lyms.platform.operate.web.request.QuestionnaireListRequest; import com.lyms.platform.operate.web.request.QuestionnairePushRequest; import com.lyms.platform.operate.web.result.MatdeliverFollowListResult; import com.lyms.platform.operate.web.result.MatdeliverFollowResult; import com.lyms.platform.operate.web.service.ITrackDownService; import com.lyms.platform.operate.web.utils.CollectionUtils; -import com.lyms.platform.operate.web.utils.MessageCenterService; import com.lyms.platform.operate.web.utils.ResponseUtil; import com.lyms.platform.operate.web.utils.UnitConstants; import com.lyms.platform.permission.model.Organization; @@ -39,8 +38,8 @@ import jxl.write.biff.RowsExceededException; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; -import org.apache.poi.ss.util.CellRangeAddress; import org.springframework.beans.factory.annotation.Autowired; +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; @@ -87,6 +86,9 @@ public class MatdeliverFollowFacade { @Autowired protected MongoTemplate mongoTemplate; + @Autowired + private SmsConfigFacade smsConfigFacade; + public BaseResponse matdeliverFollowMakeInit(Integer id) { Map map = new HashMap(); //是否结案 @@ -705,6 +707,21 @@ public class MatdeliverFollowFacade { BaseResponse baseResponse = addOrUpdateMatDeliverFollow(param, userId); String followModelId = (String) baseResponse.getObject(); + // 添加到产后推送表中 + MatdeliverFollowPushModel pushModel = new MatdeliverFollowPushModel(); + MaternalDeliverModel deliverModel = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(deliverId)), MaternalDeliverModel.class); + if (deliverModel != null) { + Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(deliverModel.getParentId())), Patients.class); + if (patients != null) { + pushModel.setBirth(patients.getBirth()); + pushModel.setCardNo(patients.getCardNo()); + pushModel.setCreateTime(new Date()); + pushModel.setUsername(patients.getUsername()); + pushModel.setDueDate(DateUtil.parseYMD(deliverModel.getDueDate())); + } + } + mongoTemplate.insert(pushModel); + // 推送到指定用户中 Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(parentid)), Patients.class); @@ -714,8 +731,15 @@ public class MatdeliverFollowFacade { List msgRequests = new ArrayList<>(); // 1 推送服务, 2 推送和短信服务 3短信服务 MsgRequest request = new MsgRequest(); - request.setFirst(String.format("%s 女士您好!您身边的 %s,%s医生温馨提醒," + - "请及时填写产后健康情况记录表,便于医生掌握您产后情况更好的守护您的健康。", patients.getUsername(), organization.getName(), users.getName())); + + SmsConfigModel model = mongoTemplate.findOne(Query.query(Criteria.where("hospitalId").is(hospitalId)), SmsConfigModel.class); + String messagePrefix = ""; + if (model != null) { + messagePrefix = smsConfigFacade.getSmsPrefix(model, userId.toString()); + } + request.setFirst(String.format("【%s】为了更好的掌握您产后健康情况,保障新产妇生命安全,请当天将您的身心状态反馈给医生,以便后续健康指导。\n" + + "请您依据实际情况进行产后信息反馈以免影响医生判断。点击“详情”按钮,进入问卷反馈,提交健康信息,\n" + + "您的医生将用心分析各项信息为您提供必要的指导帮助或上门访视", messagePrefix)); // 产妇 request.setObjType(ServiceObjEnums.CHANOBJ.getId()); request.setPhone(phone); @@ -730,8 +754,8 @@ public class MatdeliverFollowFacade { request.setTypeId(0); - request.setKeyword1(""); - request.setKeyword2(""); + request.setKeyword1(users.getName()); + request.setKeyword2(DateUtil.getyyyy_MM_dd(new Date())); // 参数传递 医院id + 产后访视主键 JSONObject jsonObject = new JSONObject(); @@ -740,12 +764,12 @@ public class MatdeliverFollowFacade { request.setRemark(jsonObject.toJSONString()); request.setCreated(DateUtil.getyyyy_MM_dd_hms(new Date())); - // todo 微信模板ID - request.setWxTempId(WxTempleteIdEnums.FU_WU_DING_GOU_TX.getId()); + request.setWxTempId(WxTempleteIdEnums.YI_SHENG_ZHI_DAO.getId()); msgRequests.add(request); msgListRequest.setMessages(msgRequests); - MessageCenterService.saveMsgCenter(msgListRequest); + smsConfigFacade.saveMsg(msgRequests, hospitalId); + //MessageCenterService.saveMsgCenter(msgListRequest); } BaseResponse baseResponse = new BaseResponse(); @@ -767,13 +791,97 @@ public class MatdeliverFollowFacade { Map map = BeanUtils.objectToObjectMap(param); Set> entries = map.entrySet(); for (Map.Entry entry : entries) { - update.set(entry.getKey(), entry.getValue()); + Object entryValue = entry.getValue(); + if (entryValue != null && !"".equals(entryValue.toString())) { + update.set(entry.getKey(), entryValue.toString()); + } + } + Query query = Query.query(Criteria.where("id").is(id)); + mongoTemplate.updateFirst(query, update, MatdeliverFollowModel.class); + + MatdeliverFollowModel model = mongoTemplate.findOne(query, MatdeliverFollowModel.class); + if (model != null) { + MaternalDeliverModel deliverModel = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(model.getDeliverId())), MaternalDeliverModel.class); + } - mongoTemplate.updateFirst(Query.query(Criteria.where("_id").is(id)), update, MatdeliverFollowModel.class); + return baseResponse; } baseResponse.setErrorcode(ErrorCodeConstants.PARAMETER_ERROR); baseResponse.setErrormsg("参数缺失"); return baseResponse; } + + /** + * 推送问卷 -- 列表 + * + * @param param + * @param userId + * @return + */ + public BaseResponse questionnaireList(QuestionnaireListRequest param, Integer userId) { + String hospitalId = autoMatchFacade.getHospitalId(userId); + + Query query = new Query(); + query.addCriteria(Criteria.where("yn").is(YnEnums.YES.getId()).and("hospitalId").is(hospitalId)); + + // 查询号 + String queryNo = param.getQueryNo(); + if (StringUtils.isNotEmpty(queryNo)) { + query.addCriteria(new Criteria().orOperator(Criteria.where("phone").is(queryNo)).orOperator(Criteria.where("username").is(queryNo)). + orOperator(Criteria.where("cardNo").is(queryNo)).orOperator(Criteria.where("vcCardNo").is(queryNo))); + } + + // 分娩时间 + String startFmTime = param.getStartFmTime(); + String endFmTime = param.getEndFmTime(); + if (StringUtils.isNotEmpty(startFmTime) && StringUtils.isNotEmpty(endFmTime)) { + Date start = DateUtil.parseYMD(startFmTime); + Date end = DateUtil.parseYMD(endFmTime); + query.addCriteria(Criteria.where("dueDate").gte(start).lte(end)); + } + + // 发送时间 + String startSendTime = param.getStartSendTime(); + String endSendTime = param.getEndSendTime(); + if (StringUtils.isNotEmpty(startSendTime) && StringUtils.isNotEmpty(endSendTime)) { + Date start = DateUtil.parseYMD(startSendTime); + Date end = DateUtil.parseYMD(endSendTime); + query.addCriteria(Criteria.where("sendTime").gte(start).lte(end)); + } + + // 填写时间 + String startWriteTime = param.getStartWriteTime(); + String endWriteTime = param.getEndWriteTime(); + if (StringUtils.isNotEmpty(startWriteTime) && StringUtils.isNotEmpty(endWriteTime)) { + Date start = DateUtil.parseYMD(startWriteTime); + Date end = DateUtil.parseYMD(endWriteTime); + query.addCriteria(Criteria.where("writeTime").gte(start).lte(end)); + } + + // 确认时间 + String startConfirmTime = param.getStartConfirmTime(); + String endConfirmTime = param.getEndConfirmTime(); + if (StringUtils.isNotEmpty(startConfirmTime) && StringUtils.isNotEmpty(endConfirmTime)) { + Date start = DateUtil.parseYMD(startConfirmTime); + Date end = DateUtil.parseYMD(endConfirmTime); + query.addCriteria(Criteria.where("confirmTime").gte(start).lte(end)); + } + + String confirmDoctor = param.getConfirmDoctor(); + if (StringUtils.isNotEmpty(confirmDoctor)) { + query.addCriteria(Criteria.where("confirmDoctor").is(confirmDoctor)); + } + + long count = mongoTemplate.count(query, MatdeliverFollowPushModel.class); + param.mysqlBuild((int) count); + query.skip(param.getOffset()).limit(param.getLimit()); + query.with(new Sort(new Sort.Order(Sort.Direction.DESC, "createTime"))); + + List models = mongoTemplate.find(query, MatdeliverFollowPushModel.class); + BaseListResponse baseListResponse = new BaseListResponse(); + baseListResponse.setPageInfo(param.getPageInfo()); + baseListResponse.setData(models); + return baseListResponse; + } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/QuestionnaireListRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/QuestionnaireListRequest.java new file mode 100644 index 0000000..7d851f2 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/QuestionnaireListRequest.java @@ -0,0 +1,136 @@ +package com.lyms.platform.operate.web.request; + +import com.lyms.platform.common.dao.BaseQuery; + +import javax.validation.constraints.Size; +import java.io.Serializable; + +/** + * + * @Author dongqin + * @Description + * @Date 9:30 2019/8/23 + */ +public class QuestionnaireListRequest extends BaseQuery implements Serializable { + + private static final long serialVersionUID = 3301799673497645308L; + + /** + * 查询号 + */ + @Size(max = 64) + private String queryNo; + + /** + * 起止分娩时间 + */ + private String startFmTime; + + private String endFmTime; + + /** + * 起止发送时间 + */ + private String startSendTime; + + private String endSendTime; + + /** + * 起止填入时间 + */ + private String startWriteTime; + + private String endWriteTime; + + /** + * 起止确认时间 + */ + private String startConfirmTime; + + private String endConfirmTime; + + /** + * 确认医生 + */ + private String confirmDoctor; + + public String getQueryNo() { + return queryNo; + } + + public void setQueryNo(String queryNo) { + this.queryNo = queryNo; + } + + public String getStartFmTime() { + return startFmTime; + } + + public void setStartFmTime(String startFmTime) { + this.startFmTime = startFmTime; + } + + public String getEndFmTime() { + return endFmTime; + } + + public void setEndFmTime(String endFmTime) { + this.endFmTime = endFmTime; + } + + public String getStartSendTime() { + return startSendTime; + } + + public void setStartSendTime(String startSendTime) { + this.startSendTime = startSendTime; + } + + public String getEndSendTime() { + return endSendTime; + } + + public void setEndSendTime(String endSendTime) { + this.endSendTime = endSendTime; + } + + public String getStartWriteTime() { + return startWriteTime; + } + + public void setStartWriteTime(String startWriteTime) { + this.startWriteTime = startWriteTime; + } + + public String getEndWriteTime() { + return endWriteTime; + } + + public void setEndWriteTime(String endWriteTime) { + this.endWriteTime = endWriteTime; + } + + public String getStartConfirmTime() { + return startConfirmTime; + } + + public void setStartConfirmTime(String startConfirmTime) { + this.startConfirmTime = startConfirmTime; + } + + public String getEndConfirmTime() { + return endConfirmTime; + } + + public void setEndConfirmTime(String endConfirmTime) { + this.endConfirmTime = endConfirmTime; + } + + public String getConfirmDoctor() { + return confirmDoctor; + } + + public void setConfirmDoctor(String confirmDoctor) { + this.confirmDoctor = confirmDoctor; + } +}