Browse Source

Merge branch 'dev' of yeshijie/patient-co-management into dev

trick9191 8 years ago
parent
commit
6d06e48d53
19 changed files with 676 additions and 290 deletions
  1. 3 4
      patient-co-wlyy/src/main/java/com/yihu/wlyy/entity/patient/SignFamily.java
  2. 1 1
      patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/message/MessageDao.java
  3. 90 41
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/account/DoctorInfoService.java
  4. 51 6
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/consult/ConsultTeamService.java
  5. 36 12
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/health/PatientHealthGuidanceService.java
  6. 1 1
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/message/MessageService.java
  7. 91 39
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/FamilyContractService.java
  8. 43 26
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/PatientRemindService.java
  9. 6 5
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/SignWebService.java
  10. 39 27
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/survey/ManagerQuestionnaireService.java
  11. 11 11
      patient-co-wlyy/src/main/java/com/yihu/wlyy/task/PushMsgTask.java
  12. 33 13
      patient-co-wlyy/src/main/java/com/yihu/wlyy/task/RemindExpensesTask.java
  13. 36 20
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/consult/DoctorConsultPublicController.java
  14. 38 20
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/health/DoctorHealthEduArticleController.java
  15. 17 6
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/patient/DoctorPatientGroupController.java
  16. 43 23
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/survey/ManagerQuestionnaireController.java
  17. 28 8
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/booking/PatientBookingController.java
  18. 78 22
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/third/BookingController.java
  19. 31 5
      patient-co-wlyy/src/main/java/com/yihu/wlyy/wechat/util/WeiXinOpenIdUtils.java

+ 3 - 4
patient-co-wlyy/src/main/java/com/yihu/wlyy/entity/patient/SignFamily.java

