Commit a8d93afa4343785a00b69f718694321f7c84aa79

Authored by dongqin
1 parent 930effaa3e

产后推送

Showing 6 changed files with 458 additions and 14 deletions

platform-common/src/main/java/com/lyms/platform/common/enums/SmsServiceEnums.java View file @ a8d93af
... ... @@ -54,7 +54,8 @@
54 54 TZTX(40,"体重测量提醒",21,"1"),
55 55 XTTX(41,"血糖测量提醒",21,"1"),
56 56 XYTX(42,"血压测量提醒",21,"1"),
57   - NOSERVICE(43,"无服务",18,"0,1,2,3,4");
  57 + NOSERVICE(43,"无服务",18,"0,1,2,3,4"),
  58 + CHWJTX(44,"产后问卷提醒",4,"3");
58 59  
59 60 private SmsServiceEnums(int id,String name,int pid,String serviceObj){
60 61 this.id = id;
platform-dal/src/main/java/com/lyms/platform/beans/SerialIdEnum.java View file @ a8d93af
... ... @@ -101,7 +101,8 @@
101 101 BabyNeuroPsychologicalModel("BabyNeuroPsychologicalModel", -7902299259467567060L),
102 102 ExerciseAppraisalModel("ExerciseAppraisalModel", 993491777685035796L),
103 103 AfterVisitPelvicFloorModel("AfterVisitPelvicFloorModel", -534393866388205106L),
104   - BabyAppointmentBuildModel("BabyAppointmentBuildModel",356770820236242411L)
  104 + BabyAppointmentBuildModel("BabyAppointmentBuildModel",356770820236242411L),
  105 + MatdeliverFollowPushModel("MatdeliverFollowPushModel", -5956731779920504355L)
105 106  
106 107 ;
107 108  
platform-dal/src/main/java/com/lyms/platform/pojo/MatdeliverFollowPushModel.java View file @ a8d93af
  1 +package com.lyms.platform.pojo;
  2 +
  3 +import com.lyms.platform.beans.SerialIdEnum;
  4 +import com.lyms.platform.common.result.BaseModel;
  5 +import org.springframework.data.mongodb.core.mapping.Document;
  6 +
  7 +import java.util.Date;
  8 +
  9 +/**
  10 + * 产后追访推送记录
  11 + * @Author dongqin
  12 + * @Description
  13 + * @Date 11:32 2019/8/23
  14 + */
  15 +@Document(collection = "lyms_matdeliver_follow_push")
  16 +public class MatdeliverFollowPushModel extends BaseModel {
  17 +
  18 + //
  19 + private static final long serialVersionUID = SerialIdEnum.MatdeliverFollowPushModel.getCid();
  20 +
  21 + /**
  22 + * 主键
  23 + */
  24 + private String id;
  25 +
  26 + /**
  27 + * 姓名
  28 + */
  29 + private String username;
  30 +
  31 + /**
  32 + * 生日
  33 + */
  34 + private Date birth;
  35 +
  36 + /**
  37 + * 证件号
  38 + */
  39 + private String cardNo;
  40 +
  41 + /**
  42 + * 就诊卡号
  43 + */
  44 + private String vcCardNo;
  45 +
  46 + /**
  47 + * 手机号
  48 + */
  49 + private String phone;
  50 +
  51 + /**
  52 + * 分娩时间
  53 + */
  54 + private Date dueDate;
  55 +
  56 + /**
  57 + * 发送日期
  58 + */
  59 + private Date sendTime;
  60 +
  61 + /**
  62 + * 填写日期
  63 + */
  64 + private Date writeTime;
  65 +
  66 + /**
  67 + * 确认时间
  68 + */
  69 + private Date confirmTime;
  70 +
  71 + /**
  72 + * 确认医生
  73 + */
  74 + private String confirmDoctor;
  75 +
  76 + private Date createTime;
  77 +
  78 + private Date updateTime;
  79 +
  80 + public String getId() {
  81 + return id;
  82 + }
  83 +
  84 + public void setId(String id) {
  85 + this.id = id;
  86 + }
  87 +
  88 + public String getUsername() {
  89 + return username;
  90 + }
  91 +
  92 + public void setUsername(String username) {
  93 + this.username = username;
  94 + }
  95 +
  96 + public Date getBirth() {
  97 + return birth;
  98 + }
  99 +
  100 + public void setBirth(Date birth) {
  101 + this.birth = birth;
  102 + }
  103 +
  104 + public String getCardNo() {
  105 + return cardNo;
  106 + }
  107 +
  108 + public void setCardNo(String cardNo) {
  109 + this.cardNo = cardNo;
  110 + }
  111 +
  112 + public String getVcCardNo() {
  113 + return vcCardNo;
  114 + }
  115 +
  116 + public void setVcCardNo(String vcCardNo) {
  117 + this.vcCardNo = vcCardNo;
  118 + }
  119 +
  120 + public String getPhone() {
  121 + return phone;
  122 + }
  123 +
  124 + public void setPhone(String phone) {
  125 + this.phone = phone;
  126 + }
  127 +
  128 + public Date getDueDate() {
  129 + return dueDate;
  130 + }
  131 +
  132 + public void setDueDate(Date dueDate) {
  133 + this.dueDate = dueDate;
  134 + }
  135 +
  136 + public Date getSendTime() {
  137 + return sendTime;
  138 + }
  139 +
  140 + public void setSendTime(Date sendTime) {
  141 + this.sendTime = sendTime;
  142 + }
  143 +
  144 + public Date getWriteTime() {
  145 + return writeTime;
  146 + }
  147 +
  148 + public void setWriteTime(Date writeTime) {
  149 + this.writeTime = writeTime;
  150 + }
  151 +
  152 + public Date getConfirmTime() {
  153 + return confirmTime;
  154 + }
  155 +
  156 + public void setConfirmTime(Date confirmTime) {
  157 + this.confirmTime = confirmTime;
  158 + }
  159 +
  160 + public String getConfirmDoctor() {
  161 + return confirmDoctor;
  162 + }
  163 +
  164 + public void setConfirmDoctor(String confirmDoctor) {
  165 + this.confirmDoctor = confirmDoctor;
  166 + }
  167 +
  168 + public Date getCreateTime() {
  169 + return createTime;
  170 + }
  171 +
  172 + public void setCreateTime(Date createTime) {
  173 + this.createTime = createTime;
  174 + }
  175 +
  176 + public Date getUpdateTime() {
  177 + return updateTime;
  178 + }
  179 +
  180 + public void setUpdateTime(Date updateTime) {
  181 + this.updateTime = updateTime;
  182 + }
  183 +}
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MatdeliverFollowController.java View file @ a8d93af
... ... @@ -8,6 +8,7 @@
8 8 import com.lyms.platform.operate.web.facade.MatdeliverFollowFacade;
9 9 import com.lyms.platform.operate.web.request.MatDeliverFollowAddRequest;
10 10 import com.lyms.platform.operate.web.request.MatdeliverFollowRequest;
  11 +import com.lyms.platform.operate.web.request.QuestionnaireListRequest;
11 12 import com.lyms.platform.operate.web.request.QuestionnairePushRequest;
12 13 import org.springframework.beans.factory.annotation.Autowired;
13 14 import org.springframework.stereotype.Controller;
... ... @@ -145,6 +146,20 @@
145 146 @RequestMapping(value = "/questionnaire/upload", method = RequestMethod.POST)
146 147 public BaseResponse addQuestionnaire(@RequestBody @Valid QuestionnairePushRequest param) {
147 148 return matdeliverFollowFacade.addQuestionnaire(param);
  149 + }
  150 +
  151 +
  152 + /**
  153 + * 推送问卷 -- 列表
  154 + *
  155 + * @param param
  156 + * @return
  157 + */
  158 + @ResponseBody
  159 + @RequestMapping(value = "/questionnaire/list", method = RequestMethod.POST)
  160 + public BaseResponse questionnaireList(@RequestBody @Valid QuestionnaireListRequest param, HttpServletRequest request) {
  161 + LoginContext loginState = (LoginContext) request.getAttribute("loginContext");
  162 + return matdeliverFollowFacade.questionnaireList(param, loginState.getId());
148 163 }
149 164  
150 165 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatdeliverFollowFacade.java View file @ a8d93af
... ... @@ -11,15 +11,14 @@
11 11 import com.lyms.platform.common.result.BaseResponse;
12 12 import com.lyms.platform.common.utils.BeanUtils;
13 13 import com.lyms.platform.common.utils.DateUtil;
14   -import com.lyms.platform.common.utils.ExcelUtil;
15 14 import com.lyms.platform.operate.web.request.MatDeliverFollowAddRequest;
16 15 import com.lyms.platform.operate.web.request.MatdeliverFollowRequest;
  16 +import com.lyms.platform.operate.web.request.QuestionnaireListRequest;
17 17 import com.lyms.platform.operate.web.request.QuestionnairePushRequest;
18 18 import com.lyms.platform.operate.web.result.MatdeliverFollowListResult;
19 19 import com.lyms.platform.operate.web.result.MatdeliverFollowResult;
20 20 import com.lyms.platform.operate.web.service.ITrackDownService;
21 21 import com.lyms.platform.operate.web.utils.CollectionUtils;
22   -import com.lyms.platform.operate.web.utils.MessageCenterService;
23 22 import com.lyms.platform.operate.web.utils.ResponseUtil;
24 23 import com.lyms.platform.operate.web.utils.UnitConstants;
25 24 import com.lyms.platform.permission.model.Organization;
26 25  
... ... @@ -39,8 +38,8 @@
39 38 import org.apache.commons.collections.MapUtils;
40 39 import org.apache.commons.lang.StringUtils;
41 40 import org.apache.log4j.Logger;
42   -import org.apache.poi.ss.util.CellRangeAddress;
43 41 import org.springframework.beans.factory.annotation.Autowired;
  42 +import org.springframework.data.domain.Sort;
44 43 import org.springframework.data.mongodb.core.MongoTemplate;
45 44 import org.springframework.data.mongodb.core.query.Criteria;
46 45 import org.springframework.data.mongodb.core.query.Query;
... ... @@ -87,6 +86,9 @@
87 86 @Autowired
88 87 protected MongoTemplate mongoTemplate;
89 88  
  89 + @Autowired
  90 + private SmsConfigFacade smsConfigFacade;
  91 +
90 92 public BaseResponse matdeliverFollowMakeInit(Integer id) {
91 93 Map map = new HashMap();
92 94 //是否结案
93 95  
... ... @@ -705,7 +707,22 @@
705 707 BaseResponse baseResponse = addOrUpdateMatDeliverFollow(param, userId);
706 708 String followModelId = (String) baseResponse.getObject();
707 709  
  710 + // 添加到产后推送表中
  711 + MatdeliverFollowPushModel pushModel = new MatdeliverFollowPushModel();
  712 + MaternalDeliverModel deliverModel = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(deliverId)), MaternalDeliverModel.class);
  713 + if (deliverModel != null) {
  714 + Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(deliverModel.getParentId())), Patients.class);
  715 + if (patients != null) {
  716 + pushModel.setBirth(patients.getBirth());
  717 + pushModel.setCardNo(patients.getCardNo());
  718 + pushModel.setCreateTime(new Date());
  719 + pushModel.setUsername(patients.getUsername());
  720 + pushModel.setDueDate(DateUtil.parseYMD(deliverModel.getDueDate()));
  721 + }
  722 + }
  723 + mongoTemplate.insert(pushModel);
