Преглед изворни кода

新增微信家庭成员推送逻辑

trick9191 пре 8 година
родитељ
комит
6e9513432b
14 измењених фајлова са 512 додато и 68 уклоњено
  1. 49 5
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/account/DoctorInfoService.java
  2. 23 13
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/family/FamilyMemberService.java
  3. 24 4
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/health/PatientHealthGuidanceService.java
  4. 104 10
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/FamilyContractService.java
  5. 20 2
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/PatientRemindService.java
  6. 23 1
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/survey/ManagerQuestionnaireService.java
  7. 19 1
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/common/account/WechatController.java
  8. 19 1
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/consult/DoctorConsultPublicController.java
  9. 25 4
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/health/DoctorHealthEduArticleController.java
  10. 23 1
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/survey/ManagerQuestionnaireController.java
  11. 18 1
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/booking/PatientBookingController.java
  12. 2 2
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/family/FamilyMemberController.java
  13. 53 3
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/third/BookingController.java
  14. 110 20
      patient-co-wlyy/src/main/java/com/yihu/wlyy/wechat/util/WeiXinOpenIdUtils.java

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

@ -38,6 +38,7 @@ import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.util.ImUtill;
import com.yihu.wlyy.util.MD5;
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;
@ -107,6 +108,8 @@ public class DoctorInfoService extends BaseService {
    protected OperatorLogDao operatorLogDao;
    @Autowired
    private DoctorWorkTimeService doctorWorkTimeService;
    @Autowired
    private WeiXinOpenIdUtils weiXinOpenIdUtils;
    /**
     * 获取医生的签约病人
@ -875,7 +878,23 @@ public class DoctorInfoService extends BaseService {
                data.put("remark", newD.getName() + "医生与" + signFamily.getDoctorName() + "医生一道,为您提供优质健康服务");
            }
        }
        PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, p.getOpenid(), p.getName(), data);
        //判断是否判定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);
            }
        }
    }
    @Transactional
@ -973,8 +992,20 @@ public class DoctorInfoService extends BaseService {
        } else {
            data.put("remark", newD.getName() + "医生与" + signFamily.getDoctorName() + "医生一道,为您提供优质健康服务");
        }
        PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, p.getOpenid(), p.getName(), data);
        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);
            }
        }
        return 1;
    }
@ -1154,8 +1185,6 @@ public class DoctorInfoService extends BaseService {
        data.put("toUser", patient);
        data.put("doctor", newD.getCode());
        data.put("doctorName", newD.getName());
        data.put("first", p.getName() + ",您好!因签约团队内分工调整,您的责任医生有变动," + oldDoctorName +
                "医生无法继续为您服务,具体变动如下:");
        data.put("keyword3", "家庭医生");
        data.put("keyword2", DateUtil.dateToStrNoSecond(new Date()));
        data.put("keyword1", newD.getName());
@ -1164,6 +1193,21 @@ public class DoctorInfoService extends BaseService {
        } else {
            data.put("remark", newD.getName() + "医生与" + signFamily.getDoctorHealthName() + "医生一道,为您提供优质健康服务");
        }
        PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, p.getOpenid(), p.getName(), data);
        if(StringUtils.isNotBlank(p.getOpenid())){
            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);
            }
        }
    }
}

+ 23 - 13
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/family/FamilyMemberService.java

@ -22,6 +22,7 @@ import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import java.util.Date;
@ -514,10 +515,12 @@ public class FamilyMemberService extends BaseService {
        //判断是否绑定微信,如果版绑定了微信,将状态改变为 1
        Patient p = patientDao.findByCode(menber);
        if(StringUtils.isNotBlank(p.getOpenid())){
        if (StringUtils.isNotBlank(p.getOpenid())) {
            String sus = getIsSus(p.getOpenid());
            if (sus.equals("1")) {
                result = 1;
            if(StringUtils.isNotBlank(sus)){
                if ("1".equals(sus)) {
                    result = 1;
                }
            }
        }
        //2.判断手机过滤
@ -612,6 +615,7 @@ public class FamilyMemberService extends BaseService {
     * @return
     * @throws Exception
     */
    @Transactional
    public int addMemberByPw(String patient, String member, String password, int relation) throws Exception {
        if (patient.equals(member)) {
@ -646,6 +650,7 @@ public class FamilyMemberService extends BaseService {
     * @return
     * @throws Exception
     */
    @Transactional
    public int addMenberByWXTemp(Long id, String state) throws Exception {
        if (StringUtils.isNotBlank(state)) {
            //同意添加
@ -678,6 +683,7 @@ public class FamilyMemberService extends BaseService {
        return -1;
    }
    @Transactional
    public int addMemberByCaptcha(String patient, String member, String captcha, int relation) throws Exception {
        if (patient.equals(member)) {
@ -707,6 +713,7 @@ public class FamilyMemberService extends BaseService {
        return addMemberFamily(p, m, patient, member, relation);
    }
    @Transactional
    public int addMemberFamily(Patient p, Patient m, String patient, String member, int relation) throws Exception {
        if (relation < 5) {
@ -751,7 +758,8 @@ public class FamilyMemberService extends BaseService {
        return 1;
    }
    public int sendWXTemp(String patient, String member, String access_token, String openid,int relation) {
    @Transactional
    public int sendWXTemp(String patient, String member, String access_token, int relation) {
        Patient p = patientDao.findByCode(patient);
        Patient m = patientDao.findByCode(member);
@ -764,14 +772,15 @@ public class FamilyMemberService extends BaseService {
            return -2;
        }
        JSONObject json = new JSONObject();
        json.put("frist", m.getName()+",您好!"+p.getName()+"向您发起添加家人申请,添加成功后,对方可使用您的账号,为您处理各类健康服务。");
        json.put("keyword1","添加家人申请");
        json.put("keyword2", DateUtil.dateToStr(new Date(),"yyyy-MM-dd"));
        json.put("keyword3",p.getName());
        json.put("keyword4",relations.get(relation));
        json.put("remark","点击立即处理。");
        json.put("member",member);
        PushMsgTask.getInstance().putWxMsg(access_token, 12, openid, p.getName(), json);
        json.put("frist", m.getName() + ",您好!" + p.getName() + "向您发起添加家人申请,添加成功后,对方可使用您的账号,为您处理各类健康服务。");
        json.put("keyword1", "添加家人申请");
        json.put("keyword2", DateUtil.dateToStr(new Date(), "yyyy-MM-dd"));
        json.put("keyword3", p.getName());
        json.put("keyword4", relations.get(relation));
        json.put("remark", "点击立即处理。");
        json.put("member", member);
        //此消息为定向推送,无需家人代收
        PushMsgTask.getInstance().putWxMsg(access_token, 12, m.getOpenid(), p.getName(), json);
        PatientFamilyTemp temp = new PatientFamilyTemp();
        temp.setState("0");
@ -787,11 +796,12 @@ public class FamilyMemberService extends BaseService {
    /**
     * 获取subscribe
     *
     * @param openid
     * @return
     * @throws Exception
     */
    public String getIsSus(String openid) throws Exception{
    public String getIsSus(String openid) throws Exception {
        String userInfo_url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=" + getAccessToken() + "&openid=" + openid + "&lang=zh_CN";
        String params = "";
        String result = HttpUtil.sendGet(userInfo_url, params);

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

@ -11,6 +11,7 @@ import com.yihu.wlyy.repository.patient.SignFamilyDao;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
@ -43,6 +44,8 @@ public class PatientHealthGuidanceService extends BaseService {
	SignFamilyDao signFamilyDao;
	@Autowired
	JdbcTemplate jdbcTemplate;
	@Autowired
	WeiXinOpenIdUtils weiXinOpenIdUtils;
	public JSONObject findById(Long id){
		PatientHealthGuidance guidance = patientHealthGuidanceDao.findOne(id);
@ -109,10 +112,26 @@ public class PatientHealthGuidanceService extends BaseService {
		guidance.setAdminTeamCode(signFamily.getAdminTeamId());
		guidance.setSignType(2);
		guidance = patientHealthGuidanceDao.save(guidance);
		if (guidance != null && StringUtils.isNotEmpty(patient.getOpenid())) {
			// 推送消息到微信端
			JSONObject json = new JSONObject();
		String openId = null;
		String name = null;
		JSONObject json = new JSONObject();
		//判定openId是否为空空,如果为空,查找他家人的openId
		if(StringUtils.isNotBlank(patient.getOpenid())){
			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();
			json.put("first", weiXinOpenIdUtils.getTitleMes(patient,j.getInt("relation"),member.getName())+"健康指导提醒");
		}
		if (guidance != null && StringUtils.isNotEmpty(openId)) {
			json.put("toUser", patient.getCode());
			json.put("id", guidance.getId());
			json.put("date", DateUtil.getStringDate());
@ -120,7 +139,8 @@ public class PatientHealthGuidanceService extends BaseService {
			json.put("doctorName", doctor.getName());
			json.put("content", "您好!医生给您发来了一份新的健康指导。");
			json.put("remark", "请点击查看");
			PushMsgTask.getInstance().putWxMsg(accessToken, 4, patient.getOpenid(), patient.getName(), json);
			// 推送消息到微信端
			PushMsgTask.getInstance().putWxMsg(accessToken, 4, openId, name, json);
		}
		return guidance;
	}

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

@ -37,6 +37,7 @@ import com.yihu.wlyy.task.PushMsgTask;
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.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
@ -118,6 +119,8 @@ public class FamilyContractService extends BaseService {
    private DoctorWorkTimeService doctorWorkTimeService;
    @Autowired
    private OperatorLogDao operatorLogDao;
    @Autowired
    private WeiXinOpenIdUtils weiXinOpenIdUtils;
    public SignFamily findSignFamilyByCode(String code) {
        return signFamilyDao.findByCodeAndType(code, 2);
@ -993,8 +996,22 @@ public class FamilyContractService extends BaseService {
            json.put("date", DateUtil.dateToStrShort(sf.getBegin()));
            json.put("content", content);
            json.put("remark", ""); //您好,您成功签约家庭医生
            // 添加到发送队列
            PushMsgTask.getInstance().putWxMsg(access_token, 1, sf.getOpenid(), sf.getName(), json);
            if(StringUtils.isNotBlank(sf.getOpenid())){
                // 添加到发送队列
                PushMsgTask.getInstance().putWxMsg(access_token, 1, sf.getOpenid(), sf.getName(), json);
            }else{
                JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(patient.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(patient,j.getInt("relation"),member.getName()));
                    PushMsgTask.getInstance().putWxMsg(access_token, 1, member.getOpenid(), member.getName(), json);
                }
            }
            new Thread(new SignUploadTask(sf.getCode())).start();
            JSONObject participants = new JSONObject();
            participants.put(sf.getPatient(),0);
@ -1215,8 +1232,22 @@ public class FamilyContractService extends BaseService {
            json.put("date", DateUtil.dateToStrShort(new Date()));
            json.put("content", sf.getName() + ",您好!您与 " + (StringUtils.isEmpty(sf.getDoctor()) ? sf.getDoctorHealthName() : sf.getDoctorName()) + " 医生建立家庭医生签约关系失败,请查看!");
            json.put("remark", "您好,签约家庭医生失败通知");
            // 添加到发送队列
            PushMsgTask.getInstance().putWxMsg(access_token, 2, sf.getOpenid(), sf.getName(), json);
            if(StringUtils.isNotBlank(sf.getOpenid())){
                // 添加到发送队列
                PushMsgTask.getInstance().putWxMsg(access_token, 2, sf.getOpenid(), sf.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()));
                   PushMsgTask.getInstance().putWxMsg(access_token, 2, member.getOpenid(), member.getName(), json);
                }
            }
            result.put("status", 2);
            return result;
        }
@ -1245,7 +1276,20 @@ public class FamilyContractService extends BaseService {
            json.put("content", content);
            json.put("remark", ""); //您好,您成功签约家庭医生
            // 添加到发送队列
            PushMsgTask.getInstance().putWxMsg(access_token, 1, sf.getOpenid(), sf.getName(), json);
            if(StringUtils.isNotBlank(sf.getOpenid())){
                PushMsgTask.getInstance().putWxMsg(access_token, 1, sf.getOpenid(), sf.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()));
                    PushMsgTask.getInstance().putWxMsg(access_token, 1, member.getOpenid(), member.getName(), json);
                }
            }
            new Thread(new SignUploadTask(sf.getCode())).start();
            JSONObject participants = new JSONObject();
            participants.put(sf.getPatient(),0);
@ -1317,8 +1361,23 @@ public class FamilyContractService extends BaseService {
            json.put("doctorName", sf.getDoctorName());
            json.put("orgName", sf.getHospitalName());
            json.put("remark", sf.getName() + ",您好!您的签约医生已同意您的解约申请,解约已生效。");
            // 添加到发送队列
            PushMsgTask.getInstance().putWxMsg(access_token, 5, sf.getOpenid(), sf.getName(), json);
            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 {
            // 更新状态为正常
            signFamilyDao.refuseSurrender(patient);
@ -1331,8 +1390,23 @@ public class FamilyContractService extends BaseService {
            json.put("doctorName", sf.getDoctorName());
            json.put("orgName", sf.getHospitalName());
            json.put("remark", sf.getName() + ",您好!您的签约医生拒绝您的解约申请,解约失败。");
            // 添加到发送队列
            PushMsgTask.getInstance().putWxMsg(access_token, 5, sf.getOpenid(), sf.getName(), json);
            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);
                }
            }
        }
        return 1;
    }
@ -1937,7 +2011,27 @@ public class FamilyContractService extends BaseService {
        result.put("msg", "更新成功");
        for (JSONObject msg : wxMessages) {
            PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, p.getOpenid(), p.getName(), msg);
            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();
                    }
                    PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, member.getOpenid(), member.getName(), msg);
                }
            }
        }
        OperatorLog operatorLog = new OperatorLog();
        operatorLog.setCreateTime(new Date());

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

@ -16,6 +16,7 @@ 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.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
@ -55,6 +56,8 @@ public class PatientRemindService extends BaseService {
    JdbcTemplate jdbcTemplate;
    @Autowired
    ConsultService consultService;
    @Autowired
    WeiXinOpenIdUtils weiXinOpenIdUtils;
    /**
     * 缴费提醒
@ -220,8 +223,23 @@ public class PatientRemindService extends BaseService {
                json.put("date", DateUtil.dateToStrShort(new Date()));
                json.put("content", p.getName() + ",您好!为完成家庭医生签约,尽早为您提供家庭医生服务,请尽快到" + hos.getName() + "(地址:" + hos.getAddress() + ")缴费");
                json.put("remark", "");
                // 添加到发送队列
                PushMsgTask.getInstance().putWxMsg(tokenUtils.getAccessToken(), 8, p.getOpenid(), p.getName(), json);
                //判断是否判定openId,有没有发则查找家人发送
                if(StringUtils.isNotBlank(p.getOpenid())){
                    // 添加到发送队列
                    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())){
                        String first = (String) json.get("first");
                        json.remove("first");
                        json.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+first);
                        PushMsgTask.getInstance().putWxMsg(tokenUtils.getAccessToken(), 8, member.getOpenid(), member.getName(), json);
                    }
                }
                wFlag = true;
            }
            //发送IM

+ 23 - 1
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/survey/ManagerQuestionnaireService.java

@ -16,6 +16,7 @@ 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.WeiXinOpenIdUtils;
import com.yihu.wlyy.wechat.util.WeiXinTempMsgSendUtils;
import io.swagger.models.auth.In;
import org.apache.commons.lang3.StringUtils;
@ -86,6 +87,9 @@ public class ManagerQuestionnaireService extends BaseService {
    @Autowired
    private PatientDao patientDao;
    @Autowired
    WeiXinOpenIdUtils weiXinOpenIdUtils;
    public String createSurvey(String doctor, JSONObject jsonStr, String accessToken) throws Exception {
        System.out.println("=============>" + jsonStr);
@ -287,7 +291,25 @@ public class ManagerQuestionnaireService extends BaseService {
                json.put("toUser", c);
                json.put("survey_id",surveyCode );
                json.put("first", name + ",您好!为了给您提供更好的家庭医生健康服务,现有一份问卷需要您填写。");
                PushMsgTask.getInstance().putWxMsg(accessToken, 11, openId, name, json);
                //判断是否判定openId,有没有发则查找家人发送
                if(StringUtils.isNotBlank(p.getOpenid())){
                    // 添加到发送队列
                    PushMsgTask.getInstance().putWxMsg(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();
                        }
                        PushMsgTask.getInstance().putWxMsg(accessToken, 11, member.getOpenid(), member.getName(), json);
                    }
                }
            });
        }
//       =====================================================

+ 19 - 1
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/common/account/WechatController.java

@ -15,6 +15,7 @@ import com.yihu.wlyy.service.app.family.FamilyService;
import com.yihu.wlyy.service.common.login.LoginLogService;
import com.yihu.wlyy.util.HttpUtil;
import com.yihu.wlyy.util.MD5;
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
import io.swagger.annotations.Api;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
@ -60,6 +61,8 @@ public class WechatController extends WeixinBaseController {
    private LoginLogService loginLogService;
    @Autowired
    private FamilyMemberService familyMemberService;
    @Autowired
    WeiXinOpenIdUtils weiXinOpenIdUtils;
    /**
     * 患者注册-验证手机号
@ -597,7 +600,22 @@ public class WechatController extends WeixinBaseController {
            json.put("date", "2016-06-08");
            json.put("doctorName", "徐小鹏");
            json.put("orgName", "厦门第一医院");
            PushMsgTask.getInstance().putWxMsg(getAccessToken(), 5, patient.getOpenid(), patient.getName(), json);
            //判断是否判定openId,有没有发则查找家人发送
            if(StringUtils.isNotBlank(patient.getOpenid())){
                // 添加到发送队列
                PushMsgTask.getInstance().putWxMsg(getAccessToken(), 5, patient.getOpenid(), patient.getName(), json);
            }else{
                JSONObject j  = weiXinOpenIdUtils.getFamilyOpenId(patient.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(patient,j.getInt("relation"),member.getName())+first);
                    PushMsgTask.getInstance().putWxMsg(getAccessToken(),5, member.getOpenid(), member.getName(), json);
                }
            }
            return write(200, "发送成功");
        } catch (Exception e) {
            error(e);

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

@ -7,6 +7,7 @@ import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.service.app.account.DoctorInfoService;
import com.yihu.wlyy.service.common.account.PatientService;
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
import io.swagger.annotations.Api;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
@ -50,6 +51,8 @@ public class DoctorConsultPublicController extends BaseController {
	@Autowired
	WeiXinAccessTokenUtils weiXinAccessTokenUtils;
	@Autowired
	WeiXinOpenIdUtils weiXinOpenIdUtils;
	/**
	 * 查询公共咨询记录
	 * @param type 查询类型:0全部,1我的回答
@ -241,7 +244,22 @@ public class DoctorConsultPublicController extends BaseController {
				json.put("doctorName", doctor.getName());
				json.put("remark", "");
				PushMsgTask.getInstance().putWxMsg(weiXinAccessTokenUtils.getAccessToken(), 3, p.getOpenid(), p.getName(), json);
				//判断是否判定openId,有没有发则查找家人发送
				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);
					}
				}
				// 推送消息给患者
				//PushMsgTask.getInstance().put(cp.getPatient(), MessageType.MESSAGE_TYPE_PATIENT_CONSULT_PUBLIC_REPLY.P_CP_01.name(), MessageType.MESSAGE_TYPE_PATIENT_CONSULT_PUBLIC_REPLY.公共咨询.name(), MessageType.MESSAGE_TYPE_PATIENT_CONSULT_PUBLIC_REPLY.医生回复了您.name(), consult);
				return success("回复成功!");

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

@ -13,6 +13,7 @@ import com.yihu.wlyy.service.app.label.SignPatientLabelInfoService;
import com.yihu.wlyy.service.common.account.PatientService;
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;
@ -76,6 +77,8 @@ public class DoctorHealthEduArticleController extends WeixinBaseController {
    @Autowired
    ConsultService consultService;
    @Autowired
    WeiXinOpenIdUtils weiXinOpenIdUtils;
    /**
     * 查询
@ -402,6 +405,7 @@ public class DoctorHealthEduArticleController extends WeixinBaseController {
                        content.put("openid", patientTemp.getOpenid());
                        content.put("name", patientTemp.getName());
                        content.put("json", json);
                        content.put("code",patientTemp.getCode());
                        msgs.put(patientTemp.getCode(), content);
                    }
                }
@ -412,11 +416,28 @@ public class DoctorHealthEduArticleController extends WeixinBaseController {
                return error(-1, "发送失败!");
            } else {
                for (String key : msgs.keySet()) {
                    Map<String, Object> map = msgs.get(key);
                    PushMsgTask.getInstance().putWxMsg(getAccessToken(), 9,
                            map.get("openid") == null ? "" : map.get("openid").toString(),
                            map.get("name") == null ? "" : map.get("name").toString(),
                            (JSONObject) map.get("json"));
                    String openid = (String)map.get("openid");
                    if(StringUtils.isNotBlank(openid)){
                        PushMsgTask.getInstance().putWxMsg(getAccessToken(), 9,
                                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"));
                        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.getInt("relation"),member.getName()));
                        if(StringUtils.isNotBlank(member.getOpenid())){
                            PushMsgTask.getInstance().putWxMsg(getAccessToken(), 9, member.getOpenid(), member.getName(), data);
                        }
                    }
                    JSONObject json = (JSONObject) map.get("json");
                }

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

@ -13,6 +13,7 @@ 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.WeiXinOpenIdUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -47,6 +48,8 @@ public class ManagerQuestionnaireController extends WeixinBaseController {
    private PatientDao patientDao;
    @Autowired
    private SurveyUserDao surveyUserDao;
    @Autowired
    WeiXinOpenIdUtils weiXinOpenIdUtils;
    /**
     * 获取问卷列表
@ -456,7 +459,26 @@ public class ManagerQuestionnaireController extends WeixinBaseController {
                json.put("toUser", c);
                json.put("survey_id", code);
                json.put("first", name + ",您好!为了给您提供更好的家庭医生健康服务,现有一份问卷需要您填写。");
                PushMsgTask.getInstance().putWxMsg(accessToken, 11, openId, name, json);
                //判断是否判定openId,有没有发则查找家人发送
                if(StringUtils.isNotBlank(p.getOpenid())){
                    // 添加到发送队列
                    PushMsgTask.getInstance().putWxMsg(accessToken, 11, openId, name, 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");
                        try{
                            json.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),member.getName())+first);
                        }catch (Exception e){
                            e.printStackTrace();
                        }
                        PushMsgTask.getInstance().putWxMsg(getAccessToken(), 11, member.getOpenid(), member.getName(), json);
                    }
                }
            });
            return write(200, "发送成功!");

+ 18 - 1
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/booking/PatientBookingController.java

@ -8,6 +8,7 @@ import com.yihu.wlyy.service.third.guahao.GuahaoXMService;
import com.yihu.wlyy.service.third.guahao.GuahaoYihuService;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.web.WeixinBaseController;
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -36,6 +37,8 @@ public class PatientBookingController extends WeixinBaseController{
    private PatientReservationService patientReservationService;
    @Autowired
    private PatientService patientService;
    @Autowired
    WeiXinOpenIdUtils weiXinOpenIdUtils;
    @RequestMapping(value = "CancelOrder", method = RequestMethod.POST)
@ -72,7 +75,21 @@ public class PatientBookingController extends WeixinBaseController{
                    json.put("doctorName", obj.getDoctorName());
                    json.put("orgName", obj.getOrgName());
                    json.put("remark", obj.getName() + ",您好!\n您已取消了" + obj.getStartTime() + "的挂号!");
                    PushMsgTask.getInstance().putWxMsg(getAccessToken(), 7, p.getOpenid(), obj.getName(), json);
                    //判断是否判定openId,有没有发则查找家人发送
                    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);
                        }
                    }
                }
                return write(200, "取消挂号单成功!");
            } else {

+ 2 - 2
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/family/FamilyMemberController.java

@ -316,9 +316,9 @@ public class FamilyMemberController extends WeixinBaseController {
    @RequestMapping(value = "/sendWXTemp", method = RequestMethod.POST)
    @ApiOperation(value = "发送微信模板")
    public String sendWXTemp(String member, String access_token, String openid,int relation){
    public String sendWXTemp(@RequestParam("member")String member,@RequestParam("relation")int relation){
        try {
            int result = familyMemberService.sendWXTemp(getUID(),member,getAccessToken(),getOpenidByCode(member),relation);
            int result = familyMemberService.sendWXTemp(getUID(),member,getAccessToken(),relation);
            if(result==-1){
                return error(-1, "居民信息查询失败");
            }else if(result==-2){

+ 53 - 3
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/third/BookingController.java

@ -17,6 +17,7 @@ import com.yihu.wlyy.util.HttpClientUtil;
import com.yihu.wlyy.util.NetworkUtil;
import com.yihu.wlyy.util.SystemConf;
import com.yihu.wlyy.web.WeixinBaseController;
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -62,6 +63,9 @@ public class BookingController extends WeixinBaseController {
    @Autowired
    private SMSDao smsDao;
    @Autowired
    WeiXinOpenIdUtils weiXinOpenIdUtils;
    /**
     * 根据城市编码获取相应挂号服务
     *
@ -303,7 +307,23 @@ public class BookingController extends WeixinBaseController {
                    json.put("doctorName", obj.getDoctorName());
                    json.put("deptName", obj.getDeptName());
                    json.put("remark", p.getName() + ",您好!" + msg);
                    PushMsgTask.getInstance().putWxMsg(getAccessToken(), 6, p.getOpenid(), p.getName(), json);
                    //判断是否判定openId,有没有发则查找家人发送
                    if(StringUtils.isNotBlank(p.getOpenid())){
                        // 添加到发送队列
                        PushMsgTask.getInstance().putWxMsg(getAccessToken(), 6, 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(getAccessToken(), 6, member.getOpenid(), member.getName(), json);
                        }
                    }
                }
                //发送短信小时
                // 调用总部发送信息的接口
@ -363,7 +383,21 @@ public class BookingController extends WeixinBaseController {
                    json.put("doctorName", obj.getDoctorName());
                    json.put("orgName", obj.getOrgName());
                    json.put("remark", obj.getName() + ",您好!\n您已取消了" + obj.getStartTime() + "的挂号!");
                    PushMsgTask.getInstance().putWxMsg(getAccessToken(), 7, p.getOpenid(), obj.getName(), json);
                    //判断是否判定openId,有没有发则查找家人发送
                    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);
                        }
                    }
                }
                return write(200, "取消挂号单成功!");
@ -475,7 +509,23 @@ public class BookingController extends WeixinBaseController {
                        json.put("doctorName", obj.getDeptName());
                        json.put("deptName", obj.getDeptName());
                        json.put("remark", patientName + ",您好!\n" + msg);
                        PushMsgTask.getInstance().putWxMsg(getAccessToken(), 6, p.getOpenid(), patientName, json);
                        //判断是否判定openId,有没有发则查找家人发送
                        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{
                        des +=" 微信提醒失败,患者无绑定微信!";

+ 110 - 20
patient-co-wlyy/src/main/java/com/yihu/wlyy/wechat/util/WeiXinOpenIdUtils.java

@ -5,12 +5,16 @@ 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.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;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -26,30 +30,54 @@ public class WeiXinOpenIdUtils {
    @Autowired
    PatientDao patientDao;
    private Map<Integer, String> relations = new HashMap<>();
    @PostConstruct
    public void init() {
        relations.put(0, "其他");
        relations.put(1, "父亲");
        relations.put(2, "母亲");
        relations.put(3, "老公");
        relations.put(4, "老婆");
        relations.put(5, "儿子");
        relations.put(6, "女儿");
        relations.put(7, "未知");
    }
    //关系翻译
    public String getRelation(int relation) {
        return relations.get(relation);
    }
    /**
     * 先按照家庭关系“父亲→母亲→老公→老婆→儿子→女儿→其他”的顺序,获取openid
     *
     * @param code 推送人
     * @return
     */
    public String getFamilyOpenId(String code){
    public JSONObject getFamilyOpenId(String code) {
        /**
         * 按关系和时间排序
         */
        StringBuffer sql = new StringBuffer("SELECT * FROM wlyy_patient_family_member t WHERE t.patient = "+code+" ORDER BY t.family_relation ASC ,t.czrq DESC");
        StringBuffer sql = new StringBuffer("SELECT * FROM wlyy_patient_family_member t WHERE t.patient = " + code + " ORDER BY t.family_relation ASC ,t.czrq DESC");
        JSONObject result = new JSONObject();
        List<Map<String,Object>> members = jdbcTemplate.queryForList(sql.toString());
        List<Map<String,Object>> others = new ArrayList<>();
        if(members!=null&&members.size()>0){
            for(Map<String,Object> member : members){
        List<Map<String, Object>> members = jdbcTemplate.queryForList(sql.toString());
        List<Map<String, Object>> others = new ArrayList<>();
        if (members != null && members.size() > 0) {
            for (Map<String, Object> member : members) {
                if((int)member.get("family_relation")==0){
                if ((int) member.get("family_relation") == 0) {
                    others.add(member);
                }else{
                    String memberCode = (String)member.get("family_member");
                    if(StringUtils.isNotBlank(memberCode)){
                        Patient p =  patientDao.findByCode(memberCode);
                        if(StringUtils.isNotBlank(p.getOpenid())){
                            return p.getOpenid();
                } else {
                    String memberCode = (String) member.get("family_member");
                    if (StringUtils.isNotBlank(memberCode)) {
                        Patient p = patientDao.findByCode(memberCode);
                        if (StringUtils.isNotBlank(p.getOpenid())) {
                            result.put("member", p);
                            result.put("relation", (int) member.get("family_relation"));
                            return result;
                        }
                    }
                }
@ -57,17 +85,79 @@ public class WeiXinOpenIdUtils {
        }
        //查询为关系为其他的openid
        if(others!=null&&others.size()>0){
            for(Map<String,Object> other : others){
                String memberCode = (String)other.get("family_member");
                if(StringUtils.isNotBlank(memberCode)){
                    Patient p =  patientDao.findByCode(memberCode);
                    if(StringUtils.isNotBlank(p.getOpenid())){
                        return p.getOpenid();
        if (others != null && others.size() > 0) {
            for (Map<String, Object> other : others) {
                String memberCode = (String) other.get("family_member");
                if (StringUtils.isNotBlank(memberCode)) {
                    Patient p = patientDao.findByCode(memberCode);
                    if (StringUtils.isNotBlank(p.getOpenid())) {
                        result.put("member", p);
                        result.put("relation", (int) other.get("family_relation"));
                        return result;
                    }
                }
            }
        }
        return null;
    }
    public String getTitleMes(Patient p, int ralation, String dealerName) throws Exception {
        return "因您的" + relations.get(familyRelationTrans(p, ralation)) + p.getName() + "未绑定微信,故请将该消息传达给" + dealerName + ":";
    }
    /**
     * 家庭关系转换
     *
     * @param patient  居民
     * @param relation 关系 1父亲 2母亲 3老公 4老婆 5儿子 6女儿 7其他
     * @return
     */
    public int familyRelationTrans(Patient patient, int relation) throws Exception {
        int relationTrans = 0;
        switch (relation) {
            case 1:
            case 2:
                if (patient.getSex() == 1) {
                    relationTrans = 5;
                } else if (patient.getSex() == 2) {
                    relationTrans = 6;
                } else {
                    relationTrans = 0;
                }
                if (relationTrans == 0) {
                    if (IdCardUtil.getSexForIdcard(StringUtils.isEmpty(patient.getIdcard()) ? "" : patient.getIdcard()).equals("1")) {
                        relationTrans = 6;
                    } else if (IdCardUtil.getSexForIdcard(StringUtils.isEmpty(patient.getIdcard()) ? "" : patient.getIdcard()).equals("2")) {
                        relationTrans = 5;
                    }
                }
                break;
            case 3:
                relationTrans = 4;
                break;
            case 4:
                relationTrans = 3;
                break;
            case 5:
            case 6:
                if (patient.getSex() == 1) {
                    relationTrans = 1;
                } else if (patient.getSex() == 2) {
                    relationTrans = 2;
                } else {
                    relationTrans = 0;
                }
                if (relationTrans == 0) {
                    if (IdCardUtil.getSexForIdcard(StringUtils.isEmpty(patient.getIdcard()) ? "" : patient.getIdcard()).equals("1")) {
                        relationTrans = 2;
                    } else if (IdCardUtil.getSexForIdcard(StringUtils.isEmpty(patient.getIdcard()) ? "" : patient.getIdcard()).equals("2")) {
                        relationTrans = 1;
                    }
                }
                break;
        }
        return relationTrans;
    }
}