@ -1,13 +1,12 @@
package com.yihu.wlyy.entity.patient;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.wlyy.entity.IdEntity;
import java.util.Date;
/**
 * 家庭签约

+ 1 - 1
patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/message/MessageDao.java

@ -40,7 +40,7 @@ public interface MessageDao extends PagingAndSortingRepository<Message, Long>, J
    @Query(" from Message a where a.read = 1 and over ='1' and a.sender = ?1 and a.receiver=?2 and a.signStatus='1'")
    Message findByPatient(String patient,String doctor);
    @Query("select a from Message a where a.receiver = ?1 and a.sender=?2 and a.tzType=?3 order by a.czrq desc")
    @Query("select a from Message a where a.receiver = ?1 and a.sender=?2 and a.tzType=?3 order by a.createTime desc")
    List<Message> getHealthIndexMessageByPatient(String doctor,String patient,String type,Pageable pageRequest);
    @Modifying

+ 90 - 41
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/account/DoctorInfoService.java

@ -1,18 +1,16 @@
package com.yihu.wlyy.service.app.account;
import java.util.*;
import com.yihu.wlyy.entity.address.City;
import com.yihu.wlyy.entity.address.Province;
import com.yihu.wlyy.entity.address.Town;
import com.yihu.wlyy.entity.consult.Consult;
import com.yihu.wlyy.entity.consult.ConsultTeam;
import com.yihu.wlyy.entity.doctor.OperatorLog;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.doctor.team.sign.DoctorPatientGroup;
import com.yihu.wlyy.entity.doctor.team.sign.DoctorPatientGroupInfo;
import com.yihu.wlyy.entity.doctor.team.sign.DoctorTeam;
import com.yihu.wlyy.entity.doctor.team.sign.DoctorTeamMember;
import com.yihu.wlyy.entity.doctor.OperatorLog;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.patient.SignFamily;
import com.yihu.wlyy.entity.patient.WlyyPatientSick;
@ -22,20 +20,17 @@ import com.yihu.wlyy.repository.address.TownDao;
import com.yihu.wlyy.repository.consult.ConsultDao;
import com.yihu.wlyy.repository.consult.ConsultTeamDao;
import com.yihu.wlyy.repository.consult.ConsultTeamDoctorDao;
import com.yihu.wlyy.repository.doctor.DoctorDao;
import com.yihu.wlyy.repository.doctor.DoctorPatientGroupInfoDao;
import com.yihu.wlyy.repository.doctor.DoctorTeamDao;
import com.yihu.wlyy.repository.doctor.DoctorTeamMemberDao;
import com.yihu.wlyy.repository.doctor.OperatorLogDao;
import com.yihu.wlyy.repository.doctor.*;
import com.yihu.wlyy.repository.patient.PatientDao;
import com.yihu.wlyy.repository.patient.PatientSickDao;
import com.yihu.wlyy.repository.patient.SignFamilyDao;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.service.app.scheduling.DoctorWorkTimeService;
import com.yihu.wlyy.service.app.talk.TalkGroupService;
import com.yihu.wlyy.service.common.SMSService;
import com.yihu.wlyy.service.common.account.PatientService;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.util.EncodesUtil;
import com.yihu.wlyy.util.ImUtill;
import com.yihu.wlyy.util.MD5;
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
@ -47,7 +42,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
@ -57,8 +51,7 @@ import org.springside.modules.persistence.DynamicSpecifications;
import org.springside.modules.persistence.SearchFilter;
import org.springside.modules.persistence.SearchFilter.Operator;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.util.EncodesUtil;
import java.util.*;
/**
 * 医生基本信息类.
@ -864,6 +857,7 @@ public class DoctorInfoService extends BaseService {
            }
        } else {
            data.put("toUser", patient);
            data.put("represented",patient);//被代理人
            data.put("doctor", newD.getCode());
            data.put("doctorName", newD.getName());
            data.put("first", p.getName() + ",您好!您的签约团队已为您新增一位责任医生,医生信息如下:");
@ -880,19 +874,35 @@ public class DoctorInfoService extends BaseService {
        //判断是否判定openId,有没有发则查找家人发送
        if (StringUtils.isNotBlank(p.getOpenid())) {
            PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, p.getOpenid(), p.getName(), data);
        } else {
            JSONObject json = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
            Patient member = (Patient) json.get("member");
            if (StringUtils.isNotBlank(member.getOpenid())) {
                String first = (String) data.get("first");
                data.remove("first");
                data.put("first", weiXinOpenIdUtils.getTitleMes(p, json.getInt("relation"), member.getName()) + first);
                PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, member.getOpenid(), member.getName(), data);
        }
//        else {
//            JSONObject json = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
//            Patient member = (Patient) json.get("member");
//            if (StringUtils.isNotBlank(member.getOpenid())) {
//                String first = (String) data.get("first");
//                data.remove("first");
//                data.put("first", weiXinOpenIdUtils.getTitleMes(p, json.getInt("relation"), member.getName()) + first);
//                PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, member.getOpenid(), member.getName(), data);
//
//            }
//        }
        //发送代理人
        JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
        if(jsonArray!=null&&jsonArray.length()>0){
            String first = (String) data.get("first");
            for (int i = 0;i<jsonArray.length();i++){
                JSONObject j  = jsonArray.getJSONObject(i);
                Patient member = (Patient) j.get("member");
                if(StringUtils.isNotBlank(member.getOpenid())){
                    JSONObject json = data;
                    json.remove("toUser");
                    json.put("toUser",member.getCode());
                    json.remove("first");
                    json.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+first);
                    PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, member.getOpenid(), member.getName(), json);
                }
            }
        }
    }
    @Transactional
@ -981,6 +991,7 @@ public class DoctorInfoService extends BaseService {
        Patient p = patientDao.findByCode(patient);
        JSONObject data = new JSONObject();
        data.put("toUser", patient);
        data.put("represented",patient);//被代理人
        data.put("doctor", newD.getCode());
        data.put("doctorName", newD.getName());
        data.put("first", p.getName() + ",您好!您的签约团队已为您新增一位责任医生,医生信息如下:");
@ -995,15 +1006,34 @@ public class DoctorInfoService extends BaseService {
        if (StringUtils.isNotBlank(p.getOpenid())) {
            PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, p.getOpenid(), p.getName(), data);
        } else {
            JSONObject json = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
            Patient member = (Patient) json.get("member");
            if (StringUtils.isNotBlank(member.getOpenid())) {
                String first = (String) data.get("first");
                data.remove("first");
                data.put("first", weiXinOpenIdUtils.getTitleMes(p, json.getInt("relation"), member.getName()) + first);
                PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, member.getOpenid(), member.getName(), data);
        }
//        else {
//            JSONObject json = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
//            Patient member = (Patient) json.get("member");
//
//            if (StringUtils.isNotBlank(member.getOpenid())) {
//                String first = (String) data.get("first");
//                data.remove("first");
//                data.put("first", weiXinOpenIdUtils.getTitleMes(p, json.getInt("relation"), member.getName()) + first);
//                PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, member.getOpenid(), member.getName(), data);
//            }
//        }
        //发送代理人
        JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
        if(jsonArray!=null&&jsonArray.length()>0){
            String first = (String) data.get("first");
            for (int i = 0;i<jsonArray.length();i++){
                JSONObject j  = jsonArray.getJSONObject(i);
                Patient member = (Patient) j.get("member");
                if(StringUtils.isNotBlank(member.getOpenid())){
                    JSONObject json = data;
                    json.remove("toUser");
                    json.put("toUser",member.getCode());
                    json.remove("first");
                    json.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+first);
                    PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, member.getOpenid(), member.getName(), json);
                }
            }
        }
        return 1;
@ -1184,6 +1214,7 @@ public class DoctorInfoService extends BaseService {
        Patient p = patientDao.findByCode(patient);
        JSONObject data = new JSONObject();
        data.put("toUser", patient);
        data.put("represented",patient);//被代理人
        data.put("doctor", newD.getCode());
        data.put("doctorName", newD.getName());
        data.put("keyword3", "家庭医生");
@ -1199,16 +1230,34 @@ public class DoctorInfoService extends BaseService {
            data.put("first", p.getName() + ",您好!因签约团队内分工调整,您的责任医生有变动," + oldDoctorName +
                    "医生无法继续为您服务,具体变动如下:");
            PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, p.getOpenid(), p.getName(), data);
        } else {
            //如果自己没有绑定,则发给家人
            JSONObject json = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
            Patient member = (Patient) json.get("member");
            if (StringUtils.isNotBlank(member.getOpenid())) {
                data.put("first", weiXinOpenIdUtils.getTitleMes(p, (int) json.get("relation"), member.getName()) + p.getName() + ",您好!因签约团队内分工调整,您的责任医生有变动," + oldDoctorName +
                        "医生无法继续为您服务,具体变动如下:");
                PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, member.getOpenid(), member.getName(), data);
            }
        }
//        else {
//            //如果自己没有绑定,则发给家人
//            JSONObject json = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
//            Patient member = (Patient) json.get("member");
//            if (StringUtils.isNotBlank(member.getOpenid())) {
//                data.put("first", weiXinOpenIdUtils.getTitleMes(p, (int) json.get("relation"), member.getName()) + p.getName() + ",您好!因签约团队内分工调整,您的责任医生有变动," + oldDoctorName +
//                        "医生无法继续为您服务,具体变动如下:");
//                PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, member.getOpenid(), member.getName(), data);
//            }
//        }
        //发送代理人
        JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
        if(jsonArray!=null&&jsonArray.length()>0){
            for (int i = 0;i<jsonArray.length();i++){
                JSONObject j  = jsonArray.getJSONObject(i);
                Patient member = (Patient) j.get("member");
                if(StringUtils.isNotBlank(member.getOpenid())){
                    JSONObject json = data;
                    json.remove("toUser");
                    json.put("toUser",member.getCode());
                    json.remove("first");
                    json.put("first", weiXinOpenIdUtils.getTitleMes(p, (int) json.get("relation"), member.getName()) + p.getName() + ",您好!因签约团队内分工调整,您的责任医生有变动," + oldDoctorName +
                            "医生无法继续为您服务,具体变动如下:");
                    PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, member.getOpenid(), member.getName(), json);
                }
            }
        }
    }
}

+ 51 - 6
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/consult/ConsultTeamService.java

@ -31,6 +31,7 @@ import com.yihu.wlyy.service.app.talk.TalkGroupService;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.util.*;
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
@ -91,7 +92,8 @@ public class ConsultTeamService extends ConsultService {
    private PatientFamilyMemberDao familyMemberDao;
    @Autowired
    private HealthEduArticleService healthEduArticleService;
    @Autowired
    private WeiXinOpenIdUtils weiXinOpenIdUtils;
    @Autowired
    private TalkGroupService talkGroupService;
    @Autowired
@ -1782,7 +1784,7 @@ public class ConsultTeamService extends ConsultService {
        consultDao.save(consult);
    }
    public int finishConsult(String consult, String endOperator, int endType) {
    public int finishConsult(String consult, String endOperator, int endType) throws Exception{
        ConsultTeam consultTeam = consultTeamDao.findByConsult(consult);
        Consult cons = consultDao.findByCode(consult);
@ -1803,10 +1805,31 @@ public class ConsultTeamService extends ConsultService {
            json.put("keyword1", "满意度评价");
            json.put("keyword2", sdf.format(new Date()));
            json.put("toUser", p.getCode());
            json.put("represented",p.getCode());//被代理人
            json.put("remark", "");
            json.put("consult", consult);
            json.put("first", endName + ",您好!您有1条咨询已结束,请及时对咨询医生进行满意度评价。");
            PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 17, openId, p.getName(), json);
            String first = endName + ",您好!您有1条咨询已结束,请及时对咨询医生进行满意度评价。";
            json.put("first", first);
            if(StringUtils.isNotBlank(p.getOpenid())){
                PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 17, openId, p.getName(), json);
            }
            //发送代理人
            JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
            if(jsonArray!=null&&jsonArray.length()>0){
                for (int i = 0;i<jsonArray.length();i++){
                    JSONObject j  = jsonArray.getJSONObject(i);
                    Patient member = (Patient) j.get("member");
                    if(StringUtils.isNotBlank(member.getOpenid())){
                        JSONObject data = json;
                        data.remove("toUser");
                        data.put("toUser",member.getCode());
                        data.remove("first");
                        data.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+first);
                        PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 17, openId, p.getName(), data);
                    }
                }
            }
        } else {
            if (endOperator.equals("admin")) {
                endId = "system";
@ -1825,10 +1848,32 @@ public class ConsultTeamService extends ConsultService {
                json.put("keyword1", "满意度评价");
                json.put("keyword2", sdf.format(new Date()));
                json.put("toUser", p.getCode());
                json.put("represented",p.getCode());//被代理人
                json.put("remark", "");
                json.put("consult", consult);
                json.put("first", name + ",您好!您有1条咨询已结束,请及时对咨询医生进行满意度评价。");
                PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 17, openId, p.getName(), json);
                String first = name + ",您好!您有1条咨询已结束,请及时对咨询医生进行满意度评价。";
                json.put("first", first);
                if(StringUtils.isNotBlank(p.getOpenid())){
                    PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 17, openId, p.getName(), json);
                }
                //发送代理人
                JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
                if(jsonArray!=null&&jsonArray.length()>0){
                    for (int i = 0;i<jsonArray.length();i++){
                        JSONObject j  = jsonArray.getJSONObject(i);
                        Patient member = (Patient) j.get("member");
                        if(StringUtils.isNotBlank(member.getOpenid())){
                            JSONObject data = json;
                            data.remove("toUser");
                            data.put("toUser",member.getCode());
                            data.remove("first");
                            data.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+first);
                            PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 17, member.getOpenid(), p.getName(), data);
                        }
                    }
                }
            }
        }
        JSONObject obj = ImUtill.endTopics(consultTeam.getPatient(), endId, endName, consultTeam.getConsult());

+ 36 - 12
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/health/PatientHealthGuidanceService.java

@ -12,6 +12,7 @@ import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.service.common.account.PatientService;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
@ -49,6 +50,8 @@ public class PatientHealthGuidanceService extends BaseService {
	WeiXinOpenIdUtils weiXinOpenIdUtils;
	@Autowired
	private PatientService patientService;
	@Autowired
	private WeiXinAccessTokenUtils weiXinAccessTokenUtils;
	public JSONObject findById(Long id){
		PatientHealthGuidance guidance = patientHealthGuidanceDao.findOne(id);
@ -127,26 +130,47 @@ public class PatientHealthGuidanceService extends BaseService {
			json.put("first", "健康指导提醒");
			//name = patient.getName();
			openId = patient.getOpenid();
		}else{
			JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(patient.getCode());
			Patient member = (Patient)j.get("member");
			openId = member.getOpenid();
			//name = member.getName();
			if (StringUtils.isNotEmpty(openId)) {
				json.put("first", weiXinOpenIdUtils.getTitleMes(patient, j.getInt("relation"), patient.getName()) + "健康指导提醒");
			}
		}
		if (guidance != null && StringUtils.isNotEmpty(openId)) {
//		else{
//			JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(patient.getCode());
//			Patient member = (Patient)j.get("member");
//			openId = member.getOpenid();
//			//name = member.getName();
//			if (StringUtils.isNotEmpty(openId)) {
//				json.put("first", weiXinOpenIdUtils.getTitleMes(patient, j.getInt("relation"), patient.getName()) + "健康指导提醒");
//			}
//		}
		if (guidance != null ) {
			json.put("toUser", patient.getCode());
			json.put("represented",patient.getCode());//被代理人
			json.put("id", guidance.getId());
			json.put("date", DateUtil.getStringDate());
			json.put("orgName", doctor.getHospitalName());
			json.put("doctorName", doctor.getName());
			json.put("content", "您好!医生给您发来了一份新的健康指导。");
			json.put("remark", "请点击查看");
			// 推送消息到微信端
			PushMsgTask.getInstance().putWxMsg(accessToken, 4, openId, patient.getName(), json);
			if(StringUtils.isNotEmpty(openId)){
				// 推送消息到微信端
				PushMsgTask.getInstance().putWxMsg(accessToken, 4, openId, patient.getName(), json);
			}
			//发送代理人
			JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(patient.getCode());
			if(jsonArray!=null&&jsonArray.length()>0){
				for (int i = 0;i<jsonArray.length();i++){
					JSONObject j  = jsonArray.getJSONObject(i);
					Patient member = (Patient) j.get("member");
					if(StringUtils.isNotBlank(member.getOpenid())){
						JSONObject data = json;
						data.remove("toUser");
						data.put("toUser",member.getCode());
						String first = (String) json.get("first");
						data.remove("first");
						data.put("first", weiXinOpenIdUtils.getTitleMes(patient, j.getInt("relation"), member.getName()) + "健康指导提醒");
						PushMsgTask.getInstance().putWxMsg(weiXinAccessTokenUtils.getAccessToken(), 4, member.getOpenid(), member.getName(), data);
					}
				}
			}
		}
		return guidance;
	}

+ 1 - 1
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/message/MessageService.java

@ -384,7 +384,7 @@ public class MessageService extends BaseService {
                map.put("read", String.valueOf(item.getRead()));
                map.put("sex", String.valueOf(item.getSex()));
                map.put("czrq", DateUtil.dateToStrLong(item.getCzrq()));
                map.put("czrq", DateUtil.dateToStrLong(item.getCreateTime()));
                DevicePatientHealthIndex data =devicePatientHealthIndexDao.findOne(Long.valueOf(item.getTzCode()));
                if(data!=null)

+ 91 - 39
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/FamilyContractService.java

@ -1,7 +1,6 @@
package com.yihu.wlyy.service.app.sign;
import com.yihu.wlyy.entity.consult.ConsultTeam;
import com.yihu.wlyy.entity.dict.SystemDict;
import com.yihu.wlyy.entity.doctor.OperatorLog;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.doctor.profile.DoctorService;
@ -32,11 +31,9 @@ import com.yihu.wlyy.task.SignUploadTask;
import com.yihu.wlyy.util.*;
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.CachedIntrospectionResults;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
@ -1412,6 +1409,7 @@ public class FamilyContractService extends BaseService {
            JSONObject json = new JSONObject();
            json.put("first", "解约申请通知");
            json.put("toUser", sf.getPatient());
            json.put("represented",sf.getPatient());//被代理人
            json.put("date", DateUtil.getStringDateShort());
            json.put("doctor", sf.getDoctor());
            json.put("doctorName", sf.getDoctorName());
@ -1421,19 +1419,36 @@ public class FamilyContractService extends BaseService {
            if (StringUtils.isNotBlank(sf.getOpenid())) {
                // 添加到发送队列
                PushMsgTask.getInstance().putWxMsg(access_token, 5, sf.getOpenid(), sf.getName(), json);
            } else {
                JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(patient);
                Patient member = (Patient) j.get("member");
                if (StringUtils.isNotBlank(member.getOpenid())) {
                    String first = (String) json.get("first");
                    json.remove("first");
                    Patient p = patientDao.findByCode(patient);
                    json.put("first", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), p.getName()));
                    PushMsgTask.getInstance().putWxMsg(access_token, 5, member.getOpenid(), member.getName(), json);
            }
//            else {
//                JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(patient);
//                Patient member = (Patient) j.get("member");
//                if (StringUtils.isNotBlank(member.getOpenid())) {
//                    String first = (String) json.get("first");
//                    json.remove("first");
//                    Patient p = patientDao.findByCode(patient);
//                    json.put("first", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), p.getName()));
//                    PushMsgTask.getInstance().putWxMsg(access_token, 5, member.getOpenid(), member.getName(), json);
//                }
//            }
            //发送代理人
            JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(sf.getPatient());
            if(jsonArray!=null&&jsonArray.length()>0){
                Patient p = patientDao.findByCode(patient);
                for (int i = 0;i<jsonArray.length();i++){
                    JSONObject j  = jsonArray.getJSONObject(i);
                    Patient member = (Patient) j.get("member");
                    if(StringUtils.isNotBlank(member.getOpenid())){
                        JSONObject data = json;
                        data.remove("toUser");
                        data.put("toUser",member.getCode());
                        String first = (String) json.get("first");
                        data.remove("first");
                        data.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName()));
                        PushMsgTask.getInstance().putWxMsg(access_token, 5, member.getOpenid(), member.getName(), data);
                    }
                }
            }
        } else {
            // 更新状态为正常
            signFamilyDao.refuseSurrender(patient);
@ -1441,6 +1456,7 @@ public class FamilyContractService extends BaseService {
            JSONObject json = new JSONObject();
            json.put("first", "解约申请通知");
            json.put("toUser", sf.getPatient());
            json.put("represented",sf.getPatient());//被代理人
            json.put("date", DateUtil.getStringDateShort());
            json.put("doctor", sf.getDoctor());
            json.put("doctorName", sf.getDoctorName());
@ -1450,19 +1466,37 @@ public class FamilyContractService extends BaseService {
            if (StringUtils.isNotBlank(sf.getOpenid())) {
                // 添加到发送队列
                PushMsgTask.getInstance().putWxMsg(access_token, 5, sf.getOpenid(), sf.getName(), json);
            } else {
                JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(patient);
                Patient member = (Patient) j.get("member");
                if (StringUtils.isNotBlank(member.getOpenid())) {
                    String first = (String) json.get("first");
                    json.remove("first");
                    Patient p = patientDao.findByCode(patient);
                    json.put("first", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), member.getName()));
                    PushMsgTask.getInstance().putWxMsg(access_token, 5, member.getOpenid(), member.getName(), json);
            }
//            else {
//                JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(patient);
//                Patient member = (Patient) j.get("member");
//                if (StringUtils.isNotBlank(member.getOpenid())) {
//                    String first = (String) json.get("first");
//                    json.remove("first");
//                    Patient p = patientDao.findByCode(patient);
//                    json.put("first", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), member.getName()));
//                    PushMsgTask.getInstance().putWxMsg(access_token, 5, member.getOpenid(), member.getName(), json);
//                }
//            }
            //发送代理人
            JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(sf.getPatient());
            if(jsonArray!=null&&jsonArray.length()>0){
                Patient p = patientDao.findByCode(patient);
                for (int i = 0;i<jsonArray.length();i++){
                    JSONObject j  = jsonArray.getJSONObject(i);
                    Patient member = (Patient) j.get("member");
                    if(StringUtils.isNotBlank(member.getOpenid())){
                        JSONObject data = json;
                        data.remove("toUser");
                        data.put("toUser",member.getCode());
                        String first = (String) json.get("first");
                        data.remove("first");
                        data.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName()));
                        PushMsgTask.getInstance().putWxMsg(access_token, 5, member.getOpenid(), member.getName(), data);
                    }
                }
            }
        }
        return 1;
    }
@ -1871,7 +1905,7 @@ public class FamilyContractService extends BaseService {
     * @param healthDoctor 健康管理师code
     * @return
     */
    public JSONObject updateSignInfo(String patient, String healthDoctor, String doctor, String expensesType, String loginUser) {
    public JSONObject updateSignInfo(String patient, String healthDoctor, String doctor, String expensesType, String loginUser) throws Exception{
        JSONObject result = new JSONObject();
        Patient p = patientDao.findByCode(patient);
@ -2038,6 +2072,7 @@ public class FamilyContractService extends BaseService {
            JSONObject data = new JSONObject();
            data.put("toUser", patient);
            data.put("represented",patient);//被代理人
            data.put("doctor", docQk.getCode());
            data.put("doctorName", docQk.getName());
            data.put("first", p.getName() + ",您好!因签约团队内分工调整,您的责任医生有变动," + oldDoctorName +
@ -2070,24 +2105,41 @@ public class FamilyContractService extends BaseService {
            if (StringUtils.isNotBlank(p.getOpenid())) {
                PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, p.getOpenid(), p.getName(), msg);
            } else {
                //如果自己没有绑定,则发给家人
                JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
                Patient member = (Patient) j.get("member");
                if (StringUtils.isNotBlank(member.getOpenid())) {
                    String first = (String) msg.get("first");
                    msg.remove("first");
                    try {
                        msg.put("first", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), member.getName()));
                    } catch (Exception e) {
                        e.printStackTrace();
            }
//            else {
//                //如果自己没有绑定,则发给家人
//                JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
//                Patient member = (Patient) j.get("member");
//                if (StringUtils.isNotBlank(member.getOpenid())) {
//                    String first = (String) msg.get("first");
//                    msg.remove("first");
//
//                    try {
//                        msg.put("first", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), member.getName()));
//                    } catch (Exception e) {
//                        e.printStackTrace();
//                    }
//                    PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, member.getOpenid(), member.getName(), msg);
//                }
//            }
            //发送代理人
            JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
            if(jsonArray!=null&&jsonArray.length()>0){
                for (int i = 0;i<jsonArray.length();i++){
                    JSONObject j  = jsonArray.getJSONObject(i);
                    Patient member = (Patient) j.get("member");
                    if(StringUtils.isNotBlank(member.getOpenid())){
                        JSONObject data = msg;
                        data.remove("toUser");
                        data.put("toUser",member.getCode());
                        String first = (String) data.get("first");
                        data.remove("first");
                        data.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName()));
                        PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, member.getOpenid(), member.getName(), data);
                    }
                    PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, member.getOpenid(), member.getName(), msg);
                }
            }
        }
        OperatorLog operatorLog = new OperatorLog();
        operatorLog.setCreateTime(new Date());

