RemindExpensesTask.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package com.yihu.wlyy.task;
  2. import com.yihu.wlyy.entity.doctor.profile.Doctor;
  3. import com.yihu.wlyy.entity.organization.Hospital;
  4. import com.yihu.wlyy.entity.patient.Patient;
  5. import com.yihu.wlyy.service.app.consult.ConsultService;
  6. import com.yihu.wlyy.service.common.SMSService;
  7. import com.yihu.wlyy.util.DateUtil;
  8. import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
  9. import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
  10. import org.apache.commons.lang3.StringUtils;
  11. import org.json.JSONArray;
  12. import org.json.JSONObject;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.web.context.support.SpringBeanAutowiringSupport;
  15. import java.util.Date;
  16. import java.util.List;
  17. /**
  18. * 缴费提醒任务
  19. * <p>
  20. * Created by lyr-pc on 2017/1/16.
  21. */
  22. public class RemindExpensesTask implements Runnable {
  23. List<Patient> patients;
  24. Doctor doctor;
  25. Hospital hospital;
  26. @Autowired
  27. WeiXinAccessTokenUtils tokenUtils;
  28. @Autowired
  29. WeiXinOpenIdUtils weiXinOpenIdUtils;
  30. @Autowired
  31. ConsultService consultService;
  32. public RemindExpensesTask(List<Patient> patients, Doctor doctor, Hospital hospital) {
  33. this.patients = patients;
  34. this.doctor = doctor;
  35. this.hospital = hospital;
  36. SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
  37. }
  38. @Override
  39. public void run() {
  40. StringBuffer sb = new StringBuffer();
  41. for (Patient p : patients) {
  42. try {
  43. if (StringUtils.isNotEmpty(p.getMobile())) {
  44. if (sb.length() > 0) {
  45. sb.append(",");
  46. }
  47. sb.append(p.getMobile());
  48. }
  49. // 微信提醒
  50. JSONObject json = new JSONObject();
  51. json.put("first", "缴费提醒");
  52. json.put("toUser", p.getCode());
  53. json.put("represented",p.getCode());//被代理人
  54. json.put("name", p.getName());
  55. json.put("doctor", doctor.getCode());
  56. json.put("doctorName", doctor.getName());
  57. json.put("date", DateUtil.dateToStrShort(new Date()));
  58. json.put("content", p.getName() + ",您好!为完成家庭医生签约,尽早为您提供家庭医生服务,请尽快到" + hospital.getName() + "(地址:" + hospital.getAddress() + ")缴费");
  59. json.put("remark", "");
  60. if (StringUtils.isNotEmpty(p.getOpenid())) {
  61. // 添加到发送队列
  62. PushMsgTask.getInstance().putWxMsg(tokenUtils.getAccessToken(), 8, p.getOpenid(), p.getName(), json);
  63. }
  64. //发送代理人
  65. JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
  66. if(jsonArray!=null&&jsonArray.length()>0){
  67. String first = (String) json.get("doctorName");
  68. for (int i = 0;i<jsonArray.length();i++){
  69. JSONObject j = jsonArray.getJSONObject(i);
  70. Patient member = (Patient) j.get("member");
  71. if(StringUtils.isNotBlank(member.getOpenid())){
  72. JSONObject data = json;
  73. data.remove("toUser");
  74. data.put("toUser",member.getCode());
  75. data.remove("doctorName");
  76. data.put("doctorName", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), member.getName()) +"\n"+first);
  77. PushMsgTask.getInstance().putWxMsg(tokenUtils.getAccessToken(), 8, member.getOpenid(), member.getName(), data);
  78. }
  79. }
  80. }
  81. //发送IM
  82. consultService.sendMucMessageBySingnType(doctor.getCode(), doctor.getName(), p.getCode(), doctor.getName() + "医生提醒您:为完成家庭医生签约," +
  83. "尽早为您提供家庭医生服务,请尽快到" + doctor.getName() + "(地址:" + hospital.getAddress() + ")缴费", "1", p.getName());
  84. } catch (Exception e) {
  85. e.printStackTrace();
  86. }
  87. }
  88. JSONObject result = SMSService.sendMsg(sb.toString(), doctor.getName() + "医生提醒您:为完成家庭医生签约," +
  89. "尽早为您提供家庭医生服务,请尽快到" + hospital.getName() + "(地址:" + hospital.getAddress() + ")缴费");
  90. }
  91. }