708 724  
  725 +
709 726 // 推送到指定用户中
710 727 Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(parentid)), Patients.class);
711 728 Organization organization = organizationService.getOrganization(Integer.parseInt(hospitalId));
... ... @@ -714,8 +731,15 @@
714 731 List<MsgRequest> msgRequests = new ArrayList<>();
715 732 // 1 推送服务, 2 推送和短信服务 3短信服务
716 733 MsgRequest request = new MsgRequest();
717   - request.setFirst(String.format("%s 女士您好!您身边的 %s,%s医生温馨提醒," +
718   - "请及时填写产后健康情况记录表,便于医生掌握您产后情况更好的守护您的健康。", patients.getUsername(), organization.getName(), users.getName()));
  734 +
  735 + SmsConfigModel model = mongoTemplate.findOne(Query.query(Criteria.where("hospitalId").is(hospitalId)), SmsConfigModel.class);
  736 + String messagePrefix = "";
  737 + if (model != null) {
  738 + messagePrefix = smsConfigFacade.getSmsPrefix(model, userId.toString());
  739 + }
  740 + request.setFirst(String.format("【%s】为了更好的掌握您产后健康情况,保障新产妇生命安全,请当天将您的身心状态反馈给医生,以便后续健康指导。\n" +
  741 + "请您依据实际情况进行产后信息反馈以免影响医生判断。点击“详情”按钮,进入问卷反馈,提交健康信息,\n" +
  742 + "您的医生将用心分析各项信息为您提供必要的指导帮助或上门访视", messagePrefix));
