Commit 75e6aa17a03bcc3bf6524df65b67512fa3b1530f

Authored by zhangchao
1 parent 0bb4ee5c03
Exists in dev

#fix:大同产科服务内容推送

Showing 6 changed files with 201 additions and 14 deletions

platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java View file @ 75e6aa1
... ... @@ -1975,7 +1975,17 @@
1975 1975 Date time = DateUtil.addDay(DateUtil.parseYMD(bookbuildingDate), -day);
1976 1976 return time;
1977 1977 }
1978   -
  1978 + /**
  1979 + * 对日期的【天】进行加/减
  1980 + *
  1981 + * @param date 日期
  1982 + * @param days 天数,负数为减
  1983 + * @return 加/减几天后的日期
  1984 + */
  1985 + public static Date addDateDays(Date date, int days) {
  1986 + DateTime dateTime = new DateTime(date);
  1987 + return dateTime.plusDays(days).toDate();
  1988 + }
1979 1989 public static void main(String[] args) {
1980 1990 String currentDueDate ="35周2天";
1981 1991 String []array= currentDueDate.split("周");
platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java View file @ 75e6aa1
... ... @@ -9,10 +9,7 @@
9 9 import org.apache.commons.collections.CollectionUtils;
10 10 import org.springframework.data.mongodb.core.query.Criteria;
11 11  
12   -import java.util.ArrayList;
13   -import java.util.Arrays;
14   -import java.util.Date;
15   -import java.util.List;
  12 +import java.util.*;
16 13  
17 14 /**
18 15 * 产妇模型定义
... ... @@ -429,6 +426,26 @@
429 426 private String currentAreaId;
430 427 private Integer isComplete;
431 428  
  429 + private String serviceTime;
  430 +
  431 + private Map<String,Date> mapTime;
  432 +
  433 + public String getServiceTime() {
  434 + return serviceTime;
  435 + }
  436 +
  437 + public void setServiceTime(String serviceTime) {
  438 + this.serviceTime = serviceTime;
  439 + }
  440 +
  441 + public Map<String, Date> getMapTime() {
  442 + return mapTime;
  443 + }
  444 +
  445 + public void setMapTime(Map<String, Date> mapTime) {
  446 + this.mapTime = mapTime;
  447 + }
  448 +
432 449 public String getBooksuifangDoctor() {
433 450 return booksuifangDoctor;
434 451 }
... ... @@ -1373,6 +1390,16 @@
1373 1390 c1 = Criteria.where("bookbuildingDate").lte(bookbuildingDateEnd);
1374 1391 }
1375 1392 }
  1393 +
  1394 + if (StringUtils.isNotEmpty(serviceTime)){
  1395 + MongoCondition mongoCondition = new MongoCondition("bookbuildingDate",mapTime.get("seven"),MongoOper.IS);
  1396 + MongoCondition condition2 = new MongoCondition("bookbuildingDate",mapTime.get("fourteen"),MongoOper.IS);
  1397 + MongoCondition condition3 = new MongoCondition("bookbuildingDate",mapTime.get("twenty"),MongoOper.IS);
  1398 + MongoCondition condition4 = new MongoCondition("bookbuildingDate",mapTime.get("twentyEight"),MongoOper.IS);
  1399 + condition=condition.orCondition(new MongoCondition[]{mongoCondition, condition2,condition3,condition4});
  1400 + }
  1401 +
  1402 +
1376 1403 if (null != gteModified && null != gteCreated) {
1377 1404 MongoCondition mongoCondition = new MongoCondition("modified", gteModified, MongoOper.GTE);
1378 1405 MongoCondition condition2 = new MongoCondition("created", gteCreated, MongoOper.GTE);
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PatientServiceController.java View file @ 75e6aa1
... ... @@ -152,11 +152,12 @@
152 152 patientsQuery.setCardNo(yxzhVO.getIdno());
153 153 patientsQuery.setName(yxzhVO.getName());
154 154 patientsQuery.setYn(YnEnums.YES.getId());
155   - patientsQuery.setType(1);
  155 + //patientsQuery.setType(1);
156 156 List<Patients> patientsList = patientsService.queryPatient(patientsQuery);
157 157 if(CollectionUtils.isEmpty(patientsList)){
158 158 baseResponse.setErrorcode(ErrorCodeConstants.DATA_EXIST);
159 159 baseResponse.setErrormsg("档案信息不存在,请核实");
  160 + System.out.println("档案信息不存在,请核实");
160 161 return baseResponse;
161 162 }
162 163 Patients patients = patientsList.get(0);
... ... @@ -164,6 +165,7 @@
164 165 String bookbuildingDoctor = patients.getBookbuildingDoctor();
165 166 //续期,增加
166 167 if(yxzhVO.getRenew() == 1){
  168 + System.out.println("111111111111111111111111");
167 169 //1孕妇 2儿童 3 产妇
168 170 PatientServiceQuery patientServiceQuery = new PatientServiceQuery();
169 171 List<PatientService> patientServices=new ArrayList<>();
... ... @@ -196,6 +198,19 @@
196 198 baseResponse = patientServiceFacade.updatePatientService(ps,Integer.valueOf(bookbuildingDoctor));
197 199  
198 200 }
  201 + patientServiceQuery.setSerType(2);
  202 + patientServices = patientServiceService.queryPatientService(patientServiceQuery);
  203 + if(CollectionUtils.isNotEmpty(patientServices)){
  204 + PatientService patientService = patientServices.get(0);
  205 + PatientService ps = new PatientService();
  206 + ps.setId(patientService.getId());
  207 + ps.setParentid(patientService.getParentid());
  208 + ps.setSerStatus(1);
  209 + ps.setServiceWeek(yxzhVO.getWeeks());
  210 + ps.setSerType(2);
  211 + baseResponse = patientServiceFacade.updatePatientService(ps,Integer.valueOf(bookbuildingDoctor));
  212 +
  213 + }
199 214 }else if (patients.getType()==3){
200 215 patientServiceQuery.setPerType(3);
201 216 patientServiceQuery.setSerType(20);
202 217  
... ... @@ -209,11 +224,11 @@
209 224 ps.setServiceWeek(yxzhVO.getWeeks());
210 225 ps.setSerType(20);
211 226 baseResponse = patientServiceFacade.updatePatientService(ps,Integer.valueOf(bookbuildingDoctor));
212   -
213 227 }
214 228 }
215 229 return baseResponse;
216 230 }else{
  231 + System.out.println("2222222");
217 232 List<Map<String,String>> list = new ArrayList<>();
218 233 PatientService ps = new PatientService();
219 234 ps.setSerStatus(1);
... ... @@ -222,7 +237,7 @@
222 237 ps.setCreateDate(new Date());
223 238 //1孕妇 2儿童 3 产妇
224 239 if (patients.getType()==1){
225   - //开通围产、精准服务
  240 + //开通围产、精准服务、体重
226 241 ps.setPerType(1);
227 242 Map<String,String> m1 = new HashMap<>();
228 243 m1.put("serType","1");
229 244  
... ... @@ -230,8 +245,12 @@
230 245 Map<String,String> m2 = new HashMap<>();
231 246 m2.put("serType","6");
232 247 m2.put("serviceWeek",yxzhVO.getWeeks()+"");
  248 + Map<String,String> m3 = new HashMap<>();
  249 + m3.put("serType","2");
  250 + m3.put("serviceWeek",yxzhVO.getWeeks()+"");
233 251 list.add(m1);
234 252 list.add(m2);
  253 + list.add(m3);
235 254 }else if (patients.getType()==3){
236 255 //开通产后康复服务
237 256 ps.setPerType(3);
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java View file @ 75e6aa1
... ... @@ -35,6 +35,7 @@
35 35 import com.lyms.platform.pojo.*;
36 36 import com.lyms.platform.query.*;
37 37 import org.apache.commons.collections.CollectionUtils;
  38 +import org.apache.tools.ant.util.DateUtils;
38 39 import org.slf4j.Logger;
39 40 import org.slf4j.LoggerFactory;
40 41 import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -1352,8 +1353,50 @@
1352 1353 return "";
1353 1354 }
1354 1355  
1355   - public static void main(String[] args) {
1356   - System.out.println( DateUtil.getyyyy_MM_dd(DateUtil.addDay(new Date(),0))+ " 16:30:00");
  1356 + /**
  1357 + * 大同服务内容提醒 上午9点推送
  1358 + * 开通服务第1天、第7天、第14天、第21天、第28天去推送
  1359 + */
  1360 + public void serviceSync(){
  1361 + logger.info("serviceSync startup...");
  1362 + final String hospitalId = "2100002419";
  1363 + Date day=DateUtil.getYMDTime();
  1364 + PatientsQuery patientsQuery = new PatientsQuery();
  1365 + patientsQuery.setHospitalId(hospitalId);
  1366 + patientsQuery.setExtEnable(false);
  1367 + patientsQuery.setBuildTypeNot(1);
  1368 + patientsQuery.setYn(YnEnums.YES.getId());
  1369 + patientsQuery.setServiceType(ServiceTypeEnums.ADD_SERVICE.getId());
  1370 + patientsQuery.setServiceStatus(ServiceStatusEnums.ADD_OPEN.getId());
  1371 + Date seven= DateUtil.addDay(day,-7);
  1372 + Date fourteen= DateUtil.addDay(day,-14);
  1373 + Date twenty=DateUtil.addDay(day,-21);
  1374 + Date twentyEight=DateUtil.addDay(day,-28);
  1375 + Map<String,Date> params=new HashMap<>();
  1376 + params.put("seven",seven);
  1377 + params.put("fourteen",fourteen);
  1378 + params.put("twenty",twenty);
  1379 + params.put("twentyEight",twentyEight);
  1380 + patientsQuery.setServiceTime("1");
  1381 + patientsQuery.setMapTime(params);
  1382 + final List<Patients> patientList = patientsService.queryPatient(patientsQuery);
  1383 + if (CollectionUtils.isNotEmpty(patientList)) {
  1384 + logger.info("serviceSync Threading");
  1385 + new Thread(new Runnable() {
  1386 + @Override
  1387 + public void run() {
  1388 + for (int i = 0, j = patientList.size(); i < j; i++) {
  1389 + Patients patients = patientList.get(i);
  1390 + try {
  1391 + patientServiceFacade.sendServiceMsg(patients,SmsServiceEnums.FWKT.getId(),"您好,请点击此处查看开通服务内容详情。","大同市第一人民医院",patients.getType());
  1392 + } catch (Exception e) {
  1393 + logger.error("weekSync InterruptedException," + e.getMessage());
  1394 + }
  1395 + }
  1396 + }
  1397 + }).start();
  1398 + }
  1399 + logger.info("serviceSync end...");
1357 1400 }
1358 1401  
1359 1402 /**
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientServiceFacade.java View file @ 75e6aa1
1 1 package com.lyms.platform.operate.web.facade;
2 2  
  3 +import com.lyms.platform.beans.MsgRequest;
3 4 import com.lyms.platform.biz.service.BabyService;
4 5 import com.lyms.platform.biz.service.BasicConfigService;
5 6 import com.lyms.platform.biz.service.CommonService;
... ... @@ -83,6 +84,8 @@
83 84  
84 85 @Autowired
85 86 private AreaCountFacade areaCountFacade;
  87 + @Autowired
  88 + private SmsConfigFacade smsConfigFacade;
86 89  
87 90 private static Logger logger = LoggerFactory.getLogger(PatientServiceFacade.class);
88 91  
... ... @@ -442,6 +445,7 @@
442 445 List<Map<String, String>> serInfos = ps.getSerInfos();
443 446 if (CollectionUtils.isNotEmpty(serInfos)) {
444 447 for (Map<String, String> serInfo : serInfos) {
  448 + System.out.println(ps.toString());
445 449 //先根据孕妇id和开通服务类型、开通医生进行查询,如果已经开通过则开通失败
446 450 PatientServiceQuery patientQuery = new PatientServiceQuery();
447 451 patientQuery.setParentid(ps.getParentid());
448 452  
449 453  
... ... @@ -551,14 +555,16 @@
551 555 }
552 556 } else if (ps.getPerType() != null && ps.getPerType() == 1){//孕妇建档服务数据处理
553 557 if (PatientSerEnums.SerTypeEnums.yqjzzd.getId() == Integer.parseInt(serInfo.get("serType"))) {//孕期精准指导同步到建档
554   -
  558 + System.out.println("333333333333333333333");
555 559 Patients patient = new Patients();
556 560 patient.setServiceType(ServiceTypeEnums.ADD_SERVICE.getId());
557 561 patient.setServiceStatus(ServiceStatusEnums.ADD_OPEN.getId());
558 562 bookbuildingFacade.updatePatientSerById(ps.getParentid(), patient);
559 563  
  564 + sendServiceMsg(patients,SmsServiceEnums.FWKT.getId(),"您好,请点击此处查看开通服务内容详情。","大同市第一人民医院",ServiceObjEnums.YUNOBJ.getId());
560 565  
561 566 } else if (PatientSerEnums.SerTypeEnums.bzfw.getId().intValue() == Integer.parseInt(serInfo.get("serType"))) {
  567 + System.out.println("555555555555555555555555");
562 568 PatientServiceQuery query = new PatientServiceQuery();
563 569 query.setParentid(ps.getParentid());
564 570 query.setSerType(PatientSerEnums.SerTypeEnums.yqjzzd.getId());
565 571  
566 572  
... ... @@ -573,13 +579,13 @@
573 579 }
574 580 }else {//产妇建档服务数据处理
575 581 if (PatientSerEnums.SerTypeEnums.chkf.getId() == Integer.parseInt(serInfo.get("serType"))) {//产后康复同步到建档
576   -
  582 + System.out.println("66666666666666666");
577 583 Patients patient = new Patients();
578 584 patient.setServiceType(ServiceTypeEnums.ADD_MAT_DELIVER_SERVICE.getId());
579 585 patient.setServiceStatus(ServiceStatusEnums.STANDARD_OPEN.getId());
580 586 bookbuildingFacade.updatePatientSerById(ps.getParentid(), patient);
  587 + sendServiceMsg(patients,SmsServiceEnums.FWKT.getId(),"您好,请点击此处查看开通服务内容详情。","大同市第一人民医院",ServiceObjEnums.CHANOBJ.getId());
581 588  
582   -
583 589 }
584 590 }
585 591 }
... ... @@ -591,6 +597,70 @@
591 597 baseResponse.setErrormsg("成功");
592 598 return baseResponse;
593 599 }
  600 + //大同医院服务推送\短信
  601 + public void sendServiceMsg(Patients patient, Integer subTypeId, String first, String keyWord1,Integer objType){
  602 + System.out.println("333333333333333333333");
  603 + if ("2100002419".equals(patient.getHospitalId())) {
  604 + try {
  605 + //Thread.sleep(5000);
  606 + logger.info("sendServiceMsg startup");
  607 + List<MsgRequest> messages = new ArrayList<>();
  608 + MsgRequest mr = new MsgRequest();
  609 + mr.setPhone(patient.getPhone());
  610 + mr.setMemberId(null);
  611 + mr.setTypeId(ProjectTypeEnums.YNXT.getId());
  612 + mr.setStatus(SmsStatusEnums.WFS.getId());
  613 + mr.setHospitalId(patient.getHospitalId());
  614 + mr.setTempId(patient.getId());
  615 + mr.setPatientId(patient.getId());
  616 + mr.setSmsStatus(SmsStatusEnums.WFS.getId());
  617 + mr.setServiceType(1); //判断发送类型
  618 + mr.setFirst(first);//
  619 + mr.setObjType(objType);
  620 + mr.setSubTypeId(subTypeId);
  621 + mr.setKeyword1(keyWord1);//
  622 + //planTime 和 timeType为必填 否则推送中心会推送异常
  623 + mr.setTimeType(SmsTimeTypeEnums.ONTIME.getId());
  624 + mr.setPlanTime(DateUtil.getyyyy_MM_dd_hms(new Date()));
  625 + mr.setKeyword2("产科");
  626 + mr.setRemark(patient.getUsername());
  627 + mr.setCreated(DateUtil.getyyyy_MM_dd_hms(new Date()));
  628 + mr.setWxTempId(WxTempleteIdEnums.YUX_XUE_KE_CHEN_FB.getId());
  629 + messages.add(mr);
  630 + String title = "服务提醒短信";
  631 + String messageContent = "【大同市第一人民医院】" + "欢迎加入我院健康咨询服务:请微信-添加朋友-公众号-搜索“美生孕育”关注;点击开通成功提醒,手机号获取验证码成功登录宝贝孕程小程序。请确保登录成功并持续关注“美生孕育”公众号,正常接收产检提醒,享受个性化指导文章推送、孕期随访及营养指导等服务。";
  632 + MsgRequest request = new MsgRequest();
  633 + //1 推送服务, 2 推送和短信服务,3短信服务
  634 + request.setServiceType(3);
  635 + //短信发送状态
  636 + request.setSmsStatus(SmsStatusEnums.WFS.getId());
  637 + //平台ID
  638 + request.setTypeId(ProjectTypeEnums.YNXT.getId());
  639 + //服务对象 1孕妇 2儿童 3产妇
  640 + request.setObjType(1);
  641 + request.setPhone(patient.getPhone());
  642 + request.setPlanTime(DateUtil.getyyyy_MM_dd_hms(new Date()));
  643 + request.setSubTypeId(SmsServiceEnums.DXFW.getId());
  644 + request.setStatus(MsgStatusEnums.NO_SEND.getId());
  645 + request.setTimeType(SmsTimeTypeEnums.ONTIME.getId());
  646 + request.setHospitalId("2100002419");
  647 + request.setPatientId(patient.getId());
  648 + request.setTempId(patient.getId());
  649 + mr.setWxTempId(WxTempleteIdEnums.YUX_XUE_KE_CHEN_FB.getId());
  650 + request.setCreated(DateUtil.getyyyy_MM_dd_hms(new Date()));
  651 + request.setFirst(messageContent);
  652 + request.setKeyword1(title);
  653 + request.setKeyword2(DateUtil.getyyyy_MM_dd(DateUtil.addDay(new Date(),0)));
  654 + messages.add(request);
  655 + smsConfigFacade.saveMsg(messages, patient.getHospitalId());
  656 + } catch (Exception e) {
  657 + logger.error("sendServiceMsg Exception " + e);
  658 + }
  659 +
  660 + logger.info("sendServiceMsg end");
  661 + }
  662 + }
  663 +
594 664  
595 665 public void setServiceRecordAdd(PatientService pser, Patients patients) {
596 666 Date currentDate = new Date();
platform-operate-api/src/main/resources/spring/applicationContext-quartz.xml View file @ 75e6aa1
... ... @@ -720,6 +720,22 @@
720 720 <property name="cronExpression" value="0 37 0 * * ?"></property>
721 721 </bean>
722 722  
  723 + <!--大同上午9点推送服务提醒 -->
  724 + <bean id="serviceSyncWork" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  725 + <!-- 要调用的bean -->
  726 + <property name="targetObject" ref="bookbuildingFacade"></property>
  727 + <!-- 要调用的Method -->
  728 + <property name="targetMethod" value="serviceSync"></property>
  729 + <!-- 是否并发,false表示 如果发生错误也不影响下一次的调用 -->
  730 + <property name="concurrent" value="false"></property>
  731 + </bean>
  732 +
  733 + <!-- 配置一个触发器 0 0 9 * * ?-->
  734 + <bean id="serviceSyncWorkTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
  735 + <property name="jobDetail" ref="serviceSyncWork"></property>
  736 + <property name="cronExpression" value="0 0 9 * * ?"></property>
  737 + </bean>
  738 +
723 739 <!-- 总调度,用于启动定时器 -->
724 740 <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
725 741 <property name="triggers" >
... ... @@ -790,7 +806,9 @@
790 806 <!-- 秦皇岛二院产检提醒-->
791 807 <ref bean="weekSyncWorkTrigger"/>
792 808 <!-- 建档短信提醒-->
793   - <ref bean="bookbuildingSyncMsgWorkTrigger"/>
  809 + <!--<ref bean="bookbuildingSyncMsgWorkTrigger"/>-->
  810 + <!-- 大同服务提醒-->
  811 + <ref bean="serviceSyncWorkTrigger"/>
794 812 </list>
795 813 </property>
796 814 </bean>