+ 43 - 26
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/PatientRemindService.java

@ -14,19 +14,17 @@ import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.task.RemindExpensesTask;
import com.yihu.wlyy.task.RemindFocusWechatTask;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
@ -213,34 +211,53 @@ public class PatientRemindService extends BaseService {
            }
//            if (StringUtils.isNotEmpty(p.getOpenid())) {
                // 微信提醒
                JSONObject json = new JSONObject();
                json.put("first", "缴费提醒");
                json.put("toUser", p.getCode());
                json.put("name", p.getName());
                json.put("doctor", doc.getCode());
                json.put("doctorName", "提醒医生:  "+doc.getName());
                json.put("date", DateUtil.dateToStrShort(new Date()));
                json.put("content", p.getName() + ",您好!为完成家庭医生签约,尽早为您提供家庭医生服务,请尽快到" + hos.getName() + "(地址:" + hos.getAddress() + ")缴费");
                json.put("remark", "");
                //判断是否判定openId,有没有发则查找家人发送
                if(StringUtils.isNotBlank(p.getOpenid())){
                    isOpenIdExist = true;
                    // 添加到发送队列
                    PushMsgTask.getInstance().putWxMsg(tokenUtils.getAccessToken(), 8, p.getOpenid(), p.getName(), json);
                }else{
                    JSONObject j  = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
            // 微信提醒
            JSONObject json = new JSONObject();
            json.put("first", "缴费提醒");
            json.put("toUser", p.getCode());
            json.put("represented",p.getCode());//被代理人
            json.put("name", p.getName());
            json.put("doctor", doc.getCode());
            json.put("doctorName", "提醒医生:  "+doc.getName());
            json.put("date", DateUtil.dateToStrShort(new Date()));
            json.put("content", p.getName() + ",您好!为完成家庭医生签约,尽早为您提供家庭医生服务,请尽快到" + hos.getName() + "(地址:" + hos.getAddress() + ")缴费");
            json.put("remark", "");
            //判断是否判定openId,有没有发则查找家人发送
            if(StringUtils.isNotBlank(p.getOpenid())){
                isOpenIdExist = true;
                // 添加到发送队列
                PushMsgTask.getInstance().putWxMsg(tokenUtils.getAccessToken(), 8, p.getOpenid(), p.getName(), json);
            }
//                else{
//                    JSONObject j  = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
//                    Patient member = (Patient) j.get("member");
//                    if(StringUtils.isNotBlank(member.getOpenid())){
//                        isOpenIdExist = true;
//                        String first = (String) json.get("doctorName");
//                        json.remove("doctorName");
//                        json.put("doctorName",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+"\n"+first);
//                        PushMsgTask.getInstance().putWxMsg(tokenUtils.getAccessToken(), 8, member.getOpenid(), member.getName(), json);
//                    }
//                }
            //发送代理人
            JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
            if(jsonArray!=null&&jsonArray.length()>0){
                String first = (String) json.get("doctorName");
                for (int i = 0;i<jsonArray.length();i++){
                    JSONObject j  = jsonArray.getJSONObject(i);
                    Patient member = (Patient) j.get("member");
                    if(StringUtils.isNotBlank(member.getOpenid())){
                        isOpenIdExist = true;
                        String first = (String) json.get("doctorName");
                        json.remove("doctorName");
                        json.put("doctorName",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+"\n"+first);
                        PushMsgTask.getInstance().putWxMsg(tokenUtils.getAccessToken(), 8, member.getOpenid(), member.getName(), json);
                        JSONObject data = json;
                        data.remove("toUser");
                        data.put("toUser",member.getCode());
                        data.remove("doctorName");
                        data.put("doctorName", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), member.getName()) +"\n"+first);
                        PushMsgTask.getInstance().putWxMsg(tokenUtils.getAccessToken(), 8, member.getOpenid(), member.getName(), data);
                    }
                }
            }
                wFlag = true;