719 743 // 产妇
720 744 request.setObjType(ServiceObjEnums.CHANOBJ.getId());
721 745 request.setPhone(phone);
... ... @@ -730,8 +754,8 @@
730 754  
731 755 request.setTypeId(0);
732 756  
733   - request.setKeyword1("");
734   - request.setKeyword2("");
  757 + request.setKeyword1(users.getName());
  758 + request.setKeyword2(DateUtil.getyyyy_MM_dd(new Date()));
735 759  
736 760 // 参数传递 医院id + 产后访视主键
737 761 JSONObject jsonObject = new JSONObject();
738 762  
... ... @@ -740,12 +764,12 @@
740 764 request.setRemark(jsonObject.toJSONString());
741 765 request.setCreated(DateUtil.getyyyy_MM_dd_hms(new Date()));
742 766  
743   - // todo 微信模板ID
744   - request.setWxTempId(WxTempleteIdEnums.FU_WU_DING_GOU_TX.getId());
  767 + request.setWxTempId(WxTempleteIdEnums.YI_SHENG_ZHI_DAO.getId());
745 768  
746 769 msgRequests.add(request);
747 770 msgListRequest.setMessages(msgRequests);
748   - MessageCenterService.saveMsgCenter(msgListRequest);
  771 + smsConfigFacade.saveMsg(msgRequests, hospitalId);
  772 + //MessageCenterService.saveMsgCenter(msgListRequest);
749 773 }
750 774  
751 775 BaseResponse baseResponse = new BaseResponse();
752 776  
753 777  
... ... @@ -767,14 +791,98 @@
767 791 Map<String, Object> map = BeanUtils.objectToObjectMap(param);
768 792 Set<Map.Entry<String, Object>> entries = map.entrySet();
769 793 for (Map.Entry<String, Object> entry : entries) {
770   - update.set(entry.getKey(), entry.getValue());
  794 + Object entryValue = entry.getValue();
  795 + if (entryValue != null && !"".equals(entryValue.toString())) {
  796 + update.set(entry.getKey(), entryValue.toString());
  797 + }
771 798 }
772   - mongoTemplate.updateFirst(Query.query(Criteria.where("_id").is(id)), update, MatdeliverFollowModel.class);
  799 + Query query = Query.query(Criteria.where("id").is(id));
  800 + mongoTemplate.updateFirst(query, update, MatdeliverFollowModel.class);
  801 +
  802 + MatdeliverFollowModel model = mongoTemplate.findOne(query, MatdeliverFollowModel.class);
  803 + if (model != null) {
  804 + MaternalDeliverModel deliverModel = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(model.getDeliverId())), MaternalDeliverModel.class);
  805 +
  806 + }
  807 +
773 808 return baseResponse;
774 809 }
775 810 baseResponse.setErrorcode(ErrorCodeConstants.PARAMETER_ERROR);
776 811 baseResponse.setErrormsg("参数缺失");
777 812 return baseResponse;
  813 + }
  814 +
  815 + /**
  816 + * 推送问卷 -- 列表
  817 + *
  818 + * @param param
  819 + * @param userId
  820 + * @return
  821 + */
  822 + public BaseResponse questionnaireList(QuestionnaireListRequest param, Integer userId) {
  823 + String hospitalId = autoMatchFacade.getHospitalId(userId);
  824 +
  825 + Query query = new Query();
  826 + query.addCriteria(Criteria.where("yn").is(YnEnums.YES.getId()).and("hospitalId").is(hospitalId));
  827 +
  828 + // 查询号
  829 + String queryNo = param.getQueryNo();
  830 + if (StringUtils.isNotEmpty(queryNo)) {
  831 + query.addCriteria(new Criteria().orOperator(Criteria.where("phone").is(queryNo)).orOperator(Criteria.where("username").is(queryNo)).
  832 + orOperator(Criteria.where("cardNo").is(queryNo)).orOperator(Criteria.where("vcCardNo").is(queryNo)));
  833 + }
  834 +
  835 + // 分娩时间
  836 + String startFmTime = param.getStartFmTime();
  837 + String endFmTime = param.getEndFmTime();
  838 + if (StringUtils.isNotEmpty(startFmTime) && StringUtils.isNotEmpty(endFmTime)) {
  839 + Date start = DateUtil.parseYMD(startFmTime);
  840 + Date end = DateUtil.parseYMD(endFmTime);
  841 + query.addCriteria(Criteria.where("dueDate").gte(start).lte(end));
  842 + }
  843 +
  844 + // 发送时间
  845 + String startSendTime = param.getStartSendTime();
  846 + String endSendTime = param.getEndSendTime();
  847 + if (StringUtils.isNotEmpty(startSendTime) && StringUtils.isNotEmpty(endSendTime)) {
  848 + Date start = DateUtil.parseYMD(startSendTime);
  849 + Date end = DateUtil.parseYMD(endSendTime);
  850 + query.addCriteria(Criteria.where("sendTime").gte(start).lte(end));
  851 + }
  852 +
  853 + // 填写时间
  854 + String startWriteTime = param.getStartWriteTime();
  855 + String endWriteTime = param.getEndWriteTime();
  856 + if (StringUtils.isNotEmpty(startWriteTime) && StringUtils.isNotEmpty(endWriteTime)) {
  857 + Date start = DateUtil.parseYMD(startWriteTime);
  858 + Date end = DateUtil.parseYMD(endWriteTime);
  859 + query.addCriteria(Criteria.where("writeTime").gte(start).lte(end));
  860 + }
  861 +
  862 + // 确认时间
  863 + String startConfirmTime = param.getStartConfirmTime();
  864 + String endConfirmTime = param.getEndConfirmTime();
  865 + if (StringUtils.isNotEmpty(startConfirmTime) && StringUtils.isNotEmpty(endConfirmTime)) {
  866 + Date start = DateUtil.parseYMD(startConfirmTime);
  867 + Date end = DateUtil.parseYMD(endConfirmTime);
  868 + query.addCriteria(Criteria.where("confirmTime").gte(start).lte(end));
  869 + }
  870 +
  871 + String confirmDoctor = param.getConfirmDoctor();
  872 + if (StringUtils.isNotEmpty(confirmDoctor)) {
  873 + query.addCriteria(Criteria.where("confirmDoctor").is(confirmDoctor));
  874 + }
  875 +
  876 + long count = mongoTemplate.count(query, MatdeliverFollowPushModel.class);
  877 + param.mysqlBuild((int) count);
  878 + query.skip(param.getOffset()).limit(param.getLimit());
  879 + query.with(new Sort(new Sort.Order(Sort.Direction.DESC, "createTime")));
  880 +
  881 + List<MatdeliverFollowPushModel> models = mongoTemplate.find(query, MatdeliverFollowPushModel.class);
  882 + BaseListResponse baseListResponse = new BaseListResponse();
  883 + baseListResponse.setPageInfo(param.getPageInfo());
  884 + baseListResponse.setData(models);
  885 + return baseListResponse;
778 886 }
779 887 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/QuestionnaireListRequest.java View file @ a8d93af
  1 +package com.lyms.platform.operate.web.request;
  2 +
  3 +import com.lyms.platform.common.dao.BaseQuery;
  4 +
  5 +import javax.validation.constraints.Size;
  6 +import java.io.Serializable;
  7 +
  8 +/**
  9 + *
  10 + * @Author dongqin
  11 + * @Description
  12 + * @Date 9:30 2019/8/23
  13 + */
  14 +public class QuestionnaireListRequest extends BaseQuery implements Serializable {
  15 +
  16 + private static final long serialVersionUID = 3301799673497645308L;
  17 +
  18 + /**
  19 + * 查询号
  20 + */
  21 + @Size(max = 64)
  22 + private String queryNo;
  23 +
  24 + /**
  25 + * 起止分娩时间
  26 + */
  27 + private String startFmTime;
  28 +
  29 + private String endFmTime;
  30 +
  31 + /**
  32 + * 起止发送时间
  33 + */
  34 + private String startSendTime;
  35 +
  36 + private String endSendTime;
  37 +
  38 + /**
  39 + * 起止填入时间
  40 + */
  41 + private String startWriteTime;
  42 +
  43 + private String endWriteTime;
  44 +
  45 + /**
  46 + * 起止确认时间
  47 + */
  48 + private String startConfirmTime;
  49 +
  50 + private String endConfirmTime;
  51 +
  52 + /**
  53 + * 确认医生
  54 + */
  55 + private String confirmDoctor;
  56 +
  57 + public String getQueryNo() {
  58 + return queryNo;
  59 + }
  60 +
  61 + public void setQueryNo(String queryNo) {
  62 + this.queryNo = queryNo;
  63 + }
  64 +
  65 + public String getStartFmTime() {
  66 + return startFmTime;
  67 + }
  68 +
  69 + public void setStartFmTime(String startFmTime) {
  70 + this.startFmTime = startFmTime;
  71 + }
  72 +
  73 + public String getEndFmTime() {
  74 + return endFmTime;
  75 + }
  76 +
  77 + public void setEndFmTime(String endFmTime) {
  78 + this.endFmTime = endFmTime;
  79 + }
  80 +
  81 + public String getStartSendTime() {
  82 + return startSendTime;
  83 + }
  84 +
  85 + public void setStartSendTime(String startSendTime) {
  86 + this.startSendTime = startSendTime;
  87 + }
  88 +
  89 + public String getEndSendTime() {
  90 + return endSendTime;
  91 + }
  92 +
  93 + public void setEndSendTime(String endSendTime) {
  94 + this.endSendTime = endSendTime;
  95 + }
  96 +
  97 + public String getStartWriteTime() {
  98 + return startWriteTime;
  99 + }
  100 +
  101 + public void setStartWriteTime(String startWriteTime) {
  102 + this.startWriteTime = startWriteTime;
  103 + }
  104 +
  105 + public String getEndWriteTime() {
  106 + return endWriteTime;
  107 + }
  108 +
  109 + public void setEndWriteTime(String endWriteTime) {
  110 + this.endWriteTime = endWriteTime;
  111 + }
  112 +
  113 + public String getStartConfirmTime() {
  114 + return startConfirmTime;
  115 + }
  116 +
  117 + public void setStartConfirmTime(String startConfirmTime) {
  118 + this.startConfirmTime = startConfirmTime;
  119 + }
  120 +
  121 + public String getEndConfirmTime() {
  122 + return endConfirmTime;
  123 + }
  124 +
  125 + public void setEndConfirmTime(String endConfirmTime) {
  126 + this.endConfirmTime = endConfirmTime;
  127 + }
  128 +
  129 + public String getConfirmDoctor() {
  130 + return confirmDoctor;
  131 + }
  132 +
  133 + public void setConfirmDoctor(String confirmDoctor) {
  134 + this.confirmDoctor = confirmDoctor;
  135 + }
  136 +}