//            }

+ 6 - 5
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/SignWebService.java

@ -1,7 +1,5 @@
package com.yihu.wlyy.service.app.sign;
import java.util.*;
import com.yihu.wlyy.entity.dict.SystemDict;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.doctor.team.admin.AdminTeam;
@ -16,6 +14,8 @@ import com.yihu.wlyy.repository.message.MessageDao;
import com.yihu.wlyy.repository.patient.SignFamilyDao;
import com.yihu.wlyy.repository.patient.SignFamilyRenewDao;
import com.yihu.wlyy.repository.patient.SignFamilyRenewLogDao;
import com.yihu.wlyy.repository.patient.SignWebDao;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.service.app.label.SignPatientLabelInfoService;
import com.yihu.wlyy.service.app.team.AdminTeamService;
import com.yihu.wlyy.service.common.SMSService;
@ -24,10 +24,10 @@ import com.yihu.wlyy.service.common.account.PatientService;
import com.yihu.wlyy.service.system.SystemDictService;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
@ -37,8 +37,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.yihu.wlyy.repository.patient.SignWebDao;
import com.yihu.wlyy.service.BaseService;
import java.util.*;
/**
 * 网络签约业务处理类
@ -81,6 +80,8 @@ public class SignWebService extends BaseService {
    private DoctorTeamDao doctorTeamDao;
    @Autowired
    private DoctorTeamMemberDao doctorTeamMemberDao;
    @Autowired
    private WeiXinAccessTokenUtils weiXinAccessTokenUtils;
    /**
     * 根据医生代码及签约状态编码 获取该医生签约患者的信息列表

+ 39 - 27
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/survey/ManagerQuestionnaireService.java

@ -1,27 +1,17 @@
package com.yihu.wlyy.service.survey;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.wlyy.entity.dict.SystemDict;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.doctor.survey.*;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.wechat.WechatTemplate;
import com.yihu.wlyy.entity.wechat.WechatTemplateData;
import com.yihu.wlyy.repository.dict.SystemDictDao;
import com.yihu.wlyy.repository.doctor.*;
import com.yihu.wlyy.repository.patient.PatientDao;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.service.system.SystemDictService;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.util.HttpUtil;
import com.yihu.wlyy.util.SystemConf;
import com.yihu.wlyy.web.doctor.survey.ManagerQuestionnaireController;
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
import com.yihu.wlyy.wechat.util.WeiXinTempMsgSendUtils;
import io.swagger.models.auth.In;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.util.StringUtil;
import org.bouncycastle.jce.provider.symmetric.HC128;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
@ -29,7 +19,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
@ -86,7 +75,8 @@ public class ManagerQuestionnaireService extends BaseService {
    private DoctorDao doctorDao;
    @Autowired
    private PatientDao patientDao;
    @Autowired
    private WeiXinAccessTokenUtils weiXinAccessTokenUtils;
    @Autowired
    WeiXinOpenIdUtils weiXinOpenIdUtils;
@ -261,28 +251,50 @@ public class ManagerQuestionnaireService extends BaseService {
                        String openId = p.getOpenid();
                        json.put("keyword2", sdf.format(new Date()));
                        json.put("toUser", c);
                        json.put("represented", c);
                        json.put("survey_id", surveyCode);
                        json.put("first", name + ",您好!为了给您提供更好的家庭医生健康服务,现有一份问卷需要您填写。");
                        String first = name + ",您好!为了给您提供更好的家庭医生健康服务,现有一份问卷需要您填写。";
                        json.put("first", first);
                        //判断是否判定openId,有没有发则查找家人发送
                        if (StringUtils.isNotBlank(p.getOpenid())) {
                            // 添加到发送队列
                            logger.error("json =======>" + json);
//                            PushMsgTask.getInstance().putWxMsg(accessToken, 11, openId, name, json);
                            PushMsgTask.getInstance().sendWeixinMessage(accessToken, 11, openId, name, json);
                        } else {
                            JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(p.getOpenid());
                            Patient member = (Patient) j.get("member");
                            if (StringUtils.isNotBlank(member.getOpenid())) {
                                String first = (String) json.get("first");
                                json.remove("first");
                                try {
                                    json.put("first", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), member.getName()) + first);
                                } catch (Exception e) {
                                    e.printStackTrace();
                        }
//                        else {
//                            JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(p.getOpenid());
//                            Patient member = (Patient) j.get("member");
//                            if (StringUtils.isNotBlank(member.getOpenid())) {
//                                String first = (String) json.get("first");
//                                json.remove("first");
//                                try {
//                                    json.put("first", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), member.getName()) + first);
//                                } catch (Exception e) {
//                                    e.printStackTrace();
//                                }
//                                logger.error("没有opIn  json =======>" + json);
////                                PushMsgTask.getInstance().putWxMsg(accessToken, 11, member.getOpenid(), member.getName(), json);
//                                PushMsgTask.getInstance().sendWeixinMessage(accessToken, 11, member.getOpenid(), member.getName(), json);
//                            }
//                        }
                        //发送代理人
                        JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
                        if(jsonArray!=null&&jsonArray.length()>0){
                            for (int i = 0;i<jsonArray.length();i++){
                                JSONObject j  = jsonArray.getJSONObject(i);
                                Patient member = (Patient) j.get("member");
                                if(StringUtils.isNotBlank(member.getOpenid())){
                                    json.remove("toUser");
                                    json.put("toUser",member.getCode());
                                    json.remove("first");
                                    try {
                                        json.put("first", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), member.getName()) + first);
                                    } catch (Exception e) {
                                        e.printStackTrace();
                                    }
                                    PushMsgTask.getInstance().sendWeixinMessage(weiXinAccessTokenUtils.getAccessToken(), 11, member.getOpenid(), member.getName(), json);
                                }
                                logger.error("没有opIn  json =======>" + json);
//                                PushMsgTask.getInstance().putWxMsg(accessToken, 11, member.getOpenid(), member.getName(), json);
                                PushMsgTask.getInstance().sendWeixinMessage(accessToken, 11, member.getOpenid(), member.getName(), json);
                            }
                        }
                    }

+ 11 - 11
patient-co-wlyy/src/main/java/com/yihu/wlyy/task/PushMsgTask.java

@ -250,9 +250,9 @@ public class PushMsgTask {
            String temp_id = "";
            if (type == 3) {
                if (json.has("isPublic") && json.getInt("isPublic") == 1) {
                    temp.setUrl(url + "jbsq/html/public-consult-detail.html?openid=" + openid + "&code=" + json.getString("consult") + "&toUser=" + json.getString("toUser") + "&toName=" + name);
                    temp.setUrl(url + "jbsq/html/public-consult-detail.html?openid=" + openid + "&code=" + json.getString("consult") + "&toUser=" + json.getString("toUser") + "&toName=" + name+"&represented="+json.getString("represented"));
                } else {
                    temp.setUrl(url + "yszx/html/consulting-doctor.html?openid=" + openid + "&consult=" + json.getString("consult") + "&toUser=" + json.getString("toUser") + "&toName=" + name);
                    temp.setUrl(url + "yszx/html/consulting-doctor.html?openid=" + openid + "&consult=" + json.getString("consult") + "&toUser=" + json.getString("toUser") + "&toName=" + name+"&represented="+json.getString("represented"));
                }
                temp_id = SystemConf.getInstance().getSystemProperties().getProperty("template_consult_notice");
                temp.setTemplate_id(temp_id);
@ -307,7 +307,7 @@ public class PushMsgTask {
                keyword4.setValue(json.getString("content"));
                m.put("keyword4", keyword4);
            } else if (type == 4) {
                temp.setUrl(url + "yszd/html/guidance-detail.html?openid=" + openid + "&toUser=" + json.getString("toUser") + "&id=" + String.valueOf(json.get("id")) + "&toName=" + name);
                temp.setUrl(url + "yszd/html/guidance-detail.html?openid=" + openid + "&toUser=" + json.getString("toUser") + "&id=" + String.valueOf(json.get("id")) + "&toName=" + name+"&represented="+json.getString("represented"));
                temp_id = SystemConf.getInstance().getSystemProperties().getProperty("template_health_notice");
                temp.setTemplate_id(temp_id);
                WechatTemplateData keyword1 = new WechatTemplateData();
@ -331,7 +331,7 @@ public class PushMsgTask {
                keyword5.setValue(json.getString("content"));
                m.put("keyword5", keyword5);
            } else if (type == 5) {
                temp.setUrl(url + "ssgg/html/doctor-homepage-new.html?openid=" + openid + "&state=" + json.getString("doctor") + "&toUser=" + json.getString("toUser") + "&toName=" + name);
                temp.setUrl(url + "ssgg/html/doctor-homepage-new.html?openid=" + openid + "&state=" + json.getString("doctor") + "&toUser=" + json.getString("toUser") + "&toName=" + name+"&represented="+json.getString("represented"));
                temp_id = SystemConf.getInstance().getSystemProperties().getProperty("template_termination");
                temp.setTemplate_id(temp_id);
                WechatTemplateData keyword1 = new WechatTemplateData();
@ -351,7 +351,7 @@ public class PushMsgTask {
                keyword4.setValue(json.getString("date"));
                m.put("keyword4", keyword4);
            } else if (type == 6) {
                temp.setUrl(url + "wdyy/html/detail-appointment.html?openid=" + openid + "&orgCode=" + json.get("orgCode") + "&id=" + json.getString("id") + "&toUser=" + json.getString("toUser") + "&toName=" + name);
                temp.setUrl(url + "wdyy/html/detail-appointment.html?openid=" + openid + "&orgCode=" + json.get("orgCode") + "&id=" + json.getString("id") + "&toUser=" + json.getString("toUser") + "&toName=" + name+"&represented="+json.getString("represented"));
                temp_id = SystemConf.getInstance().getSystemProperties().getProperty("template_appoint_success");
                temp.setTemplate_id(temp_id);
                WechatTemplateData keyword1 = new WechatTemplateData();
@ -371,7 +371,7 @@ public class PushMsgTask {
                keyword4.setValue(json.getString("date"));
                m.put("planstarttime", keyword4);
            } else if (type == 7) {
                temp.setUrl(url + "wdyy/html/my-appointment.html?openid=" + openid + "&toUser=" + json.getString("toUser") + "&toName=" + name);
                temp.setUrl(url + "wdyy/html/my-appointment.html?openid=" + openid + "&toUser=" + json.getString("toUser") + "&toName=" + name+"&represented="+json.getString("represented"));
                temp_id = SystemConf.getInstance().getSystemProperties().getProperty("template_appoint_failed");
                temp.setTemplate_id(temp_id);
                WechatTemplateData keyword1 = new WechatTemplateData();
@ -411,7 +411,7 @@ public class PushMsgTask {
                keyword4.setValue(json.getString("content"));
                m.put("remark", keyword4);
            } else if (type == 9) {
                temp.setUrl(url + "jkjy/html/article.html?openid=" + openid + "&dataId=" + json.getString("article") + "&toUser=" + json.getString("toUser") + "&toName=" + name);
                temp.setUrl(url + "jkjy/html/article.html?openid=" + openid + "&dataId=" + json.getString("article") + "&toUser=" + json.getString("toUser") + "&toName=" + name+"&represented="+json.getString("represented"));
                temp_id = SystemConf.getInstance().getSystemProperties().getProperty("template_healthy_article");
                temp.setTemplate_id(temp_id);
                WechatTemplateData keyword1 = new WechatTemplateData();
@ -435,7 +435,7 @@ public class PushMsgTask {
                keyword5.setValue(json.getString("remark"));
                m.put("remark", keyword5);
            } else if (type == 10) {
                temp.setUrl(url + "qygl/html/signing-doctors.html?openid=" + openid + "&state=" + openid + "&toUser=" + json.getString("toUser") + "&toName=" + name);
                temp.setUrl(url + "qygl/html/signing-doctors.html?openid=" + openid + "&state=" + openid + "&toUser=" + json.getString("toUser") + "&toName=" + name+"&represented="+json.getString("represented"));
                temp.setTemplate_id(SystemConf.getInstance().getSystemProperties()
                        .getProperty("template_doctor_change"));
                WechatTemplateData keyword1 = new WechatTemplateData();
@ -453,7 +453,7 @@ public class PushMsgTask {
                keyword3.setValue(json.getString("keyword3"));
                m.put("keyword3", keyword3);
            } else if (type == 11) {
                String xinurl = url + "survey/html/survey_info.html?openid=" + openid + "&state=" + openid + "&survey_id=" + json.getString("survey_id") + "&toUser=" + json.getString("toUser") + "&toName=" + name;
                String xinurl = url + "survey/html/survey_info.html?openid=" + openid + "&state=" + openid + "&survey_id=" + json.getString("survey_id") + "&toUser=" + json.getString("toUser") + "&toName=" + name+"&represented="+json.getString("represented");
//                temp.setUrl(url + "survey/html/survey_info.html?openid=" + openid + "&state=" + openid + "&survey_id=" + json.getString("survey_id") + "&toUser=" + json.getString("toUser") + "&toName=" + name);
                temp.setUrl(xinurl);
//                temp.setTemplate_id("fgYiMntj1amEkE8_GLUPmAIyssUAroJrNSHqvydt-PQ");
@ -539,7 +539,7 @@ public class PushMsgTask {
                keyword1.setValue(json.getString("keyword1"));
                m.put("keyword1", keyword1);
            } else if (type == 16) {
                temp.setUrl(url + "xuqian/html/information.html?openid=" + openid+"&changeDoctor="+1);
                temp.setUrl(url + "xuqian/html/information.html?openid=" + openid+"&changeDoctor="+1 + "&toUser=" + json.getString("toUser") + "&toName=" + name+"&represented="+json.getString("represented"));
                temp.setTemplate_id(SystemConf.getInstance().getSystemProperties().getProperty("template_doctor_survey"));
                WechatTemplateData keyword1 = new WechatTemplateData();
                keyword1.setColor("#000000");
@ -550,7 +550,7 @@ public class PushMsgTask {
                keyword2.setValue(json.getString("keyword2"));
                m.put("keyword2", keyword2);
            } else if (type == 17) {
                temp.setUrl(url + "yszx/html/doctor-consultation.html?openid=" + openid + "&consult=" + json.getString("consult") + "&toUser=" + json.getString("toUser") + "&toName=" + name);
                temp.setUrl(url + "yszx/html/doctor-consultation.html?openid=" + openid + "&consult=" + json.getString("consult") + "&toUser=" + json.getString("toUser") + "&toName=" + name+"&represented="+json.getString("represented"));
                temp.setTemplate_id(SystemConf.getInstance().getSystemProperties().getProperty("template_doctor_survey"));
                WechatTemplateData keyword1 = new WechatTemplateData();
                keyword1.setColor("#000000");

+ 33 - 13
patient-co-wlyy/src/main/java/com/yihu/wlyy/task/RemindExpensesTask.java

@ -7,14 +7,13 @@ import com.yihu.wlyy.service.app.consult.ConsultService;
import com.yihu.wlyy.service.common.SMSService;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
import javax.print.Doc;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@ -32,6 +31,8 @@ public class RemindExpensesTask implements Runnable {
    @Autowired
    WeiXinAccessTokenUtils tokenUtils;
    @Autowired
    WeiXinOpenIdUtils weiXinOpenIdUtils;
    @Autowired
    ConsultService consultService;
    public RemindExpensesTask(List<Patient> patients, Doctor doctor, Hospital hospital) {
@ -53,20 +54,39 @@ public class RemindExpensesTask implements Runnable {
                    }
                    sb.append(p.getMobile());
                }
                // 微信提醒
                JSONObject json = new JSONObject();
                json.put("first", "缴费提醒");
                json.put("toUser", p.getCode());
                json.put("represented",p.getCode());//被代理人
                json.put("name", p.getName());
                json.put("doctor", doctor.getCode());
                json.put("doctorName", doctor.getName());
                json.put("date", DateUtil.dateToStrShort(new Date()));
                json.put("content", p.getName() + ",您好!为完成家庭医生签约,尽早为您提供家庭医生服务,请尽快到" + hospital.getName() + "(地址:" + hospital.getAddress() + ")缴费");
                json.put("remark", "");
                if (StringUtils.isNotEmpty(p.getOpenid())) {
                    // 微信提醒
                    JSONObject json = new JSONObject();
                    json.put("first", "缴费提醒");
                    json.put("toUser", p.getCode());
                    json.put("name", p.getName());
                    json.put("doctor", doctor.getCode());
                    json.put("doctorName", doctor.getName());
                    json.put("date", DateUtil.dateToStrShort(new Date()));
                    json.put("content", p.getName() + ",您好!为完成家庭医生签约,尽早为您提供家庭医生服务,请尽快到" + hospital.getName() + "(地址:" + hospital.getAddress() + ")缴费");
                    json.put("remark", "");
                    // 添加到发送队列
                    PushMsgTask.getInstance().putWxMsg(tokenUtils.getAccessToken(), 8, p.getOpenid(), p.getName(), json);
                }
                //发送代理人
                JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
                if(jsonArray!=null&&jsonArray.length()>0){
                    String first = (String) json.get("doctorName");
                    for (int i = 0;i<jsonArray.length();i++){
                        JSONObject j  = jsonArray.getJSONObject(i);
                        Patient member = (Patient) j.get("member");
                        if(StringUtils.isNotBlank(member.getOpenid())){
                            JSONObject data = json;
                            data.remove("toUser");
                            data.put("toUser",member.getCode());
                            data.remove("doctorName");
                            data.put("doctorName", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), member.getName()) +"\n"+first);
                            PushMsgTask.getInstance().putWxMsg(tokenUtils.getAccessToken(), 8, member.getOpenid(), member.getName(), data);
                        }
                    }
                }
                //发送IM
                consultService.sendMucMessageBySingnType(doctor.getCode(), doctor.getName(), p.getCode(), doctor.getName() + "医生提醒您:为完成家庭医生签约," +
                        "尽早为您提供家庭医生服务,请尽快到" + doctor.getName() + "(地址:" + hospital.getAddress() + ")缴费", "1", p.getName());

+ 36 - 20
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/consult/DoctorConsultPublicController.java

@ -1,11 +1,16 @@
package com.yihu.wlyy.web.doctor.consult;
import java.util.Date;
import com.yihu.wlyy.entity.consult.ConsultPublic;
import com.yihu.wlyy.entity.consult.ConsultPublicReply;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.service.app.account.DoctorInfoService;
import com.yihu.wlyy.service.app.consult.ConsultPublicService;
import com.yihu.wlyy.service.common.account.PatientService;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.util.CommonUtil;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.web.BaseController;
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
import io.swagger.annotations.Api;
@ -17,18 +22,10 @@ import org.springframework.data.domain.Page;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.yihu.wlyy.entity.consult.ConsultPublic;
import com.yihu.wlyy.entity.consult.ConsultPublicReply;
import com.yihu.wlyy.service.app.consult.ConsultPublicService;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.util.CommonUtil;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.util.MessageType;
import com.yihu.wlyy.web.BaseController;
import java.util.Date;
/**
 * 医生端:公共咨询控制类
@ -234,8 +231,10 @@ public class DoctorConsultPublicController extends BaseController {
				Patient p = patientService.findByCode(cp.getPatient());
				JSONObject json = new JSONObject();
				json.put("isPublic", 1);
				json.put("first", p.getName() + ",您好!\n您的公共咨询有新的回复");
				String first = p.getName() + ",您好!\n您的公共咨询有新的回复";
				json.put("first", first);
				json.put("toUser", p.getCode());
				json.put("represented",p.getCode());//被代理人
				String symp = cp.getContent();
//				json.put("consultcontent", StringUtils.isNotEmpty(symp) && symp.length() > 50 ? (symp.substring(0, 50) + "...")  : content);
				json.put("consultcontent", StringUtils.isNotEmpty(symp) && symp.length() > 50 ? (symp.substring(0, 50) + "...")  : symp);
@ -249,14 +248,31 @@ public class DoctorConsultPublicController extends BaseController {
				if(StringUtils.isNotBlank(p.getOpenid())){
					// 添加到发送队列
					PushMsgTask.getInstance().putWxMsg(weiXinAccessTokenUtils.getAccessToken(), 3, p.getOpenid(), p.getName(), json);
				}else{
					JSONObject j  = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
					Patient member = (Patient) j.get("member");
					if(StringUtils.isNotBlank(member.getOpenid())){
						String first = (String) json.get("first");
						json.remove("first");
						json.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+first);
						PushMsgTask.getInstance().putWxMsg(weiXinAccessTokenUtils.getAccessToken(), 3, member.getOpenid(), member.getName(), json);
				}
//				else{
//					JSONObject j  = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
//					Patient member = (Patient) j.get("member");
//					if(StringUtils.isNotBlank(member.getOpenid())){
//						String first = (String) json.get("first");
//						json.remove("first");
//						json.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+first);
//						PushMsgTask.getInstance().putWxMsg(weiXinAccessTokenUtils.getAccessToken(), 3, member.getOpenid(), member.getName(), json);
//					}
//				}
				//发送代理人
				JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
				if(jsonArray!=null&&jsonArray.length()>0){
					for (int i = 0;i<jsonArray.length();i++){
						JSONObject j  = jsonArray.getJSONObject(i);
						Patient member = (Patient) j.get("member");
						if(StringUtils.isNotBlank(member.getOpenid())){
							JSONObject data = json;
							data.remove("toUser");
							data.put("toUser",member.getCode());
							data.remove("first");
							data.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+first);
							PushMsgTask.getInstance().putWxMsg(weiXinAccessTokenUtils.getAccessToken(), 3, member.getOpenid(), member.getName(), data);
						}
					}
				}

+ 38 - 20
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/health/DoctorHealthEduArticleController.java

@ -1,7 +1,6 @@
package com.yihu.wlyy.web.doctor.health;
import java.util.*;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.education.*;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.patient.SignFamily;
@ -10,18 +9,19 @@ import com.yihu.wlyy.repository.patient.SignFamilyDao;
import com.yihu.wlyy.service.app.consult.ConsultService;
import com.yihu.wlyy.service.app.health.*;
import com.yihu.wlyy.service.app.label.SignPatientLabelInfoService;
import com.yihu.wlyy.service.common.account.DoctorService;
import com.yihu.wlyy.service.common.account.PatientService;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.util.ImUtill;
import com.yihu.wlyy.util.MessageType;
import com.yihu.wlyy.web.WeixinBaseController;
import com.yihu.wlyy.web.doctor.message.DoctorMessageController;
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.models.auth.In;
import org.apache.commons.lang3.StringUtils;
import org.htmlparser.Parser;
import org.htmlparser.beans.StringBean;
import org.htmlparser.util.ParserException;
import org.htmlparser.visitors.TextExtractingVisitor;
import org.json.JSONArray;
@ -35,12 +35,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.service.common.account.DoctorService;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.util.MessageType;
import com.yihu.wlyy.web.BaseController;
import java.util.*;
/**
 * 医生端:健康教育控制类
@ -429,6 +425,7 @@ public class DoctorHealthEduArticleController extends WeixinBaseController {
                        json.put("article", temp.getCode() + "");
                        json.put("title", temp.getTitle());
                        json.put("doctorName", doctor.getName());
                        json.put("represented",p);//被代理人
                        json.put("date", DateUtil.dateToStrLong(DateUtil.getNowDate()));
                        json.put("remark", endMsg);
                        Map<String, Object> content = new HashMap<>();
@ -456,18 +453,39 @@ public class DoctorHealthEduArticleController extends WeixinBaseController {
                                map.get("openid") == null ? "" : map.get("openid").toString(),
                                map.get("name") == null ? "" : map.get("name").toString(),
                                (JSONObject) map.get("json"));
                    }else{
                        JSONObject j = weiXinOpenIdUtils.getFamilyOpenId((String)map.get("code"));
                    }
//                    else{
//                        JSONObject j = weiXinOpenIdUtils.getFamilyOpenId((String)map.get("code"));
//                        Patient p = patientService.findByCode((String)map.get("code"));
//                        Patient member = (Patient)j.get("member");
//                        JSONObject data = (JSONObject) map.get("json");
//                        String first = (String)data.get("first");
//                        data.remove("first");
//                        data.put("first",weiXinOpenIdUtils.getTitleMes(p,j.isNull("relation")?1:j.getInt("relation"),p.getName()));
//                        if(StringUtils.isNotBlank(member.getOpenid())){
//                            PushMsgTask.getInstance().putWxMsg(getAccessToken(), 9, member.getOpenid(), member.getName(), data);
//                        }
//                    }
                    //发送代理人
                    JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId((String)map.get("code"));
                    if(jsonArray!=null&&jsonArray.length()>0){
                        Patient p = patientService.findByCode((String)map.get("code"));
                        Patient member = (Patient)j.get("member");
                        JSONObject data = (JSONObject) map.get("json");
                        String first = (String)data.get("first");
                        data.remove("first");
                        data.put("first",weiXinOpenIdUtils.getTitleMes(p,j.isNull("relation")?1:j.getInt("relation"),p.getName()));
                        if(StringUtils.isNotBlank(member.getOpenid())){
                            PushMsgTask.getInstance().putWxMsg(getAccessToken(), 9, member.getOpenid(), member.getName(), data);
                        for (int i=0;i<jsonArray.length();i++){
                            JSONObject j = jsonArray.getJSONObject(i);
                            Patient member = (Patient)j.get("member");
                            JSONObject data = (JSONObject) map.get("json");
                            data.remove("toUser");
                            data.put("toUser",member.getCode());
                            String first = (String)data.get("first");
                            data.remove("first");
                            data.put("first",weiXinOpenIdUtils.getTitleMes(p,j.isNull("relation")?1:j.getInt("relation"),member.getName()));
                            if(StringUtils.isNotBlank(member.getOpenid())){
                                PushMsgTask.getInstance().putWxMsg(getAccessToken(), 9, member.getOpenid(), member.getName(), data);
                            }
                        }
                    }
                }
                for (HealthEduArticlePatient heap : list) {
                    BusinessLogs.info(BusinessLogs.BusinessType.article, getUID(), heap.getPatient(), new JSONObject(heap));

+ 17 - 6
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/patient/DoctorPatientGroupController.java

@ -3,8 +3,10 @@ package com.yihu.wlyy.web.doctor.patient;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.doctor.team.sign.DoctorPatientGroup;
import com.yihu.wlyy.entity.doctor.team.sign.DoctorPatientGroupInfo;
import com.yihu.wlyy.entity.doctor.team.sign.DoctorTeam;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.patient.SignFamily;
import com.yihu.wlyy.repository.doctor.DoctorTeamDao;
import com.yihu.wlyy.repository.patient.SignFamilyDao;
import com.yihu.wlyy.service.app.account.DoctorInfoService;
import com.yihu.wlyy.service.app.account.DoctorPatientGroupService;
@ -53,6 +55,8 @@ public class DoctorPatientGroupController extends BaseController {
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private StringRedisTemplate redisTemplate;
    @Autowired
    private DoctorTeamDao doctorTeamDao;
    private final int DOCTOR_PATIENT_OBJECT_LENGTH = 13;
@ -1144,14 +1148,21 @@ public class DoctorPatientGroupController extends BaseController {
            JSONArray array = new JSONArray();
            List<Doctor> doctors = new ArrayList<>();
            SignFamily signFamily = signFamilyDao.findByFamilyDoctorAndPatient(getUID(), patient);
            if (signFamily != null) {
            //签约团队
            DoctorTeam dt = doctorTeamDao.findByPatientCode(patient);
            if(dt!=null){
                // 查询家庭医生团队
                doctors = drHealthTeamService.findTeamDoctors(signFamily.getTeamCode());
            }else{
                //健管查询
                doctors = drHealthTeamService.findTeamDoctorsByPatient(patient);
                doctors = drHealthTeamService.findTeamDoctors(dt.getCode());
            }
//            SignFamily signFamily = signFamilyDao.findByFamilyDoctorAndPatient(getUID(), patient);
//            if (signFamily != null) {
//                // 查询家庭医生团队
//                doctors = drHealthTeamService.findTeamDoctors(signFamily.getTeamCode());
//            }else{
//                //健管查询
//                doctors = drHealthTeamService.findTeamDoctorsByPatient(patient);
//            }
            if (doctors != null && doctors.size() > 0) {
                for (Doctor doctor : doctors) {
                    if (doctor == null) {

+ 43 - 23
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/survey/ManagerQuestionnaireController.java

@ -1,18 +1,12 @@
package com.yihu.wlyy.web.doctor.survey;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.wlyy.entity.doctor.survey.SurveyTemplates;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.wechat.WechatTemplate;
import com.yihu.wlyy.entity.wechat.WechatTemplateData;
import com.yihu.wlyy.repository.doctor.SurveyUserDao;
import com.yihu.wlyy.repository.patient.PatientDao;
import com.yihu.wlyy.service.survey.ManagerQuestionnaireService;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.util.HttpUtil;
import com.yihu.wlyy.util.SystemConf;
import com.yihu.wlyy.web.BaseController;
import com.yihu.wlyy.web.WeixinBaseController;
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -23,7 +17,6 @@ import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@ -31,7 +24,10 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 管理端问卷调查 manager路径需要验证
@ -50,6 +46,8 @@ public class ManagerQuestionnaireController extends WeixinBaseController {
    private SurveyUserDao surveyUserDao;
    @Autowired
    WeiXinOpenIdUtils weiXinOpenIdUtils;
    @Autowired
    private WeiXinAccessTokenUtils weiXinAccessTokenUtils;
    private Logger logger = LoggerFactory.getLogger(this.getClass());
    /**
@ -470,28 +468,50 @@ public class ManagerQuestionnaireController extends WeixinBaseController {
                        String openId = p.getOpenid();
                        json.put("keyword2", sdf.format(new Date()));
                        json.put("toUser", c);
                        json.put("represented", c);
                        json.put("survey_id", code);
                        json.put("first", name + ",您好!为了给您提供更好的家庭医生健康服务,现有一份问卷需要您填写。");
                        String first = name + ",您好!为了给您提供更好的家庭医生健康服务,现有一份问卷需要您填写。";
                        json.put("first", first);
                        //判断是否判定openId,有没有发则查找家人发送
                        if (StringUtils.isNotBlank(p.getOpenid())) {
                            // 添加到发送队列
                            logger.error("json =======>" + json);
//                            PushMsgTask.getInstance().putWxMsg(accessToken, 11, openId, name, json);
                            PushMsgTask.getInstance().sendWeixinMessage(accessToken, 11, openId, name, json);
                        } else {
                            JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(p.getOpenid());
                            Patient member = (Patient) j.get("member");
                            if (StringUtils.isNotBlank(member.getOpenid())) {
                                String first = (String) json.get("first");
                                json.remove("first");
                                try {
                                    json.put("first", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), member.getName()) + first);
                                } catch (Exception e) {
                                    e.printStackTrace();
                        }
//                        else {
//                            JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(p.getOpenid());
//                            Patient member = (Patient) j.get("member");
//                            if (StringUtils.isNotBlank(member.getOpenid())) {
//                                String first = (String) json.get("first");
//                                json.remove("first");
//                                try {
//                                    json.put("first", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), member.getName()) + first);
//                                } catch (Exception e) {
//                                    e.printStackTrace();
//                                }
//                                logger.error("没有opIn  json =======>" + json);
////                                PushMsgTask.getInstance().putWxMsg(accessToken, 11, member.getOpenid(), member.getName(), json);
//                                PushMsgTask.getInstance().sendWeixinMessage(accessToken, 11, member.getOpenid(), member.getName(), json);
//                            }
//                        }
                        //发送代理人
                        JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
                        if(jsonArray!=null&&jsonArray.length()>0){
                            for (int i = 0;i<jsonArray.length();i++){
                                JSONObject j  = jsonArray.getJSONObject(i);
                                Patient member = (Patient) j.get("member");
                                if(StringUtils.isNotBlank(member.getOpenid())){
                                    json.remove("toUser");
                                    json.put("toUser",member.getCode());
                                    json.remove("first");
                                    try {
                                        json.put("first", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), member.getName()) + first);
                                    } catch (Exception e) {
                                        e.printStackTrace();
                                    }
                                    PushMsgTask.getInstance().sendWeixinMessage(weiXinAccessTokenUtils.getAccessToken(), 11, member.getOpenid(), member.getName(), json);
                                }
                                logger.error("没有opIn  json =======>" + json);
//                                PushMsgTask.getInstance().putWxMsg(accessToken, 11, member.getOpenid(), member.getName(), json);
                                PushMsgTask.getInstance().sendWeixinMessage(accessToken, 11, member.getOpenid(), member.getName(), json);
                            }
                        }
                    }

+ 28 - 8
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/booking/PatientBookingController.java

@ -13,6 +13,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@ -70,6 +71,7 @@ public class PatientBookingController extends WeixinBaseController{
                    JSONObject json = new JSONObject();
                    json.put("first", "");
                    json.put("toUser", p.getCode());
                    json.put("represented",p.getCode());//被代理人
                    json.put("name", obj.getName());
                    json.put("date", obj.getStartTime());
                    json.put("doctorName", obj.getDoctorName());
@ -80,14 +82,32 @@ public class PatientBookingController extends WeixinBaseController{
                    if(StringUtils.isNotBlank(p.getOpenid())){
                        // 添加到发送队列
                        PushMsgTask.getInstance().putWxMsg(getAccessToken(), 7, p.getOpenid(), obj.getName(), json);
                    }else{
                        JSONObject j  = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
                        Patient member = (Patient) j.get("member");
                        if(StringUtils.isNotBlank(member.getOpenid())){
                            String first = (String) json.get("first");
                            json.remove("first");
                            json.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+first);
                            PushMsgTask.getInstance().putWxMsg(getAccessToken(), 7, member.getOpenid(), member.getName(), json);
                    }
//                    else{
//                        JSONObject j  = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
//                        Patient member = (Patient) j.get("member");
//                        if(StringUtils.isNotBlank(member.getOpenid())){
//                            String first = (String) json.get("first");
//                            json.remove("first");
//                            json.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+first);
//                            PushMsgTask.getInstance().putWxMsg(getAccessToken(), 7, member.getOpenid(), member.getName(), json);
//                        }
//                    }
                    //发送代理人
                    JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
                    if(jsonArray!=null&&jsonArray.length()>0){
                        String first = (String) json.get("first");
                        for (int i = 0;i<jsonArray.length();i++){
                            JSONObject j  = jsonArray.getJSONObject(i);
                            Patient member = (Patient) j.get("member");
                            if(StringUtils.isNotBlank(member.getOpenid())){
                                JSONObject data = json;
                                data.remove("toUser");
                                data.put("toUser",member.getCode());
                                data.remove("first");
                                data.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+first);
                                PushMsgTask.getInstance().putWxMsg(getAccessToken(), 7, member.getOpenid(), member.getName(), data);
                            }
                        }
                    }
                }

+ 78 - 22
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/third/BookingController.java

@ -300,6 +300,7 @@ public class BookingController extends WeixinBaseController {
                JSONObject json = new JSONObject();
                json.put("first", "");
                json.put("toUser", p.getCode());
                json.put("represented",p.getCode());//被代理人
                json.put("id", obj.getCode());
                json.put("date", obj.getStartTime());
                json.put("orgCode", obj.getOrgCode());
@ -312,19 +313,36 @@ public class BookingController extends WeixinBaseController {
                if(StringUtils.isNotBlank(p.getOpenid())){
                        // 添加到发送队列
                        PushMsgTask.getInstance().putWxMsg(getAccessToken(), 6, p.getOpenid(), p.getName(), json);
                    }else{
                        JSONObject j  = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
                }
//                else{
//                    JSONObject j  = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
//                    Patient member = (Patient) j.get("member");
//                    if(StringUtils.isNotBlank(member.getOpenid())){
//                        String first = (String) json.get("first");
//                        json.remove("first");
//                        json.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+first);
//                        PushMsgTask.getInstance().putWxMsg(getAccessToken(), 6, member.getOpenid(), member.getName(), json);
//                    }
//                }
                //发送代理人
                JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
                if(jsonArray!=null&&jsonArray.length()>0){
                    for (int i = 0;i<jsonArray.length();i++){
                        JSONObject j  = jsonArray.getJSONObject(i);
                        Patient member = (Patient) j.get("member");
                        if(StringUtils.isNotBlank(member.getOpenid())){
                            JSONObject data = json;
                            data.remove("toUser");
                            data.put("toUser",member.getCode());
                            String first = (String) json.get("first");
                            json.remove("first");
                            json.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+first);
                            PushMsgTask.getInstance().putWxMsg(getAccessToken(), 6, member.getOpenid(), member.getName(), json);
                            data.remove("first");
                            data.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName()));
                            PushMsgTask.getInstance().putWxMsg(getAccessToken(), 6, member.getOpenid(), member.getName(), data);
                        }
                    }
                }
                //发送短信小时
                // 调用总部发送信息的接口
                //String result = HttpClientUtil.post(SystemConf.getInstance().getSmsUrl(), buildSmsParams(msg, p.getMobile()), "GBK");
@ -378,6 +396,7 @@ public class BookingController extends WeixinBaseController {
                    JSONObject json = new JSONObject();
                    json.put("first", "");
                    json.put("toUser", p.getCode());
                    json.put("represented",p.getCode());//被代理人
                    json.put("name", obj.getName());
                    json.put("date", obj.getStartTime());
                    json.put("doctorName", obj.getDoctorName());
@ -388,14 +407,32 @@ public class BookingController extends WeixinBaseController {
                    if(StringUtils.isNotBlank(p.getOpenid())){
                        // 添加到发送队列
                        PushMsgTask.getInstance().putWxMsg(getAccessToken(), 7, p.getOpenid(), obj.getName(), json);
                    }else{
                        JSONObject j  = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
                        Patient member = (Patient) j.get("member");
                        if(StringUtils.isNotBlank(member.getOpenid())){
                            String first = (String) json.get("first");
                            json.remove("first");
                            json.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+first);
                            PushMsgTask.getInstance().putWxMsg(getAccessToken(), 7, member.getOpenid(), member.getName(), json);
                    }
//                    else{
//                        JSONObject j  = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
//                        Patient member = (Patient) j.get("member");
//                        if(StringUtils.isNotBlank(member.getOpenid())){
//                            String first = (String) json.get("first");
//                            json.remove("first");
//                            json.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+first);
//                            PushMsgTask.getInstance().putWxMsg(getAccessToken(), 7, member.getOpenid(), member.getName(), json);
//                        }
//                    }
                    //发送代理人
                    JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
                    if(jsonArray!=null&&jsonArray.length()>0){
                        for (int i = 0;i<jsonArray.length();i++){
                            JSONObject j  = jsonArray.getJSONObject(i);
                            Patient member = (Patient) j.get("member");
                            if(StringUtils.isNotBlank(member.getOpenid())){
                                JSONObject data = json;
                                data.remove("toUser");
                                data.put("toUser",member.getCode());
                                String first = (String) json.get("first");
                                data.remove("first");
                                data.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName()));
                                PushMsgTask.getInstance().putWxMsg(getAccessToken(), 7, member.getOpenid(), member.getName(), data);
                            }
                        }
                    }
                }
@ -503,6 +540,7 @@ public class BookingController extends WeixinBaseController {
                        JSONObject json = new JSONObject();
                        json.put("first", "");
                        json.put("toUser", patient);
                        json.put("represented",patient);//被代理人
                        json.put("id", orderCode);
                        json.put("date", obj.getStartTime());
                        json.put("orgName", obj.getOrgName());
@ -515,14 +553,32 @@ public class BookingController extends WeixinBaseController {
                        if(StringUtils.isNotBlank(p.getOpenid())){
                            // 添加到发送队列
                            PushMsgTask.getInstance().putWxMsg(getAccessToken(), 6, p.getOpenid(), patientName, json);
                        }else{
                            JSONObject j  = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
                            Patient member = (Patient) j.get("member");
                            if(StringUtils.isNotBlank(member.getOpenid())){
                                String first = (String) json.get("first");
                                json.remove("first");
                                json.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+first);
                                PushMsgTask.getInstance().putWxMsg(getAccessToken(), 6, member.getOpenid(), member.getName(), json);
                        }
//                        else{
//                            JSONObject j  = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
//                            Patient member = (Patient) j.get("member");
//                            if(StringUtils.isNotBlank(member.getOpenid())){
//                                String first = (String) json.get("first");
//                                json.remove("first");
//                                json.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+first);
//                                PushMsgTask.getInstance().putWxMsg(getAccessToken(), 6, member.getOpenid(), member.getName(), json);
//                            }
//                        }
                        //发送代理人
                        JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
                        if(jsonArray!=null&&jsonArray.length()>0){
                            for (int i = 0;i<jsonArray.length();i++){
                                JSONObject j  = jsonArray.getJSONObject(i);
                                Patient member = (Patient) j.get("member");
                                if(StringUtils.isNotBlank(member.getOpenid())){
                                    JSONObject data = json;
                                    data.remove("toUser");
                                    data.put("toUser",member.getCode());
                                    String first = (String) json.get("first");
                                    data.remove("first");
                                    data.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName()));
                                    PushMsgTask.getInstance().putWxMsg(getAccessToken(), 6, member.getOpenid(), member.getName(), data);
                                }
                            }
                        }

+ 31 - 5
patient-co-wlyy/src/main/java/com/yihu/wlyy/wechat/util/WeiXinOpenIdUtils.java

@ -1,16 +1,14 @@
package com.yihu.wlyy.wechat.util;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.patient.PatientFamilyMember;
import com.yihu.wlyy.repository.patient.PatientDao;
import com.yihu.wlyy.repository.patient.PatientFamilyMemberDao;
import com.yihu.wlyy.service.app.family.FamilyMemberService;
import com.yihu.wlyy.util.IdCardUtil;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.apache.commons.lang3.StringUtils;
import javax.annotation.PostConstruct;
import java.util.ArrayList;
@ -102,8 +100,36 @@ public class WeiXinOpenIdUtils {
        return result;
    }
    /**
     * 查找代理人的openId
     * @param code
     * @return
     */
    public JSONArray getAgentOpenId(String code) {
        JSONArray result = new JSONArray();
        StringBuffer sql = new StringBuffer("SELECT * FROM wlyy_patient_family_member t WHERE t.patient = '" + code + "' and t.is_authorize =1 ");
        List<Map<String, Object>> members = jdbcTemplate.queryForList(sql.toString());
        if (members != null && members.size() > 0) {
            for (Map<String, Object> member : members) {
                String memberCode = (String) member.get("family_member");
                if (StringUtils.isNotBlank(memberCode)) {
                    Patient p = patientDao.findByCode(memberCode);
                    if (StringUtils.isNotBlank(p.getOpenid())) {
                        JSONObject json = new JSONObject();
                        json.put("member", p);
                        json.put("relation", (int) member.get("family_relation"));
                        result.put(json);
                    }
                }
            }
        }
        return result;
    }
    public String getTitleMes(Patient p, int ralation, String dealerName) throws Exception {
        return "因您的" + relations.get(familyRelationTrans(p, ralation)) + p.getName() + "未绑定微信,故请将该消息传达给" + dealerName + ":";
        return "因您是" + relations.get(familyRelationTrans(p, ralation)) + p.getName() + "的代理人,故请将该消息传达给" + dealerName + ":";
    }
    /**