chenweida 8 rokov pred
rodič
commit
269f8f7798
25 zmenil súbory, kde vykonal 766 pridanie a 850 odobranie
  1. 5 1
      patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/template/DoctorGuidanceTempDao.java
  2. 5 0
      patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/template/DoctorTeamGuidanceTemplateDao.java
  3. 22 28
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/account/DoctorInfoService.java
  4. 14 18
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/consult/ConsultTeamService.java
  5. 0 5
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/family/FamilyMemberService.java
  6. 8 10
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/health/PatientHealthGuidanceService.java
  7. 33 39
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/FamilyContractService.java
  8. 8 10
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/PatientRemindService.java
  9. 14 14
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/SignWebService.java
  10. 420 546
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statistics/StatisticsService.java
  11. 3 3
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/survey/ManagerQuestionnaireService.java
  12. 65 61
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/template/DoctorGuidanceTempService.java
  13. 48 5
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/template/DoctorTeamGuidanceService.java
  14. 1 1
      patient-co-wlyy/src/main/java/com/yihu/wlyy/task/PushMsgTask.java
  15. 7 9
      patient-co-wlyy/src/main/java/com/yihu/wlyy/task/RemindExpensesTask.java
  16. 15 18
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/common/account/WechatController.java
  17. 7 9
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/consult/DoctorConsultPublicController.java
  18. 3 3
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/health/DoctorHealthEduArticleController.java
  19. 3 3
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/survey/ManagerQuestionnaireController.java
  20. 24 10
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/template/DoctorGuidanceTempController.java
  21. 6 3
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/template/DoctorTeamGuidanceController.java
  22. 7 9
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/booking/PatientBookingController.java
  23. 14 9
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/family/FamilyMemberController.java
  24. 24 30
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/third/BookingController.java
  25. 10 6
      patient-co-wlyy/src/main/java/com/yihu/wlyy/wechat/util/WeiXinOpenIdUtils.java

+ 5 - 1
patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/template/DoctorGuidanceTempDao.java

@ -25,5 +25,9 @@ public interface DoctorGuidanceTempDao extends PagingAndSortingRepository<Doctor
    @Query("select t from DoctorGuidanceTemp t where t.owner = ?1 or t.owner = 'system' order by t.sendTimes desc")
    Page<DoctorGuidanceTemp> findByOwnerAndSystem(String owner, Pageable pageRequest);
//    Page<List<DoctorGuidanceTemp>> findByOwnerAndSystem(String owner, Pageable pageRequest);
    //    Page<List<DoctorGuidanceTemp>> findByOwnerAndSystem(String owner, Pageable pageRequest);
    //验证医生健康指导模板标题是否重复
    @Query("select t from DoctorGuidanceTemp t where t.owner != 'system' and t.modelName = ?1 ")
    List<DoctorGuidanceTemp> findByTitle(String title);
}

+ 5 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/template/DoctorTeamGuidanceTemplateDao.java

@ -41,4 +41,9 @@ public interface DoctorTeamGuidanceTemplateDao extends PagingAndSortingRepositor
    @Query("update DoctorTeamGuidanceTemplate t set t.useTimes = t.useTimes+1 where t.del = 1 and t.teamId = ?1 and t.teamTemplateCode =?2 ")
    int countSend(int teamId, String guidanceCode);
    //  批量删除(失效)该模板所在的所有团队关系
    @Modifying
    @Query("update DoctorTeamGuidanceTemplate t set t.useTimes =  0 ,t.del = 0 where t.teamId = ?1 and t.teamTemplateCode =?2 ")
    int deleteByTeam(int teamId, String guidanceCode);
}

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

@ -887,20 +887,18 @@ public class DoctorInfoService extends BaseService {
//            }
//        }
        //发送代理人
        JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
        JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode(),p.getOpenid());
        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);
                }
                JSONObject json = data;
                json.remove("toUser");
                json.put("toUser",member.getCode());
                json.remove("first");
                json.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),p.getName())+first);
                PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, member.getOpenid(), p.getName(), json);
            }
        }
    }
@ -1020,20 +1018,18 @@ public class DoctorInfoService extends BaseService {
//        }
        //发送代理人
        JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
        JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode(),p.getOpenid());
        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);
                }
                JSONObject json = data;
                json.remove("toUser");
                json.put("toUser",member.getCode());
                json.remove("first");
                json.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),p.getName())+first);
                PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, member.getOpenid(), p.getName(), json);
            }
        }
        return 1;
@ -1243,20 +1239,18 @@ public class DoctorInfoService extends BaseService {
//        }
        //发送代理人
        JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
        JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode(),p.getOpenid());
        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);
                }
                JSONObject json = data;
                json.remove("toUser");
                json.put("toUser",member.getCode());
                json.remove("first");
                json.put("first", weiXinOpenIdUtils.getTitleMes(p, (int) json.get("relation"), p.getName()) + p.getName() + ",您好!因签约团队内分工调整,您的责任医生有变动," + oldDoctorName +
                        "医生无法继续为您服务,具体变动如下:");
                PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, member.getOpenid(), p.getName(), json);
            }
        }
    }

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

@ -1815,19 +1815,17 @@ public class ConsultTeamService extends ConsultService {
            }
            //发送代理人
            JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
            JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode(),p.getOpenid());
            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);
                    }
                    JSONObject data = json;
                    data.remove("toUser");
                    data.put("toUser",member.getCode());
                    data.remove("first");
                    data.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),p.getName())+first);
                    PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 17, member.getOpenid(), p.getName(), data);
                }
            }
        } else {
@ -1858,19 +1856,17 @@ public class ConsultTeamService extends ConsultService {
                }
                //发送代理人
                JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
                JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode(),p.getOpenid());
                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 data = json;
                        data.remove("toUser");
                        data.put("toUser",member.getCode());
                        data.remove("first");
                        data.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),p.getName())+first);
                        PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 17, member.getOpenid(), p.getName(), data);
                    }
                }

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

@ -599,11 +599,6 @@ public class FamilyMemberService extends BaseService {
        if(familyMember==null||0==familyMember.getIsAuthorize()){
            return null;
        }
        Patient p = patientDao.findByCode(member);
        json.put("code", p.getCode());
        json.put("name", p.getName());
        return json;
    }

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

@ -154,20 +154,18 @@ public class PatientHealthGuidanceService extends BaseService {
				PushMsgTask.getInstance().putWxMsg(accessToken, 4, openId, patient.getName(), json);
			}
			//发送代理人
			JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(patient.getCode());
			JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(patient.getCode(),patient.getOpenid());
			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);
					}
					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"), patient.getName()) + "健康指导提醒");
					PushMsgTask.getInstance().putWxMsg(weiXinAccessTokenUtils.getAccessToken(), 4, member.getOpenid(), patient.getName(), data);
				}
			}

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

@ -1035,10 +1035,10 @@ public class FamilyContractService extends BaseService {
                if (j != null) {
                    Patient member = (Patient) j.get("member");
                    if (StringUtils.isNotBlank(member.getOpenid())) {
                        String first = (String) json.get("first");
                        //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);
                        json.put("first", weiXinOpenIdUtils.getTitleMes(patient, j.getInt("relation"), sf.getName()));
                        PushMsgTask.getInstance().putWxMsg(access_token, 1, member.getOpenid(), sf.getName(), json);
                    }
                }
            }
@ -1292,10 +1292,10 @@ public class FamilyContractService extends BaseService {
                JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
                Patient member = (Patient) j.get("member");
                if (StringUtils.isNotBlank(member.getOpenid())) {
                    String first = (String) json.get("first");
                    //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);
                    json.put("first", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), p.getName()));
                    PushMsgTask.getInstance().putWxMsg(access_token, 2, member.getOpenid(), p.getName(), json);
                }
            }
@ -1334,10 +1334,10 @@ public class FamilyContractService extends BaseService {
                JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(p.getCode());
                Patient member = (Patient) j.get("member");
                if (StringUtils.isNotBlank(member.getOpenid())) {
                    String first = (String) json.get("first");
                    //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);
                    json.put("first", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), p.getName()));
                    PushMsgTask.getInstance().putWxMsg(access_token, 1, member.getOpenid(), p.getName(), json);
                }
            }
@ -1432,21 +1432,19 @@ public class FamilyContractService extends BaseService {
//                }
//            }
            //发送代理人
            JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(sf.getPatient());
            JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(sf.getPatient(),sf.getOpenid());
            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);
                    }
                    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"),p.getName()));
                    PushMsgTask.getInstance().putWxMsg(access_token, 5, member.getOpenid(), p.getName(), data);
                }
            }
        } else {
@ -1479,21 +1477,19 @@ public class FamilyContractService extends BaseService {
//                }
//            }
            //发送代理人
            JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(sf.getPatient());
            JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(sf.getPatient(),sf.getOpenid());
            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);
                    }
                    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"),p.getName()));
                    PushMsgTask.getInstance().putWxMsg(access_token, 5, member.getOpenid(), p.getName(), data);
                }
            }
@ -2123,20 +2119,18 @@ public class FamilyContractService extends BaseService {
//                }
//            }
            //发送代理人
            JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
            JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode(),p.getOpenid());
            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);
                    }
                    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"),p.getName()));
                    PushMsgTask.getInstance().putWxMsg(accessTokenUtils.getAccessToken(), 10, member.getOpenid(), p.getName(), data);
                }
            }

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

@ -241,21 +241,19 @@ public class PatientRemindService extends BaseService {
//                    }
//                }
            //发送代理人
            JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
            JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode(),p.getOpenid());
            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;
                        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);
                    }
                    isOpenIdExist = true;
                    JSONObject data = json;
                    data.remove("toUser");
                    data.put("toUser",member.getCode());
                    data.remove("doctorName");
                    data.put("doctorName", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), p.getName()) +"\n"+first);
                    PushMsgTask.getInstance().putWxMsg(tokenUtils.getAccessToken(), 8, member.getOpenid(), p.getName(), data);
                }
            }

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

@ -965,10 +965,10 @@ public class SignWebService extends BaseService {
                    Patient member = (Patient) j.get("member");
                    Patient p = patientService.findByCode(code);
                    if (StringUtils.isNotBlank(member.getOpenid())) {
                        json.put("first", weiXinOpenIdUtils.getTitleMes(p, (int) j.get("relation"), member.getName()) + "\n" +
                        json.put("first", weiXinOpenIdUtils.getTitleMes(p, (int) j.get("relation"), p.getName()) + "\n" +
                                name + ",您好!\n" +
                                "您的家庭医生签约将于6月30日到期,为了能继续给您提供健康服务,诚邀您续签家庭医生。");
                        PushMsgTask.getInstance().putWxMsg(access_token, 16, member.getOpenid(), member.getName(), json);
                        PushMsgTask.getInstance().putWxMsg(access_token, 16, member.getOpenid(), p.getName(), json);
                    } else {
                        //发送短信
                        String mobile = (String) signFamily.get("mobile");
@ -1044,10 +1044,10 @@ public class SignWebService extends BaseService {
                    Patient member = (Patient) j.get("member");
                    Patient p = patientService.findByCode(code);
                    if (StringUtils.isNotBlank(member.getOpenid())) {
                        json.put("first", weiXinOpenIdUtils.getTitleMes(p, (int) j.get("relation"), member.getName()) + "\n" +
                        json.put("first", weiXinOpenIdUtils.getTitleMes(p, (int) j.get("relation"), p.getName()) + "\n" +
                                name + ",您好!\n" +
                                "您的家庭医生签约将于6月30日到期,为了能继续给您提供健康服务,诚邀您续签家庭医生。");
                        PushMsgTask.getInstance().putWxMsg(access_token, 16, member.getOpenid(), member.getName(), json);
                        PushMsgTask.getInstance().putWxMsg(access_token, 16, member.getOpenid(), p.getName(), json);
                    } else {
                        //发送短信
                        String mobile = (String) signFamily.get("mobile");
@ -1159,17 +1159,17 @@ public class SignWebService extends BaseService {
                    if (StringUtils.isNotBlank(member.getOpenid())) {
                        if ("0".equals(state)) {
                            data.put("first", weiXinOpenIdUtils.getTitleMes(patient, (int) j.get("relation"), member.getName()) + "\n" +
                            data.put("first", weiXinOpenIdUtils.getTitleMes(patient, (int) j.get("relation"), patient.getName()) + "\n" +
                                    patient.getName() + ",您好!\n" +
                                    "您的家庭医生续签申请已被拒绝");
                            data.put("remark", "您可选择其他医生进行签约。");
                            PushMsgTask.getInstance().putWxMsg(access_token, 2, member.getOpenid(), member.getName(), data);
                            PushMsgTask.getInstance().putWxMsg(access_token, 2, member.getOpenid(), patient.getName(), data);
                        } else if ("1".equals(state)) {
                            data.put("first", weiXinOpenIdUtils.getTitleMes(patient, (int) j.get("relation"), member.getName()) + "\n" +
                            data.put("first", weiXinOpenIdUtils.getTitleMes(patient, (int) j.get("relation"), patient.getName()) + "\n" +
                                    patient.getName() + ",您好!\n" +
                                    "您的家庭医生续签申请已通过");
                            data.put("remark", "待自动扣费成功后,家庭医生将续签成功。");
                            PushMsgTask.getInstance().putWxMsg(access_token, 1, member.getOpenid(), member.getName(), data);
                            PushMsgTask.getInstance().putWxMsg(access_token, 1, member.getOpenid(), patient.getName(), data);
                        }
                    }
                }
@ -1290,17 +1290,17 @@ public class SignWebService extends BaseService {
                    if (StringUtils.isNotBlank(member.getOpenid())) {
                        if ("0".equals(state)) {
                            data.put("first", weiXinOpenIdUtils.getTitleMes(patient, (int) j.get("relation"), member.getName()) + "\n" +
                            data.put("first", weiXinOpenIdUtils.getTitleMes(patient, (int) j.get("relation"), patient.getName()) + "\n" +
                                    patient.getName() + ",您好!\n" +
                                    "您的家庭医生续签申请已被拒绝");
                            data.put("remark", "您可在到期后选择其他医生进行签约。");
                            PushMsgTask.getInstance().putWxMsg(access_token, 2, member.getOpenid(), member.getName(), data);
                            PushMsgTask.getInstance().putWxMsg(access_token, 2, member.getOpenid(), patient.getName(), data);
                        } else if ("1".equals(state)) {
                            data.put("first", weiXinOpenIdUtils.getTitleMes(patient, (int) j.get("relation"), member.getName()) + "\n" +
                            data.put("first", weiXinOpenIdUtils.getTitleMes(patient, (int) j.get("relation"), patient.getName()) + "\n" +
                                    patient.getName() + ",您好!\n" +
                                    "您的家庭医生续签申请已通过");
                            data.put("remark", "待自动扣费成功后,家庭医生将续签成功。");
                            PushMsgTask.getInstance().putWxMsg(access_token, 1, member.getOpenid(), member.getName(), data);
                            PushMsgTask.getInstance().putWxMsg(access_token, 1, member.getOpenid(), patient.getName(), data);
                        }
                    }
                }
@ -1474,10 +1474,10 @@ public class SignWebService extends BaseService {
            JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(patientCode);
            Patient member = (Patient) j.get("member");
            if (StringUtils.isNotBlank(member.getOpenid())) {
                json.put("first", weiXinOpenIdUtils.getTitleMes(p, (int) j.get("relation"), member.getName()) + "\n" +
                json.put("first", weiXinOpenIdUtils.getTitleMes(p, (int) j.get("relation"), name) + "\n" +
                        name + ",您好!\n" +
                        "您的家庭医生签约将于6月30日到期,为了能继续给您提供健康服务,诚邀您续签家庭医生。");
                PushMsgTask.getInstance().putWxMsg(access_token, 16, member.getOpenid(), member.getName(), json);
                PushMsgTask.getInstance().putWxMsg(access_token, 16, member.getOpenid(), name, json);
                patientSetReminFlag(patientCode);
                return 1;
            } else {

+ 420 - 546
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statistics/StatisticsService.java

@ -409,10 +409,10 @@ public class StatisticsService extends BaseService {
                        redisNum = "";
                    }
                    if (StringUtils.isEmpty(redisNum)) {
                        if (org.springframework.util.StringUtils.isEmpty(year)) {
                            year = Constant.getNowYear();
                        if(org.springframework.util.StringUtils.isEmpty(year)){
                            year= Constant.getNowYear();
                        }
                        PopulationBase peopleNum = peopleNumDao.findByCodeAndYear(map.get("code").toString(), Integer.valueOf(year));
                        PopulationBase peopleNum = peopleNumDao.findByCodeAndYear(map.get("code").toString(),Integer.valueOf(year));
                        if (peopleNum != null) {
                            map.put("rate", df.format(((long) map.get("amount") * 1.0000) / peopleNum.getNum() * 100));
                            map.put("rateString", map.get("amount") + "/" + peopleNum.getNum());
@ -1772,7 +1772,15 @@ public class StatisticsService extends BaseService {
        //3.平均满意度
        String avg_sql = "SELECT ROUND(AVG(s.score),1) avgScore FROM wlyy_consult c LEFT JOIN wlyy_evaluate_score s ON c.`code` = s.consult WHERE c.czrq>='" + startDate + "' AND c.czrq<='" + endDate + "' AND s.doctor in(select m.doctor_code from wlyy_admin_team_member m where m.team_id=" + id + ")";
        String avg_sql = "SELECT " +
                " ROUND(AVG(s.score), 1) avgScore " +
                " FROM " +
                " wlyy_consult_team c,wlyy_evaluate_score s  " +
                " WHERE " +
                " c.consult = s.consult  " +
                " AND c.czrq >= '"+startDate+"' " +
                " AND c.czrq <= '"+endDate+"' " +
                " AND c.admin_team_code ="+id;
        //计算签约表记录
        Map<String, Object> signCount = jdbcTemplate.queryForMap(sign_sql);
@ -1834,7 +1842,7 @@ public class StatisticsService extends BaseService {
            sql = "SELECT left(f.apply_date,10) as applyDate,count(1) as signCount " +
                    " FROM wlyy_sign_family f " +
                    " where f.apply_date >='" + startDate + " 00:00:00' " +
                    " AND f.apply_date<='" + endDate + " 00:00:00' " +
                    " AND f.apply_date<='" + endDate + " 23:59:59' " +
                    " AND f.status >0 " +
                    " AND f.expenses_status='1' " +
                    " AND f.admin_team_code=" + id +
@ -1844,7 +1852,7 @@ public class StatisticsService extends BaseService {
            sql = "SELECT (DATE_FORMAT(f.apply_date,'%v')-DATE_FORMAT('" + DateUtil.getFristDayOfMonth() + "','%v')+1) as weekOfMonth,count(1) as signCount " +
                    " FROM wlyy_sign_family f " +
                    " where f.apply_date >='" + startDate + " 00:00:00' " +
                    " AND f.apply_date<='" + endDate + " 00:00:00' " +
                    " AND f.apply_date<='" + endDate + " 23:59:59' " +
                    " AND f.status >0 " +
                    " AND f.expenses_status='1' " +
                    " AND f.admin_team_code=" + id +
@ -1875,32 +1883,37 @@ public class StatisticsService extends BaseService {
        String sql;
        //按周
        if ("0".equals(type)) {
            sql = "SELECT left(f.apply_date,10) as applyDate,count(1) as signCount " +
                    " FROM wlyy_sign_family_renew f " +
                    " where f.apply_date >='" + startDate + " 00:00:00' " +
                    " AND f.apply_date<='" + endDate + " 23:59:59' " +
                    " AND f.status >0 " +
                    " AND f.expenses_status='1' " +
                    " AND f.admin_team_code=" + id +
                    " GROUP BY left(f.apply_date,10)";
            sql = "SELECT " +
                    " LEFT (f.apply_date, 10) AS applyDate, " +
                    " count(1) AS signCount " +
                    " FROM " +
                    " wlyy_sign_family_renew_log f " +
                    " WHERE " +
                    " f.apply_date >= '"+startDate+"' " +
                    " AND f.apply_date <= '"+endDate+"' " +
                    " AND f.admin_team_id = " +id+
                    " GROUP BY " +
                    " LEFT (f.apply_date, 10)";
            //按月
        } else {
            sql = "SELECT (DATE_FORMAT(f.apply_date,'%v')-DATE_FORMAT('" + startDate + "','%v')+1) as weekOfMonth,count(1) as signCount " +
                    " FROM wlyy_sign_family_renew f " +
                    " where f.apply_date >='" + startDate + " 00:00:00' " +
                    " AND f.apply_date<='" + endDate + " 23:59:59' " +
                    " AND f.status >0 " +
                    " AND f.expenses_status='1' " +
                    " AND f.admin_team_code=" + id +
                    " GROUP BY DATE_FORMAT(f.apply_date,'%m %v')";
            sql = "SELECT " +
                    " (DATE_FORMAT(f.apply_date,'%v')-DATE_FORMAT('"+startDate+"','%v')+1) AS weekOfMonth, " +
                    " count(1) AS signCount " +
                    " FROM " +
                    " wlyy_sign_family_renew_log f " +
                    " WHERE " +
                    " f.apply_date >= '"+startDate+"' " +
                    " AND f.apply_date <= '"+endDate+"' " +
                    " AND f.admin_team_id = " +id+
                    " GROUP BY " +
                    " DATE_FORMAT(f.apply_date, '%m %v')";
        }
        List<Map<String, Object>> rs = jdbcTemplate.queryForList(sql);
        JSONArray rsJs = new JSONArray(rs);
        return rsJs;
    }
    public JSONObject getReyStatbyTeamNow(String doctor, String startDate, String endDate, String isNow) {
    public JSONObject getReyStatbyTeamNow(String doctor, String startDate, String endDate, String isNow){
        AdminTeam admin = adminTeamDao.findByLeaderCode(doctor);
        if (admin == null) {
            throw new RuntimeException("未找到团队信息");
@ -1910,70 +1923,54 @@ public class StatisticsService extends BaseService {
        endDate = endDate + " 23:59:59";
        Long id = admin.getId();
        String totalSql = "SELECT " +
                " count(1) AS total " +
                "FROM " +
                " wlyy_consult_team a " +
                "WHERE " +
                " a.czrq <= '" + endDate + "' " +
                " AND a.czrq >= '" + startDate + "' " +
                " AND a.admin_team_code= " + id +
                " AND a.consult IN ( " +
                " SELECT DISTINCT " +
                "  t.id consultId " +
                " FROM " +
                "  " + imDataBaseName + ".topics t, " +
                "  " + imDataBaseName + ".participants p, " +
                "  " + imDataBaseName + ".doctors d, " +
                "  " + imDataBaseName + ".sessions s " +
                " WHERE " +
                "  p.participant_id = d.id " +
                " AND t.session_id = p.session_id " +
                " AND t.session_id = s.id " +
                " AND s.type = 1 " +
                " AND t.create_time <= '" + endDate + "' " +
                " AND t.create_time >= '" + startDate + "' " +
                ")";
        List<Map<String, Object>> totalList = jdbcTemplate.queryForList(totalSql);
                "  COUNT(1) total " +
                "  FROM " +
                "  "+imDataBaseName+".Topics t, " +
                "  "+imDataBaseName+".Participants p, " +
                "  "+imDataBaseName+".Doctors d, " +
                "  Wlyy_Consult_Team c, " +
                "  "+imDataBaseName+".Patients s " +
                "  WHERE " +
                "  d.id = p.participant_id " +
                " AND c.consult = t.id " +
                " AND c.patient = s.id " +
                " AND p.session_id = t.session_id " +
                " AND c.admin_team_code =" +id +
                " AND t.create_time >= '"+startDate+"' " +
                " AND t.create_time <= '"+endDate+"'";
        List<Map<String,Object>> totalList = jdbcTemplate.queryForList(totalSql);
        Long totalCount = 0L;
        if (totalList != null && totalList.size() > 0) {
            Map<String, Object> total = totalList.get(0);
            totalCount = (Long) total.get("total");
        if(totalList!=null&&totalList.size()>0){
            Map<String,Object> total = totalList.get(0);
            totalCount = (Long)total.get("total");
        }
        String noReySql = "SELECT " +
                " count(1) AS noRey " +
                "FROM " +
                " wlyy_consult_team a " +
                "WHERE " +
                " a.czrq <= '" + endDate + "' " +
                "AND a.czrq >= '" + startDate + "' " +
                "AND a.admin_team_code= " + id +
                " AND a.consult IN ( " +
                " SELECT DISTINCT " +
                "  t.id consultId " +
                " FROM " +
                "  " + imDataBaseName + ".topics t, " +
                "  " + imDataBaseName + ".participants p, " +
                "  " + imDataBaseName + ".doctors d, " +
                "  " + imDataBaseName + ".sessions s " +
                " WHERE " +
                "  p.participant_id = d.id " +
                " AND t.session_id = p.session_id " +
                " AND t.session_id = s.id " +
                " AND s.type = 1 " +
                " AND t. STATUS <> 10  " +
                " AND t.`reply` = 0  " +
                " AND t.create_time <= '" + endDate + "' " +
                " AND t.create_time >= '" + startDate + "' " +
                ")";
        List<Map<String, Object>> noReyList = jdbcTemplate.queryForList(noReySql);
                "  COUNT(1) noRey " +
                "  FROM " +
                "  "+imDataBaseName+".Topics t, " +
                "  "+imDataBaseName+".Participants p, " +
                "  "+imDataBaseName+".Doctors d, " +
                "  Wlyy_Consult_Team c, " +
                "  "+imDataBaseName+".Patients s " +
                "  WHERE " +
                "  d.id = p.participant_id " +
                " AND c.consult = t.id " +
                " AND c.patient = s.id " +
                " AND t. STATUS <> 10 " +
                " AND t.`reply` = 0 "+
                " AND p.session_id = t.session_id " +
                " AND c.admin_team_code =" +id +
                " AND t.create_time >= '"+startDate+"' " +
                " AND t.create_time <= '"+endDate+"'";
        List<Map<String,Object>> noReyList = jdbcTemplate.queryForList(noReySql);
        Long noReyCount = 0L;
        if (noReyList != null && noReyList.size() > 0) {
            Map<String, Object> noRey = noReyList.get(0);
            noReyCount = (Long) noRey.get("noRey");
        if(noReyList!=null&&noReyList.size()>0){
            Map<String,Object> noRey = noReyList.get(0);
            noReyCount = (Long)noRey.get("noRey");
        }
        JSONObject rs = new JSONObject();
        rs.put("onReyCount", noReyCount);
        rs.put("totalCount", totalCount);
        rs.put("totalCount",totalCount);
        return rs;
    }
@ -2211,7 +2208,22 @@ public class StatisticsService extends BaseService {
//        startDate = startDate + " 00:00:00";
//        endDate = endDate + " 23:59:59";
        //咨询量
        String consult_sql = "SELECT COUNT(1) AS consultCount FROM wlyy_consult_team t WHERE t.admin_team_code = " + id + " AND t.czrq <='" + endDate + "' AND t.czrq >='" + startDate + "'";
        String consult_sql = "SELECT " +
                "  COUNT(1) consultCount " +
                "  FROM " +
                "  im_new.Topics t, " +
                "  im_new.Participants p, " +
                "  im_new.Doctors d, " +
                "  Wlyy_Consult_Team c, " +
                "  im_new.Patients s " +
                "  WHERE " +
                "  d.id = p.participant_id " +
                " AND c.consult = t.id " +
                " AND c.patient = s.id " +
                " AND p.session_id = t.session_id " +
                " AND c.admin_team_code =" +id+
                " AND t.create_time >= '"+startDate+"' " +
                " AND t.create_time <= '"+endDate+"'";
        //获取咨詢數
        Map<String, Object> consultCout = jdbcTemplate.queryForMap(consult_sql);
        if (consultCout.get("consultCount") == null) {
@ -2302,22 +2314,22 @@ public class StatisticsService extends BaseService {
                    " WHERE  " +
                    "  s.consult = t.consult " +
                    " AND  " +
                    " t.czrq <= '" + endDate + "' " +
                    " AND t.czrq >= '" + startDate + "' " +
                    " AND t.admin_team_code = " + id +
                    " t.czrq <= '"+endDate+"' " +
                    " AND t.czrq >= '"+startDate+"' " +
                    " AND t.admin_team_code = " +id+
                    " GROUP BY dateNo";
        } else {
            sql = "SELECT " +
                    " (DATE_FORMAT(t.czrq,'%v')-DATE_FORMAT('" + startDate + "','%v')+1) AS weekNo, " +
                    " (DATE_FORMAT(t.czrq,'%v')-DATE_FORMAT('"+startDate+"','%v')+1) AS weekNo, " +
                    " ifnull(ROUND(AVG(s.score), 1), 0) AS avgCount " +
                    " FROM " +
                    " wlyy_evaluate_score s,wlyy_consult_team t " +
                    " WHERE  " +
                    "  s.consult = t.consult " +
                    " AND  " +
                    " t.czrq <= '" + endDate + "' " +
                    " AND t.czrq >= '" + startDate + "' " +
                    " AND t.admin_team_code = " + id +
                    " t.czrq <= '"+endDate+"' " +
                    " AND t.czrq >= '"+startDate+"' " +
                    " AND t.admin_team_code = " +id +
                    " GROUP BY weekNo";
        }
@ -2352,120 +2364,82 @@ public class StatisticsService extends BaseService {
        if ("0".equals(type)) {
            //按周统计
            sql = "SELECT " +
                    " left(a.czrq,10) AS dateNo,count(1) AS noRely " +
                    " FROM " +
                    " wlyy_consult_team a " +
                    " WHERE" +
                    " a.czrq <= '" + endDate + "'" +
                    " AND a.czrq >= '" + startDate + "'" +
                    " AND a.admin_team_code =" + teamCode +
                    " AND a.consult IN (" +
                    " SELECT DISTINCT " +
                    " t.id consultId " +
                    "  left(t.create_time,10) AS dateNo, COUNT(1) AS noRely  " +
                    " FROM " +
                    " " + imDataBaseName + ".topics t, " +
                    " " + imDataBaseName + ".participants p, " +
                    " " + imDataBaseName + ".doctors d, " +
                    " " + imDataBaseName + ".sessions s " +
                    "  "+ imDataBaseName +".Topics t, " +
                    "  "+ imDataBaseName +".Participants p, " +
                    "  "+ imDataBaseName +".Doctors d, " +
                    "  Wlyy_Consult_Team c, " +
                    "  "+ imDataBaseName +".Patients s " +
                    " WHERE " +
                    " p.participant_id = d.id " +
                    " AND t.session_id = p.session_id " +
                    " AND t.session_id = s.id " +
                    " AND s.type = 1 " +
                    "  d.id = p.participant_id " +
                    " AND c.consult = t.id " +
                    " AND c.patient = s.id " +
                    " AND t. STATUS <> 10 " +
                    " AND t.`reply` = 0 " +
                    " AND t.create_time <= '" + endDate + "'" +
                    " AND t.create_time >= '" + startDate + "'" +
                    " )" +
                    " GROUP BY left(a.czrq,10)";
                    " AND p.session_id = t.session_id " +
                    " AND c.admin_team_code = " +teamCode+
                    " AND t.create_time >= '"+startDate+"' " +
                    " AND t.create_time <= '"+endDate+"' " +
                    " GROUP BY dateNo";
            totalSql = "SELECT " +
                    " left(a.czrq,10) AS dateNo,count(1) AS total " +
                    " FROM " +
                    " wlyy_consult_team a " +
                    " WHERE" +
                    " a.czrq <= '" + endDate + "'" +
                    " AND a.czrq >= '" + startDate + "'" +
                    " AND a.admin_team_code =" + teamCode +
                    " AND a.consult IN (" +
                    " SELECT DISTINCT " +
                    " t.id consultId " +
                    "  left(t.create_time,10) AS dateNo, COUNT(1) total " +
                    " FROM " +
                    " " + imDataBaseName + ".topics t, " +
                    " " + imDataBaseName + ".participants p, " +
                    " " + imDataBaseName + ".doctors d, " +
                    " " + imDataBaseName + ".sessions s " +
                    "  "+ imDataBaseName +".Topics t, " +
                    "  "+ imDataBaseName +".Participants p, " +
                    "  "+ imDataBaseName +".Doctors d, " +
                    "  Wlyy_Consult_Team c, " +
                    "  "+ imDataBaseName +".Patients s " +
                    " WHERE " +
                    " p.participant_id = d.id " +
                    " AND t.session_id = p.session_id " +
                    " AND t.session_id = s.id " +
                    " AND s.type = 1 " +
                    " AND t.create_time <= '" + endDate + "'" +
                    " AND t.create_time >= '" + startDate + "'" +
                    " )" +
                    " GROUP BY left(a.czrq,10)";
                    "  d.id = p.participant_id " +
                    " AND c.consult = t.id " +
                    " AND c.patient = s.id " +
                    " AND p.session_id = t.session_id " +
                    " AND c.admin_team_code = " +teamCode+
                    " AND t.create_time >= '"+startDate+"' " +
                    " AND t.create_time <= '"+endDate+"' " +
                    " GROUP BY dateNo";
        } else {
            //按月统计
            sql = "SELECT " +
                    " ( " +
                    " DATE_FORMAT(a.czrq, '%v') - DATE_FORMAT('" + DateUtil.getFristDayOfMonth() + "', '%v') + 1" +
                    " ) AS weekOfMonth, " +
                    "  COUNT(1) AS noRely" +
                    " FROM " +
                    " wlyy_consult_team a " +
                    " WHERE " +
                    " a.czrq <= '" + endDate + "' " +
                    " AND a.czrq >= '" + startDate + "' " +
                    " AND a.admin_team_code =" + teamCode +
                    " AND a.consult IN (" +
                    " SELECT DISTINCT " +
                    " t.id consultId " +
                    " FROM " +
                    " " + imDataBaseName + ".topics t," +
                    " " + imDataBaseName + ".participants p," +
                    " " + imDataBaseName + ".doctors d, " +
                    " " + imDataBaseName + ".sessions s " +
                    " WHERE " +
                    " p.participant_id = d.id " +
                    " AND t.session_id = p.session_id " +
                    " AND t.session_id = s.id " +
                    " AND s.type = 1 " +
                    " AND t. STATUS <> 10 " +
                    " AND t.`reply` = 0 " +
                    " AND t.create_time <= '" + endDate + "'" +
                    " AND t.create_time >= '" + startDate + "'" +
                    " )" +
                    " GROUP BY " +
                    " DATE_FORMAT(a.czrq, '%m %v')";
            totalSql = "SELECT " +
                    " ( " +
                    " DATE_FORMAT(a.czrq, '%v') - DATE_FORMAT('" + DateUtil.getFristDayOfMonth() + "', '%v') + 1" +
                    " ) AS weekOfMonth, " +
                    "  COUNT(1) AS total" +
                    " FROM " +
                    " wlyy_consult_team a " +
                    " WHERE " +
                    " a.czrq <= '" + endDate + "' " +
                    " AND a.czrq >= '" + startDate + "' " +
                    " AND a.admin_team_code =" + teamCode +
                    " AND a.consult IN (" +
                    " SELECT DISTINCT " +
                    " t.id consultId " +
                    " FROM " +
                    " " + imDataBaseName + ".topics t," +
                    " " + imDataBaseName + ".participants p," +
                    " " + imDataBaseName + ".doctors d, " +
                    " " + imDataBaseName + ".sessions s " +
                    " WHERE " +
                    " p.participant_id = d.id " +
                    " AND t.session_id = p.session_id " +
                    " AND t.session_id = s.id " +
                    " AND s.type = 1 " +
                    " AND t.create_time <= '" + endDate + "'" +
                    " AND t.create_time >= '" + startDate + "'" +
                    " )" +
                    " GROUP BY " +
                    " DATE_FORMAT(a.czrq, '%m %v')";
            sql ="SELECT " +
                    "  (DATE_FORMAT(t.create_time, '%v') - DATE_FORMAT('"+startDate+"', '%v') + 1) AS weekOfMonth, " +
                    "  COUNT(1) AS noRely " +
                    "  FROM " +
                    "  im_new.Topics t, " +
                    "  im_new.Participants p, " +
                    "  im_new.Doctors d, " +
                    "  Wlyy_Consult_Team c, " +
                    "  im_new.Patients s " +
                    "  WHERE " +
                    "  d.id = p.participant_id " +
                    "  AND c.consult = t.id " +
                    "  AND c.patient = s.id " +
                    "  AND p.session_id = t.session_id " +
                    "  AND c.admin_team_code = " +teamCode+
                    "  AND t. STATUS <> 10  " +
                    "  AND t.`reply` = 0  " +
                    "  AND t.create_time >= '"+startDate+"' " +
                    "  AND t.create_time <= '"+endDate+"' " +
                    "  GROUP BY weekOfMonth";
            totalSql ="SELECT " +
                    "  (DATE_FORMAT(t.create_time, '%v') - DATE_FORMAT('"+startDate+"', '%v') + 1) AS weekOfMonth, " +
                    "  COUNT(1) AS total " +
                    "  FROM " +
                    "  im_new.Topics t, " +
                    "  im_new.Participants p, " +
                    "  im_new.Doctors d, " +
                    "  Wlyy_Consult_Team c, " +
                    "  im_new.Patients s " +
                    "  WHERE " +
                    "  d.id = p.participant_id " +
                    "  AND c.consult = t.id " +
                    "  AND c.patient = s.id " +
                    "  AND p.session_id = t.session_id " +
                    "  AND c.admin_team_code = " +teamCode+
                    "  AND t.create_time >= '"+startDate+"' " +
                    "  AND t.create_time <= '"+endDate+"' " +
                    "  GROUP BY weekOfMonth";
        }
        List<Map<String, Object>> noReyList = jdbcTemplate.queryForList(sql);
@ -2495,124 +2469,86 @@ public class StatisticsService extends BaseService {
        if ("0".equals(type)) {
            //按周统计
            sql = "SELECT " +
                    " left(a.czrq,10) AS dateNo,count(1) AS noRely " +
                    " FROM " +
                    " wlyy_consult_team a " +
                    " WHERE" +
                    " a.czrq <= '" + endDate + "'" +
                    " AND a.czrq >= '" + startDate + "'" +
                    " AND a.admin_team_code =" + teamCode +
                    " AND a.consult IN (" +
                    " SELECT DISTINCT " +
                    " t.id consultId " +
                    "  left(t.create_time,10) AS dateNo, COUNT(1) AS noRely " +
                    " FROM " +
                    " " + imDataBaseName + ".topics t, " +
                    " " + imDataBaseName + ".participants p, " +
                    " " + imDataBaseName + ".doctors d, " +
                    " " + imDataBaseName + ".sessions s " +
                    "  "+ imDataBaseName +".Topics t, " +
                    "  "+ imDataBaseName +".Participants p, " +
                    "  "+ imDataBaseName +".Doctors d, " +
                    "  Wlyy_Consult_Team c, " +
                    "  "+ imDataBaseName +".Patients s " +
                    " WHERE " +
                    " p.participant_id = d.id " +
                    " AND t.session_id = p.session_id " +
                    " AND t.session_id = s.id " +
                    " AND s.type = 1 " +
                    "  d.id = p.participant_id " +
                    " AND c.consult = t.id " +
                    " AND c.patient = s.id " +
                    " AND t. STATUS <> 10 " +
                    " AND t.`reply` = 0 " +
                    " AND t.create_time <= '" + endDate + "'" +
                    " AND t.create_time >= '" + startDate + "'" +
                    " AND d.id = '" + doctor + "'" +
                    " )" +
                    " GROUP BY left(a.czrq,10)";
                    " AND p.session_id = t.session_id " +
                    " AND d.id ='"+doctor +"'"+
                    " AND c.admin_team_code = " +teamCode+
                    " AND t.create_time >= '"+startDate+"' " +
                    " AND t.create_time <= '"+endDate+"' " +
                    " GROUP BY dateNo";
            totalSql = "SELECT " +
                    " left(a.czrq,10) AS dateNo,count(1) AS total " +
                    " FROM " +
                    " wlyy_consult_team a " +
                    " WHERE" +
                    " a.czrq <= '" + endDate + "'" +
                    " AND a.czrq >= '" + startDate + "'" +
                    " AND a.admin_team_code =" + teamCode +
                    " AND a.consult IN (" +
                    " SELECT DISTINCT " +
                    " t.id consultId " +
                    "  left(t.create_time,10) AS dateNo, COUNT(1) total " +
                    " FROM " +
                    " " + imDataBaseName + ".topics t, " +
                    " " + imDataBaseName + ".participants p, " +
                    " " + imDataBaseName + ".doctors d, " +
                    " " + imDataBaseName + ".sessions s " +
                    "  "+ imDataBaseName +".Topics t, " +
                    "  "+ imDataBaseName +".Participants p, " +
                    "  "+ imDataBaseName +".Doctors d, " +
                    "  Wlyy_Consult_Team c, " +
                    "  "+ imDataBaseName +".Patients s " +
                    " WHERE " +
                    " p.participant_id = d.id " +
                    " AND t.session_id = p.session_id " +
                    " AND t.session_id = s.id " +
                    " AND s.type = 1 " +
                    " AND t.create_time <= '" + endDate + "'" +
                    " AND t.create_time >= '" + startDate + "'" +
                    " AND d.id = '" + doctor + "'" +
                    " )" +
                    " GROUP BY left(a.czrq,10)";
                    "  d.id = p.participant_id " +
                    " AND c.consult = t.id " +
                    " AND c.patient = s.id " +
                    " AND p.session_id = t.session_id " +
                    " AND d.id ='"+doctor +"'"+
                    " AND c.admin_team_code = " +teamCode+
                    " AND t.create_time >= '"+startDate+"' " +
                    " AND t.create_time <= '"+endDate+"' " +
                    " GROUP BY dateNo";
        } else {
            //按月统计
            sql = "SELECT " +
                    " ( " +
                    " DATE_FORMAT(a.czrq, '%v') - DATE_FORMAT('" + DateUtil.getFristDayOfMonth() + "', '%v') + 1" +
                    " ) AS weekOfMonth, " +
                    "  COUNT(1) AS noRely" +
                    " FROM " +
                    " wlyy_consult_team a " +
                    " WHERE " +
                    " a.czrq <= '" + endDate + "' " +
                    " AND a.czrq >= '" + startDate + "' " +
                    " AND a.admin_team_code =" + teamCode +
                    " AND a.consult IN (" +
                    " SELECT DISTINCT " +
                    " t.id consultId " +
                    " FROM " +
                    " " + imDataBaseName + ".topics t," +
                    " " + imDataBaseName + ".participants p," +
                    " " + imDataBaseName + ".doctors d, " +
                    " " + imDataBaseName + ".sessions s " +
                    " WHERE " +
                    " p.participant_id = d.id " +
                    " AND t.session_id = p.session_id " +
                    " AND t.session_id = s.id " +
                    " AND s.type = 1 " +
                    " AND t. STATUS <> 10 " +
                    " AND t.`reply` = 0 " +
                    " AND t.create_time <= '" + endDate + "'" +
                    " AND t.create_time >= '" + startDate + "'" +
                    " AND d.id = '" + doctor + "'" +
                    " )" +
                    " GROUP BY " +
                    " DATE_FORMAT(a.czrq, '%m %v')";
            totalSql = "SELECT " +
                    " ( " +
                    " DATE_FORMAT(a.czrq, '%v') - DATE_FORMAT('" + DateUtil.getFristDayOfMonth() + "', '%v') + 1" +
                    " ) AS weekOfMonth, " +
                    "  COUNT(1) AS total" +
                    " FROM " +
                    " wlyy_consult_team a " +
                    " WHERE " +
                    " a.czrq <= '" + endDate + "' " +
                    " AND a.czrq >= '" + startDate + "' " +
                    " AND a.admin_team_code =" + teamCode +
                    " AND a.consult IN (" +
                    " SELECT DISTINCT " +
                    " t.id consultId " +
                    " FROM " +
                    " " + imDataBaseName + ".topics t," +
                    " " + imDataBaseName + ".participants p," +
                    " " + imDataBaseName + ".doctors d, " +
                    " " + imDataBaseName + ".sessions s " +
                    " WHERE " +
                    " p.participant_id = d.id " +
                    " AND t.session_id = p.session_id " +
                    " AND t.session_id = s.id " +
                    " AND s.type = 1 " +
                    " AND t.create_time <= '" + endDate + "'" +
                    " AND t.create_time >= '" + startDate + "'" +
                    " AND d.id = '" + doctor + "'" +
                    " )" +
                    " GROUP BY " +
                    " DATE_FORMAT(a.czrq, '%m %v')";
            sql ="SELECT " +
                    "  (DATE_FORMAT(t.create_time, '%v') - DATE_FORMAT('"+startDate+"', '%v') + 1) AS weekOfMonth, " +
                    "  COUNT(1) AS noRely " +
                    "  FROM " +
                    "  im_new.Topics t, " +
                    "  im_new.Participants p, " +
                    "  im_new.Doctors d, " +
                    "  Wlyy_Consult_Team c, " +
                    "  im_new.Patients s " +
                    "  WHERE " +
                    "  d.id = p.participant_id " +
                    "  AND c.consult = t.id " +
                    "  AND c.patient = s.id " +
                    "  AND p.session_id = t.session_id " +
                    "  AND c.admin_team_code = " +teamCode+
                    "  AND d.id ='"+doctor +"'"+
                    "  AND t. STATUS <> 10  " +
                    "  AND t.`reply` = 0  " +
                    "  AND t.create_time >= '"+startDate+"' " +
                    "  AND t.create_time <= '"+endDate+"' " +
                    "  GROUP BY weekOfMonth";
            totalSql ="SELECT " +
                    "  (DATE_FORMAT(t.create_time, '%v') - DATE_FORMAT('"+startDate+"', '%v') + 1) AS weekOfMonth, " +
                    "  COUNT(1) AS total " +
                    "  FROM " +
                    "  im_new.Topics t, " +
                    "  im_new.Participants p, " +
                    "  im_new.Doctors d, " +
                    "  Wlyy_Consult_Team c, " +
                    "  im_new.Patients s " +
                    "  WHERE " +
                    "  d.id = p.participant_id " +
                    "  AND c.consult = t.id " +
                    "  AND c.patient = s.id " +
                    "  AND p.session_id = t.session_id " +
                    "  AND d.id ='"+doctor +"'"+
                    "  AND c.admin_team_code = " +teamCode+
                    "  AND t.create_time >= '"+startDate+"' " +
                    "  AND t.create_time <= '"+endDate+"' " +
                    "  GROUP BY weekOfMonth";
        }
        List<Map<String, Object>> noReyList = jdbcTemplate.queryForList(sql);
@ -2638,44 +2574,40 @@ public class StatisticsService extends BaseService {
        endDate = endDate + " 23:59:59";
        // 未回复咨询总量
        String onReySQL = "SELECT " +
                " t.doctor_code AS doctorCode, " +
                " d.`name`, " +
                " IFNULL(c.total, 0) AS noRely " +
                " IFNULL(c.total,0) AS noRely, " +
                " d.code AS doctorCode, " +
                " d.name  " +
                " FROM " +
                " wlyy_admin_team_member t  " +
                " wlyy_doctor d, " +
                " wlyy_admin_team_member m " +
                "  " +
                " LEFT JOIN ( " +
                " SELECT count(1) AS total ,a.doctor  " +
                " SELECT " +
                "  COUNT(1) total, " +
                "  d.`name`, " +
                "  d.id " +
                " FROM " +
                "  wlyy_consult_team a  " +
                "  "+imDataBaseName+".Topics t, " +
                "  "+imDataBaseName+".Participants p, " +
                "  "+imDataBaseName+".Doctors d, " +
                "  Wlyy_Consult_Team c, " +
                "  "+imDataBaseName+".Patients s " +
                " WHERE " +
                "  a.czrq <= '" + endDate + "' " +
                " AND a.czrq >= '" + startDate + "' " +
                " AND a.admin_team_code = " + teamCode +
                " AND a.consult IN ( " +
                "   SELECT DISTINCT " +
                "    t.id consultId " +
                "   FROM " +
                "    " + imDataBaseName + ".topics t, " +
                "    " + imDataBaseName + ".participants p, " +
                "    " + imDataBaseName + ".doctors d, " +
                "    " + imDataBaseName + ".sessions s " +
                "   WHERE " +
                "    p.participant_id = d.id " +
                "   AND t.session_id = p.session_id " +
                "   AND t.session_id = s.id " +
                "   AND s.type = 1 " +
                "   AND t. STATUS <> 10 " +
                "   AND t.`reply` = 0 " +
                "   AND t.create_time <= '" + endDate + "' " +
                "   AND t.create_time >= '" + startDate + "' " +
                "  ) " +
                "  GROUP BY a.doctor " +
                " ) c ON c.doctor = t.doctor_code, " +
                " wlyy_doctor d " +
                "  d.id = p.participant_id " +
                " AND c.consult = t.id " +
                " AND c.patient = s.id " +
                " AND p.session_id = t.session_id " +
                " AND c.admin_team_code = " +teamCode+
                " AND t. STATUS <> 10 " +
                " AND t.`reply` = 0 " +
                " AND t.create_time >= '"+startDate+"' " +
                " AND t.create_time <= '"+endDate+"' " +
                " GROUP BY " +
                "  id " +
                " ) c ON c.id = m.doctor_code " +
                " WHERE " +
                " t.doctor_code = d.`code` " +
                " AND t.available = 1 " +
                " AND t.team_id = " + teamCode;
                " m.doctor_code = d.`code` " +
                " AND m.team_id = "+teamCode;
        if ("0".equals(sort)) {
            onReySQL = onReySQL + " ORDER BY noRely DESC";
        } else {
@ -2684,42 +2616,38 @@ public class StatisticsService extends BaseService {
        //总咨询量
        String totalSql = "SELECT " +
                " t.doctor_code AS doctorCode, " +
                " d.`name`, " +
                " IFNULL(c.total, 0) AS total " +
                " IFNULL(c.total,0) AS total, " +
                " d.code AS doctorCode, " +
                " d.name  " +
                " FROM " +
                " wlyy_admin_team_member t  " +
                " wlyy_doctor d, " +
                " wlyy_admin_team_member m " +
                "  " +
                " LEFT JOIN ( " +
                " SELECT count(1) AS total ,a.doctor  " +
                " SELECT " +
                "  COUNT(1) total, " +
                "  d.`name`, " +
                "  d.id " +
                " FROM " +
                "  wlyy_consult_team a  " +
                "  "+ imDataBaseName +".Topics t, " +
                "  "+ imDataBaseName +".Participants p, " +
                "  "+ imDataBaseName +".Doctors d, " +
                "  Wlyy_Consult_Team c, " +
                "  "+ imDataBaseName +".Patients s " +
                " WHERE " +
                "  a.czrq <= '" + endDate + "' " +
                " AND a.czrq >= '" + startDate + "' " +
                " AND a.admin_team_code = " + teamCode +
                " AND a.consult IN ( " +
                "   SELECT DISTINCT " +
                "    t.id consultId " +
                "   FROM " +
                "    " + imDataBaseName + ".topics t, " +
                "    " + imDataBaseName + ".participants p, " +
                "    " + imDataBaseName + ".doctors d, " +
                "    " + imDataBaseName + ".sessions s " +
                "   WHERE " +
                "    p.participant_id = d.id " +
                "   AND t.session_id = p.session_id " +
                "   AND t.session_id = s.id " +
                "   AND s.type = 1 " +
                "   AND t.create_time <= '" + endDate + "' " +
                "   AND t.create_time >= '" + startDate + "' " +
                "  ) " +
                "  GROUP BY a.doctor " +
                " ) c ON c.doctor = t.doctor_code, " +
                " wlyy_doctor d " +
                "  d.id = p.participant_id " +
                " AND c.consult = t.id " +
                " AND c.patient = s.id " +
                " AND p.session_id = t.session_id " +
                " AND c.admin_team_code = " +teamCode+
                " AND t.create_time >= '"+startDate+"' " +
                " AND t.create_time <= '"+endDate+"' " +
                " GROUP BY " +
                "  id " +
                " ) c ON c.id = m.doctor_code " +
                " WHERE " +
                " t.doctor_code = d.`code` " +
                " AND t.available = 1 " +
                " AND t.team_id = " + teamCode;
                " m.doctor_code = d.`code` " +
                " AND m.team_id = "+teamCode;
        if ("0".equals(sort)) {
            totalSql = totalSql + " ORDER BY total DESC";
        } else {
@ -2728,43 +2656,39 @@ public class StatisticsService extends BaseService {
        //结束咨询
        String endConsultSql = "SELECT " +
                " t.doctor_code AS doctorCode, " +
                " d.`name`, " +
                " IFNULL(c.total, 0) AS endRey " +
                " IFNULL(c.total,0) AS endRey, " +
                " d.code AS doctorCode, " +
                " d.name  " +
                " FROM " +
                " wlyy_admin_team_member t  " +
                " wlyy_doctor d, " +
                " wlyy_admin_team_member m " +
                "  " +
                " LEFT JOIN ( " +
                " SELECT count(1) AS total ,a.doctor  " +
                " SELECT " +
                "  COUNT(1) total, " +
                "  d.`name`, " +
                "  d.id " +
                " FROM " +
                "  wlyy_consult_team a  " +
                "  "+ imDataBaseName +".Topics t, " +
                "  "+ imDataBaseName +".Participants p, " +
                "  "+ imDataBaseName +".Doctors d, " +
                "  Wlyy_Consult_Team c, " +
                "  "+ imDataBaseName +".Patients s " +
                " WHERE " +
                "  a.czrq <= '" + endDate + "' " +
                " AND a.czrq >= '" + startDate + "' " +
                " AND a.admin_team_code = " + teamCode +
                " AND a.consult IN ( " +
                "   SELECT DISTINCT " +
                "    t.id consultId " +
                "   FROM " +
                "    " + imDataBaseName + ".topics t, " +
                "    " + imDataBaseName + ".participants p, " +
                "    " + imDataBaseName + ".doctors d, " +
                "    " + imDataBaseName + ".sessions s " +
                "   WHERE " +
                "    p.participant_id = d.id " +
                "   AND t.session_id = p.session_id " +
                "   AND t.session_id = s.id " +
                "   AND s.type = 1 " +
                "   AND t. STATUS = 10 " +
                "   AND t.create_time <= '" + endDate + "' " +
                "   AND t.create_time >= '" + startDate + "' " +
                "  ) " +
                "  GROUP BY a.doctor " +
                " ) c ON c.doctor = t.doctor_code, " +
                " wlyy_doctor d " +
                "  d.id = p.participant_id " +
                " AND c.consult = t.id " +
                " AND c.patient = s.id " +
                " AND p.session_id = t.session_id " +
                " AND c.admin_team_code = " +teamCode+
                " AND t.create_time >= '"+startDate+"' " +
                " AND t.create_time <= '"+endDate+"' " +
                " AND t. STATUS = 10 " +
                " GROUP BY " +
                "  id " +
                " ) c ON c.id = m.doctor_code " +
                " WHERE " +
                " t.doctor_code = d.`code` " +
                " AND t.available = 1 " +
                " AND t.team_id = " + teamCode;
                " m.doctor_code = d.`code` " +
                " AND m.team_id = "+teamCode;
        if ("0".equals(sort)) {
            endConsultSql = endConsultSql + " ORDER BY endRey DESC";
        } else {
@ -2861,122 +2785,78 @@ public class StatisticsService extends BaseService {
        endDate = endDate + " 23:59:59";
        //获取咨询总数
        String couTotalSQL = "SELECT " +
                " c.doctorCode, " +
                " count(1) AS total " +
                "  COUNT(1) total " +
                " FROM " +
                " wlyy_consult_team a, " +
                " ( " +
                " SELECT DISTINCT " +
                " t.id consultId, " +
                " d.id doctorCode " +
                " FROM " +
                " " + imDataBaseName + ".topics t, " +
                " " + imDataBaseName + ".participants p, " +
                " " + imDataBaseName + ".doctors d, " +
                " " + imDataBaseName + ".sessions s " +
                " WHERE " +
                " p.participant_id = d.id " +
                " AND t.session_id = p.session_id " +
                " AND t.session_id = s.id " +
                " AND s.type = 1 " +
                " AND t.create_time <= '" + endDate + "' " +
                " AND d.id='" + doctor + "' " +
                " ) c " +
                "  "+imDataBaseName+".Topics t, " +
                "  "+imDataBaseName+".Participants p, " +
                "  "+imDataBaseName+".Doctors d, " +
                "  Wlyy_Consult_Team c, " +
                "  "+imDataBaseName+".Patients s " +
                " WHERE " +
                " c.consultId = a.consult " +
                " AND a.admin_team_code = " + teamCode +
                " GROUP BY " +
                " c.doctorCode ";
                "  d.id = p.participant_id " +
                " AND c.consult = t.id " +
                " AND c.patient = s.id " +
                " AND p.session_id = t.session_id " +
                " AND c.admin_team_code ="+teamCode+
                " AND d.id='"+doctor+"'" +
                " AND t.create_time <= '"+endDate+"'";
        //及时回复数
        String reyTotalSql = "SELECT " +
                " c.doctorCode, " +
                " count(1) AS total " +
                " FROM " +
                " wlyy_consult_team a, " +
                " ( " +
                " SELECT DISTINCT " +
                " t.id consultId, " +
                " d.id doctorCode " +
                "  COUNT(1) total " +
                " FROM " +
                " " + imDataBaseName + ".topics t, " +
                " " + imDataBaseName + ".participants p, " +
                " " + imDataBaseName + ".doctors d, " +
                " " + imDataBaseName + ".sessions s " +
                "  "+imDataBaseName+".Topics t, " +
                "  "+imDataBaseName+".Participants p, " +
                "  "+imDataBaseName+".Doctors d, " +
                "  Wlyy_Consult_Team c, " +
                "  "+imDataBaseName+".Patients s " +
                " WHERE " +
                " p.participant_id = d.id " +
                " AND t.session_id = p.session_id " +
                " AND t.session_id = s.id " +
                " AND s.business_type=2  " +
                " AND t.`reply`=1  " +
                "  d.id = p.participant_id " +
                " AND c.consult = t.id " +
                " AND c.patient = s.id " +
                " AND p.session_id = t.session_id " +
                " AND t.`reply`=1 " +
                " AND c.admin_team_code ="+teamCode+
                " AND d.id='"+doctor+"'" +
                " AND TIMESTAMPDIFF(SECOND ,t.create_time ,t.reply_time) <86400 AND TIMESTAMPDIFF(SECOND ,t.create_time,t.reply_time) >0 " +
                " AND t.create_time <= '" + endDate + "' " +
                " AND d.id='" + doctor + "' " +
                " ) c " +
                " WHERE " +
                " c.consultId = a.consult " +
                " AND a.admin_team_code =" + teamCode +
                " GROUP BY " +
                " c.doctorCode";
                " AND t.create_time <= '"+endDate+"'";
        //本周或月增量
        String addTotalSql = "SELECT " +
                "  c.doctorCode, " +
                "  count(1) AS total " +
                " FROM " +
                "  wlyy_consult_team a, " +
                "  ( " +
                "   SELECT DISTINCT " +
                " t.id consultId," +
                " d.id doctorCode " +
                " COUNT(1) total " +
                " FROM " +
                "    " + imDataBaseName + ".topics t, " +
                "    " + imDataBaseName + ".participants p, " +
                "    " + imDataBaseName + ".doctors d, " +
                "    " + imDataBaseName + ".sessions s " +
                "   WHERE " +
                "    p.participant_id = d.id " +
                "   AND t.session_id = p.session_id " +
                "   AND t.session_id = s.id " +
                "   AND s.type = 1 " +
                "   AND t.create_time <= '" + endDate + "' " +
                "   AND t.create_time >= '" + startDate + "' " +
                "   AND d.id='" + doctor + "' " +
                "  ) c " +
                "  "+imDataBaseName+".Topics t, " +
                "  "+imDataBaseName+".Participants p, " +
                "  "+imDataBaseName+".Doctors d, " +
                "  Wlyy_Consult_Team c, " +
                "  "+imDataBaseName+".Patients s " +
                " WHERE " +
                "  c.consultId = a.consult " +
                " AND a.admin_team_code =" + teamCode +
                " GROUP BY " +
                "  c.doctorCode";
                "  d.id = p.participant_id " +
                " AND c.consult = t.id " +
                " AND c.patient = s.id " +
                " AND p.session_id = t.session_id " +
                " AND c.admin_team_code ="+teamCode+
                " AND d.id='"+doctor+"'" +
                " AND t.create_time >= '"+startDate+"' " +
                " AND t.create_time <= '"+endDate+"'";
        //当前未回复咨询数
        String noRelySql = "SELECT " +
                "  c.doctorCode, " +
                "  count(1) AS total " +
                " COUNT(1) total " +
                " FROM " +
                "  wlyy_consult_team a, " +
                "  ( " +
                "   SELECT DISTINCT " +
                "    t.id consultId, " +
                "    d.id doctorCode " +
                "   FROM " +
                "    " + imDataBaseName + ".topics t, " +
                "    " + imDataBaseName + ".participants p, " +
                "    " + imDataBaseName + ".doctors d, " +
                "    " + imDataBaseName + ".sessions s " +
                "   WHERE " +
                "    p.participant_id = d.id " +
                "   AND t.session_id = p.session_id " +
                "   AND t.session_id = s.id " +
                "   AND s.type = 1  " +
                "   AND t. STATUS <> 10  " +
                "   AND t.`reply` = 0  " +
                "   AND t.create_time <= '" + endDate + "' " +
                "   AND t.create_time >= '" + startDate + "' " +
                "   AND d.id='" + doctor + "' " +
                "  ) c " +
                "  "+imDataBaseName+".Topics t, " +
                "  "+imDataBaseName+".Participants p, " +
                "  "+imDataBaseName+".Doctors d, " +
                "  Wlyy_Consult_Team c, " +
                "  "+imDataBaseName+".Patients s " +
                " WHERE " +
                "  c.consultId = a.consult " +
                "  AND a.admin_team_code =" + teamCode +
                " GROUP BY " +
                "  c.doctorCode";
                "  d.id = p.participant_id " +
                " AND c.consult = t.id " +
                " AND c.patient = s.id " +
                " AND p.session_id = t.session_id " +
                " AND t. STATUS <> 10  " +
                " AND t.`reply` = 0  " +
                " AND c.admin_team_code ="+teamCode+
                " AND d.id='"+doctor+"'" +
                " AND t.create_time >= '"+startDate+"' " +
                " AND t.create_time <= '"+endDate+"'";
        JSONObject rs = new JSONObject();
        Long total = 0L;
@ -3659,8 +3539,8 @@ public class StatisticsService extends BaseService {
                    " wlyy_patient_health_guidance w " +
                    " WHERE " +
                    " w.admin_team_code = " + teamCode +
                    " AND w.czrq <= '" + endDate + "' " +
                    " AND w.czrq >= '" + startDate + "' " +
                    " AND w.czrq <= '" +endDate+ "' " +
                    " AND w.czrq >= '" +startDate  + "' " +
                    " GROUP BY dateNo";
        } else {
            //按月统计
@ -3697,7 +3577,7 @@ public class StatisticsService extends BaseService {
                    " w.admin_team_code = " + teamCode +
                    " AND w.doctor ='" + doctor + "'" +
                    " AND w.czrq <= '" + endDate + "' " +
                    " AND w.czrq >= '" + startDate + "' " +
                    " AND w.czrq >= '" +startDate  + "' " +
                    " GROUP BY dateNo";
        } else {
            //按月统计
@ -3848,8 +3728,8 @@ public class StatisticsService extends BaseService {
                " WHERE " +
                " w.admin_team_code =  " + teamCode +
                " AND w.doctor ='" + doctor + "'" +
                " AND w.czrq <= '" + endDate + "' " +
                " AND w.czrq >= '" + startDate + "'";
                " AND w.czrq <= '" +endDate  + "' " +
                " AND w.czrq >= '" +startDate+ "'";
        JSONObject rs = new JSONObject();
        Long guidanceCount = 0L;
        Long addCount = 0L;
@ -4188,24 +4068,19 @@ public class StatisticsService extends BaseService {
        int changeTeam = getLevel1NumForRedis("31", level, code, timeKey);//夸团队的数目
        int changeHospital = getLevel1NumForRedis("32", level, code, timeKey);//夸社区的数目
        int changeTown = getLevel1NumForRedis("33", level, code, timeKey);//夸区的数目
        jo.put("inNum", inNum);//今年的签入量
        jo.put("outNum", outNum);//今年的签出量
        jo.put("thisYearSwithch", switchNum);//今年的转签量
        jo.put("switchHealth", switchJO);//今年的服务分布
        String changeTeamNum = getRangeNoLast(changeTeam, switchNum, 2);//跨团队转签率
        String changeHospNum = getRangeNoLast(changeHospital, switchNum, 2);//跨团队转签率
        String changeTownNum=null ;
        if (changeTown != 0) {
            changeTownNum = (100 - Double.valueOf(changeTeamNum) - Double.valueOf(changeHospNum)) + "";//解决算出来可能不是100%的问题 用扣的
        }else{
            changeTownNum="0";
        }
        jo.put("switchTeam", changeTeamNum+"%");//今年的转签量
        jo.put("switchHospital", changeHospNum+"%");//今年的转签量
        jo.put("switchTown", changeTownNum+"%");//今年的转签量
        String changeTeamNum=getRangeNoLast(changeTeam, switchNum, 2);//跨团队转签率
        String changeHospNum=getRangeNoLast(changeHospital, switchNum, 2);//跨社区转签率
        String changeTownNum=(100-Double.valueOf(changeTeamNum)-Double.valueOf(changeHospNum))+"";//跨区转签率,解决算出来可能不是100%的问题 用扣的
        jo.put("switchTeam", changeTeamNum);//今年的转签量
        jo.put("switchHospital", changeHospNum);//今年的转签量
        jo.put("switchTown", changeTownNum);//今年的转签量
        return jo;
    }
@ -4251,9 +4126,9 @@ public class StatisticsService extends BaseService {
     * @return
     */
    public String getRange(int first, int second, int i) {
        if (second == 0 && first > 0) {
        if(second==0&&first>0){
            return "100%";
        } else if (second == 0 && first == 0) {
        }else if(second==0&&first==0){
            return "0%";
        }
        float size = (float) (first * 100) / second;
@ -4263,15 +4138,15 @@ public class StatisticsService extends BaseService {
    }
    public String getRangeNoLast(int first, int second, int i) {
        if (second == 0 && first > 0) {
            return "100";
        } else if (second == 0 && first == 0) {
            return "0";
        if(second==0&&first>0){
            return "100%";
        }else if(second==0&&first==0){
            return "0%";
        }
        float size = (float) (first * 100) / second;
        DecimalFormat df = new DecimalFormat("0.00");//格式化小数,不足的补0
        String filesize = df.format(size);
        return filesize;
        return filesize ;
    }
    public JSONObject getConsultingTitleAll(Integer level, String area, String year) {
@ -4519,21 +4394,21 @@ public class StatisticsService extends BaseService {
    public JSONObject getConsultingStatisticsListYear(Integer level, String area, String lowlevel, String year) {
        JSONObject result = new JSONObject();
        Integer coutYear = Integer.parseInt(year) + 1;
        Integer coutYear = Integer.parseInt(year)+1;
        //及时回复数
        JSONArray rely = getQuotaList(level, lowlevel, area, coutYear, 23);
        if (rely == null) {
        JSONArray rely = getQuotaList(level,lowlevel,area,coutYear,23);
        if(rely==null){
            return null;
        }
        //咨询总数
        JSONArray total = getQuotaList(level, lowlevel, area, coutYear, 25);
        if (total == null) {
        JSONArray total = getQuotaList(level,lowlevel,area,coutYear,25);
        if(total==null){
            return null;
        }
        //未回复数
        JSONArray onRely = getQuotaList(level, lowlevel, area, coutYear, 22);
        if (total == null) {
        JSONArray onRely =getQuotaList(level,lowlevel,area,coutYear,22);
        if(total==null){
            return null;
        }
        result.put("resultList", getCoutList(rely, total, onRely));
@ -4665,7 +4540,6 @@ public class StatisticsService extends BaseService {
     * 2.市级-机构
     * 3.区级-机构
     * 4.机构-团队
     *
     * @param level
     * @param lovlevel
     * @param area
@ -4673,35 +4547,35 @@ public class StatisticsService extends BaseService {
     * @param index
     * @return
     */
    public JSONArray getQuotaList(Integer level, String lovlevel, String area, Integer year, Integer index) {
        String sql;
        if (level == 4) {
            if (StringUtils.isBlank(lovlevel)) {
    public JSONArray getQuotaList(Integer level, String lovlevel, String area, Integer year, Integer index){
        String sql ;
        if(level==4){
            if(StringUtils.isBlank(lovlevel)){
                //市 区
                sql = " SELECT t.result As num,t.town_name AS name,t.town AS code,t.create_time AS date" +
                sql =" SELECT t.result As num,t.town_name AS name,t.town AS code,t.create_time AS date" +
                        " FROM wlyy_quota_result t " +
                        " WHERE t.city ='" + area + "' AND t.quato_code ='" + index + "' AND t.level1_type ='3'AND LEFT(t.create_time,10)='" + year + "-06-30'";
            } else {
                        " WHERE t.city ='"+area+"' AND t.quato_code ='"+index+"' AND t.level1_type ='3'AND LEFT(t.create_time,10)='"+year+"-06-30'";
            }else{
                //市 机构
                sql = "SELECT t.result As num,t.org_name AS name,t.org_code AS code,t.create_time AS date" +
                        " FROM wlyy_quota_result t " +
                        " WHERE t.city ='" + area + "' AND t.quato_code ='" + index + "' AND t.level1_type ='2' AND LEFT(t.create_time,10)='" + year + "-06-30'";
                        " WHERE t.city ='"+area+"' AND t.quato_code ='"+index+"' AND t.level1_type ='2' AND LEFT(t.create_time,10)='"+year+"-06-30'";
            }
        } else if (level == 3) {
        }else if (level ==3){
            //区 机构
            sql = "SELECT t.result As num,t.org_name AS name,t.org_code AS code,t.create_time AS date " +
                    "FROM wlyy_quota_result t " +
                    "WHERE t.town ='" + area + "' AND t.quato_code ='" + index + "' AND t.level1_type ='2' AND LEFT(t.create_time,10)='" + year + "-06-30'";
        } else {
                    "WHERE t.town ='"+area+"' AND t.quato_code ='"+index+"' AND t.level1_type ='2' AND LEFT(t.create_time,10)='"+year+"-06-30'";
        }else{
            //机构 团队
            sql = "SELECT t.result As num,t.qkdoctor_name AS name,t.qkdoctor_code AS code,t.create_time AS date " +
            sql ="SELECT t.result As num,t.qkdoctor_name AS name,t.qkdoctor_code AS code,t.create_time AS date " +
                    " FROM wlyy_quota_result t " +
                    " WHERE t.org_code ='" + area + "' AND t.quato_code ='" + index + "' AND t.level1_type ='1' AND LEFT(t.create_time,10)='" + year + "-06-30'";
                    " WHERE t.org_code ='"+area+"' AND t.quato_code ='"+index+"' AND t.level1_type ='1' AND LEFT(t.create_time,10)='"+year+"-06-30'";
        }
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        if (list != null && list.size() > 0) {
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        if(list!=null&&list.size()>0){
            return new JSONArray(list);
        } else {
        }else{
            return null;
        }

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

@ -279,7 +279,7 @@ public class ManagerQuestionnaireService extends BaseService {
//                            }
//                        }
                        //发送代理人
                        JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
                        JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode(),p.getOpenid());
                        if(jsonArray!=null&&jsonArray.length()>0){
                            for (int i = 0;i<jsonArray.length();i++){
                                JSONObject j  = jsonArray.getJSONObject(i);
@ -289,11 +289,11 @@ public class ManagerQuestionnaireService extends BaseService {
                                    json.put("toUser",member.getCode());
                                    json.remove("first");
                                    try {
                                        json.put("first", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), member.getName()) + first);
                                        json.put("first", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), p.getName()) + first);
                                    } catch (Exception e) {
                                        e.printStackTrace();
                                    }
                                    PushMsgTask.getInstance().sendWeixinMessage(weiXinAccessTokenUtils.getAccessToken(), 11, member.getOpenid(), member.getName(), json);
                                    PushMsgTask.getInstance().sendWeixinMessage(weiXinAccessTokenUtils.getAccessToken(), 11, member.getOpenid(), p.getName(), json);
                                }
                            }
                        }

+ 65 - 61
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/template/DoctorGuidanceTempService.java

@ -12,6 +12,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
/**
@ -30,19 +31,21 @@ public class DoctorGuidanceTempService extends BaseService {
    /**
     * 记录医生健康指导模板使用次数
     *
     * @param modelCode 健康指导模板编码
     */
    public void countSend(String modelCode){
        synchronized (this){
    public void countSend(String modelCode) {
        synchronized (this) {
            String sql = "UPDATE wlyy_doctor_guidance_temp  " +
                    "SET send_times=send_times+1 " +
                    "WHERE CODE=?";
            jdbcTemplate.update(sql,modelCode);
            jdbcTemplate.update(sql, modelCode);
        }
    }
    /**
     * 查询单个指导模板详情
     *
     * @param modelCode
     * @return
     * @throws Exception
@ -51,24 +54,25 @@ public class DoctorGuidanceTempService extends BaseService {
        String sql = "SELECT wdgt.`model_name`,wdgt.`content`,wdgt.`images_url`,wdgt.`create_time`,wdgt.`send_times` " +
                "FROM wlyy_doctor_guidance_temp wdgt " +
                "WHERE wdgt.`code`=?";
        Map temp=(Map)jdbcTemplate.queryForMap(sql,modelCode);
        String modelName= (String)temp.get("model_name");
        String content= (String)temp.get("content");
        String imagesUrl= (String)temp.get("images_url");
        Map temp = (Map) jdbcTemplate.queryForMap(sql, modelCode);
        String modelName = (String) temp.get("model_name");
        String content = (String) temp.get("content");
        String imagesUrl = (String) temp.get("images_url");
//        多图按逗号分割保存成数组
        String [] imagesArray = null;
        if(imagesUrl != null){
        String[] imagesArray = null;
        if (imagesUrl != null) {
            imagesArray = imagesUrl.split(",");
        }
        String createTime = (String)temp.get("create_time").toString();
        String sendTimes = (String)temp.get("send_times").toString();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date createTime = (Date) temp.get("create_time");
        String dateTime = sdf.format(createTime);
        String sendTimes = (String) temp.get("send_times").toString();
        JSONObject json = new JSONObject();
        json.put("modelName",modelName);
        json.put("content",content);
        json.put("imagesUrls",imagesArray);
        json.put("createTime",createTime);
        json.put("sendTimes",sendTimes);
        json.put("modelName", modelName);
        json.put("content", content);
        json.put("imagesUrls", imagesArray);
        json.put("createTime", dateTime);
        json.put("sendTimes", sendTimes);
        return json;
    }
@ -79,7 +83,7 @@ public class DoctorGuidanceTempService extends BaseService {
     * @param content 指导内容
     * @return
     */
    public DoctorGuidanceTemp add(String doctor, String content,String modelName,String imagesUrl) {
    public DoctorGuidanceTemp add(String doctor, String content, String modelName, String imagesUrl) {
        DoctorGuidanceTemp guidanceTemp = new DoctorGuidanceTemp();
        String imageUrls = "";
        String imageRow = "";
@ -92,16 +96,16 @@ public class DoctorGuidanceTempService extends BaseService {
        guidanceTemp.setModelName(modelName);
        if (imagesUrl==null||"".equals(imagesUrl)) {
            imagesUrl=null;
        }else {
        if (imagesUrl == null || "".equals(imagesUrl)) {
            imagesUrl = null;
        } else {
            String[] images = imagesUrl.split(",");
            for (String image : images) {
                if (image.contains("http://")) {
                    imageUrls += image + ",";
                } else {
                    try {
                        imageRow += CommonUtil.copyTempImage(image)+",";
                        imageRow += CommonUtil.copyTempImage(image) + ",";
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
@ -109,7 +113,7 @@ public class DoctorGuidanceTempService extends BaseService {
            }
            imagesUrl = imageUrls + imageRow;
            imagesUrl =  imagesUrl.substring(0,imagesUrl.length()-1);
            imagesUrl = imagesUrl.substring(0, imagesUrl.length() - 1);
        }
        guidanceTemp.setImagesUrl(imagesUrl);
@ -136,16 +140,16 @@ public class DoctorGuidanceTempService extends BaseService {
        guidanceTemp.setModelName(modelName);
        guidanceTemp.setContent(content);
        if (imagesUrl==null||"".equals(imagesUrl)) {
            imagesUrl=null;
        }else {
        if (imagesUrl == null || "".equals(imagesUrl)) {
            imagesUrl = null;
        } else {
            String[] images = imagesUrl.split(",");
            for (String image : images) {
                if (image.contains("http://")) {
                    imageUrls += image + ",";
                } else {
                    try {
                        imageRow += CommonUtil.copyTempImage(image)+",";
                        imageRow += CommonUtil.copyTempImage(image) + ",";
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
@ -153,7 +157,7 @@ public class DoctorGuidanceTempService extends BaseService {
            }
            imagesUrl = imageUrls + imageRow;
            imagesUrl =  imagesUrl.substring(0,imagesUrl.length()-1);
            imagesUrl = imagesUrl.substring(0, imagesUrl.length() - 1);
        }
        guidanceTemp.setImagesUrl(imagesUrl);
@ -173,8 +177,8 @@ public class DoctorGuidanceTempService extends BaseService {
        if (codes != null && codes.length > 0) {
            for (String temp : codes) {
                String sql = "SELECT t.owner FROM wlyy_doctor_guidance_temp t WHERE t.code=?";
                String owner = jdbcTemplate.queryForObject(sql,String.class,temp);
                if(!"system".equals(owner)){
                String owner = jdbcTemplate.queryForObject(sql, String.class, temp);
                if (!"system".equals(owner)) {
                    guidanceTempDao.deleteByCode(temp);
                }
@ -191,49 +195,49 @@ public class DoctorGuidanceTempService extends BaseService {
     * @param type   模板类型
     * @return
     */
    public List<Map<String,Object>> list(String doctor, String type,int pageSize,int pageNo) throws Exception {
    public List<Map<String, Object>> list(String doctor, String type, int pageSize, int pageNo) throws Exception {
        Page<DoctorGuidanceTemp> temps = null;
        PageRequest pageRequest = new PageRequest(pageNo, pageSize);
        List<Map<String,Object>> listMap = new ArrayList<>();
        List<Map<String, Object>> listMap = new ArrayList<>();
        if (type.equals("1")) {
            temps = guidanceTempDao.findByOwner("system",pageRequest);
           List<DoctorGuidanceTemp> list = temps.getContent();
           for (int i=0;i<list.size();i++){
               DoctorGuidanceTemp dgt = list.get(i);
               Map<String,Object> tem = new HashMap<>();
               tem.put("code",dgt.getCode());
               tem.put("owner",dgt.getOwner());
               tem.put("sendTimes",dgt.getSendTimes());
               tem.put("lastTime",dgt.getLastTime());
               tem.put("modelName",dgt.getModelName());
               listMap.add(tem);
           }
            temps = guidanceTempDao.findByOwner("system", pageRequest);
            List<DoctorGuidanceTemp> list = temps.getContent();
            for (int i = 0; i < list.size(); i++) {
                DoctorGuidanceTemp dgt = list.get(i);
                Map<String, Object> tem = new HashMap<>();
                tem.put("code", dgt.getCode());
                tem.put("owner", dgt.getOwner());
                tem.put("sendTimes", dgt.getSendTimes());
                tem.put("lastTime", dgt.getLastTime());
                tem.put("modelName", dgt.getModelName());
                listMap.add(tem);
            }
        } else if (type.equals("2")) {
            temps = guidanceTempDao.findByOwner(doctor,pageRequest);
            temps = guidanceTempDao.findByOwner(doctor, pageRequest);
            List<DoctorGuidanceTemp> list = temps.getContent();
            for (int i=0;i<list.size();i++){
            for (int i = 0; i < list.size(); i++) {
                DoctorGuidanceTemp dgt = list.get(i);
                Map<String,Object> tem = new HashMap<>();
                tem.put("code",dgt.getCode());
                tem.put("owner",dgt.getOwner());
                tem.put("sendTimes",dgt.getSendTimes());
                tem.put("lastTime",dgt.getLastTime());
                tem.put("modelName",dgt.getModelName());
                Map<String, Object> tem = new HashMap<>();
                tem.put("code", dgt.getCode());
                tem.put("owner", dgt.getOwner());
                tem.put("sendTimes", dgt.getSendTimes());
                tem.put("lastTime", dgt.getLastTime());
                tem.put("modelName", dgt.getModelName());
                listMap.add(tem);
            }
        } else {
            temps = guidanceTempDao.findByOwnerAndSystem(doctor,pageRequest);
            temps = guidanceTempDao.findByOwnerAndSystem(doctor, pageRequest);
            List<DoctorGuidanceTemp> list = temps.getContent();
            for (int i=0;i<list.size();i++){
            for (int i = 0; i < list.size(); i++) {
                DoctorGuidanceTemp dgt = list.get(i);
                Map<String,Object> tem = new HashMap<>();
                tem.put("code",dgt.getCode());
                tem.put("owner",dgt.getOwner());
                tem.put("sendTimes",dgt.getSendTimes());
                tem.put("lastTime",dgt.getLastTime());
                tem.put("modelName",dgt.getModelName());
                Map<String, Object> tem = new HashMap<>();
                tem.put("code", dgt.getCode());
                tem.put("owner", dgt.getOwner());
                tem.put("sendTimes", dgt.getSendTimes());
                tem.put("lastTime", dgt.getLastTime());
                tem.put("modelName", dgt.getModelName());
                listMap.add(tem);
            }
        }

+ 48 - 5
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/template/DoctorTeamGuidanceService.java

@ -53,6 +53,8 @@ public class DoctorTeamGuidanceService extends BaseService {
    private PatientHealthGuidanceService patientHealthGuidanceService;
    @Autowired
    private ConsultService consultService;
    @Autowired
    DoctorGuidanceTempDao guidanceTempDao;
    /**
     * 新增团队指导模板
@ -118,7 +120,14 @@ public class DoctorTeamGuidanceService extends BaseService {
     * @param images
     * @throws Exception
     */
    public void modifyTeamGuidance(String doctor, int saveAsGuidance, String guidanceCode, String title, JSONArray teams, String content, String images) throws Exception {
    public void modifyTeamGuidance(String doctor, String isLeader, int saveAsGuidance, String guidanceCode, String title,
                                   JSONArray teams, String content, String images) throws Exception {
//        首先身份验证
        DoctorTeamGuidanceDetail guidanceDetail = doctorTeamGuidanceDetailDao.findGuidanceDetail(guidanceCode);
        String creater = guidanceDetail.getCreater();
        if ((!doctor.equals(creater)) && (!"1".equals(isLeader))) {
            throw new Exception("没有修改权限");
        }
//        图片地址需要处理
        String image = "";
        if (StringUtils.isNotEmpty(images)) {
@ -127,7 +136,12 @@ public class DoctorTeamGuidanceService extends BaseService {
        switch (saveAsGuidance) {
            case 1:
                //      保存为个人模板
                //      保存为个人模板 去除个人模板标题重复
                //        验证模板名称唯一性
                List<DoctorGuidanceTemp> templates = guidanceTempDao.findByTitle(title);
                if (templates != null && templates.size() != 0) {
                    throw new Exception("个人模板标题重复");
                }
                DoctorGuidanceTemp doctorGuidanceTemp = new DoctorGuidanceTemp();
                doctorGuidanceTemp.setCode(getCode());
                doctorGuidanceTemp.setImagesUrl(image);
@ -136,24 +150,53 @@ public class DoctorTeamGuidanceService extends BaseService {
                doctorGuidanceTemp.setModelName(title);
                doctorGuidanceTemp.setOwner(doctor);
                doctorGuidanceTemp.setLastTime(new Date());
                doctorGuidanceTemp.setSendTimes(0);
                doctorGuidanceTemp.setSendTimes(1);
                doctorGuidanceTempDao.save(doctorGuidanceTemp);
            case 0:
                //                        数据库中拥有该模板的所有团队
                List<DoctorTeamGuidanceTemplate> teamIds = doctorTeamGuidanceTemplateDao.getTeamsByGuidance(guidanceCode);
                List teamList = new ArrayList();
                List tempTeams = new ArrayList();
                for (DoctorTeamGuidanceTemplate team : teamIds) {
                    teamList.add(team.getTeamId());
                }
                for (Object team : teams) {
                    JSONObject teamJson = new JSONObject(team.toString());
                    int teamId = teamJson.getInt("teamId");
                    tempTeams.add(teamId);
                    String teamName = teamJson.getString("teamName");
//                    团队内模板标题要去重复(去掉自身)
                    List<DoctorTeamGuidanceTemplate> list = doctorTeamGuidanceTemplateDao.distinctByTeamTitle(title, teamId);
                    if (list.size() <= 1) {
                        doctorTeamGuidanceTemplateDao.modifyTeamGuidance(teamId,guidanceCode, title);
//                        直接失效原有团队模板对应关系  在重新新增以前没有的团队关系 发送次数要归0
                        if (teamList.contains(teamId)) {
//                            数据库有
                            doctorTeamGuidanceTemplateDao.modifyTeamGuidance(teamId, guidanceCode, title);
                        }else if (!teamList.contains(teamId)){
                            //                        现在有,而数据库没有 要新增
                            DoctorTeamGuidanceTemplate doctorTeamGuidanceTemplate = new DoctorTeamGuidanceTemplate();
                            doctorTeamGuidanceTemplate.setCreater(doctor);
                            doctorTeamGuidanceTemplate.setCreateTime(new Date());
                            doctorTeamGuidanceTemplate.setDel(1);
                            doctorTeamGuidanceTemplate.setTeamId(teamId);
                            doctorTeamGuidanceTemplate.setTeamName(teamName);
                            doctorTeamGuidanceTemplate.setTitle(title);
                            doctorTeamGuidanceTemplate.setTeamTemplateCode(guidanceCode);
                            doctorTeamGuidanceTemplate.setUseTimes(0);
                            doctorTeamGuidanceTemplateDao.save(doctorTeamGuidanceTemplate);
                        }
                    } else {
                        throw new Exception(teamName + ":团队标题重复!");
                    }
                    //                直接修改团队模板后修改模板团队对应表
                    doctorTeamGuidanceDetailDao.modifyTeamGuidanceDetail(title, content, image, guidanceCode);
                }
                break;
//                            数据库有,而现在没有
                teamList.removeAll(tempTeams);
                for (Object team:teamList) {
                    doctorTeamGuidanceTemplateDao.deleteTeamGuidance(Integer.parseInt(team.toString()), guidanceCode);
                }
        }
    }

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

@ -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+"&represented="+json.getString("represented"));
                temp.setUrl(url + "yszx/html/manyidu.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");

+ 7 - 9
patient-co-wlyy/src/main/java/com/yihu/wlyy/task/RemindExpensesTask.java

@ -70,20 +70,18 @@ public class RemindExpensesTask implements Runnable {
                    PushMsgTask.getInstance().putWxMsg(tokenUtils.getAccessToken(), 8, p.getOpenid(), p.getName(), json);
                }
                //发送代理人
                JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
                JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode(),p.getOpenid());
                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);
                        }
                        JSONObject data = json;
                        data.remove("toUser");
                        data.put("toUser",member.getCode());
                        data.remove("doctorName");
                        data.put("doctorName", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), p.getName()) +"\n"+first);
                        PushMsgTask.getInstance().putWxMsg(tokenUtils.getAccessToken(), 8, member.getOpenid(), p.getName(), data);
                    }
                }

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

@ -1,41 +1,38 @@
package com.yihu.wlyy.web.common.account;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.*;
import com.yihu.wlyy.entity.login.LoginLog;
import com.yihu.wlyy.entity.patient.PatientFamilyMember;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.patient.SocialSecurityInfo;
import com.yihu.wlyy.entity.security.AccessToken;
import com.yihu.wlyy.entity.security.Token;
import com.yihu.wlyy.logs.BusinessLogs;
import com.yihu.wlyy.repository.patient.PatientDao;
import com.yihu.wlyy.repository.patient.SocialSecurityInfoDao;
import com.yihu.wlyy.service.app.family.FamilyMemberService;
import com.yihu.wlyy.service.app.family.FamilyService;
import com.yihu.wlyy.service.common.SMSService;
import com.yihu.wlyy.service.common.account.AccessTokenService;
import com.yihu.wlyy.service.common.account.PatientService;
import com.yihu.wlyy.service.common.account.TokenService;
import com.yihu.wlyy.service.common.login.LoginLogService;
import com.yihu.wlyy.util.*;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.util.HttpUtil;
import com.yihu.wlyy.util.IdcardValidator;
import com.yihu.wlyy.util.MD5;
import com.yihu.wlyy.util.RSAUtils;
import com.yihu.wlyy.web.WeixinBaseController;
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
import io.swagger.annotations.Api;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
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.patient.Patient;
import com.yihu.wlyy.entity.security.Token;
import com.yihu.wlyy.service.common.SMSService;
import com.yihu.wlyy.service.common.account.PatientService;
import com.yihu.wlyy.service.common.account.TokenService;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.web.WeixinBaseController;
import java.net.URLDecoder;
import java.util.*;
/**
 * @author calvin
@ -617,8 +614,8 @@ public class WechatController extends WeixinBaseController {
                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);
                    json.put("first", weiXinOpenIdUtils.getTitleMes(patient, j.getInt("relation"), patient.getName()) + first);
                    PushMsgTask.getInstance().putWxMsg(getAccessToken(), 5, member.getOpenid(), patient.getName(), json);
                }
            }

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

@ -262,19 +262,17 @@ public class DoctorConsultPublicController extends BaseController {
//					}
//				}
				//发送代理人
				JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
				JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode(),p.getOpenid());
				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);
						}
						JSONObject data = json;
						data.remove("toUser");
						data.put("toUser",member.getCode());
						data.remove("first");
						data.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),p.getName())+first);
						PushMsgTask.getInstance().putWxMsg(weiXinAccessTokenUtils.getAccessToken(), 3, member.getOpenid(), p.getName(), data);
					}
				}

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

@ -469,7 +469,7 @@ public class DoctorHealthEduArticleController extends WeixinBaseController {
//                        }
//                    }
                    //发送代理人
                    JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId((String)map.get("code"));
                    JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId((String)map.get("code"),openid);
                    if(jsonArray!=null&&jsonArray.length()>0){
                        Patient p = patientService.findByCode((String)map.get("code"));
                        for (int i=0;i<jsonArray.length();i++){
@ -480,9 +480,9 @@ public class DoctorHealthEduArticleController extends WeixinBaseController {
                            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()));
                            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);
                                PushMsgTask.getInstance().putWxMsg(getAccessToken(), 9, member.getOpenid(), p.getName(), data);
                            }
                        }
                    }

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

@ -499,7 +499,7 @@ public class ManagerQuestionnaireController extends WeixinBaseController {
//                            }
//                        }
                        //发送代理人
                        JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
                        JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode(),p.getOpenid());
                        if(jsonArray!=null&&jsonArray.length()>0){
                            for (int i = 0;i<jsonArray.length();i++){
                                JSONObject j  = jsonArray.getJSONObject(i);
@ -509,11 +509,11 @@ public class ManagerQuestionnaireController extends WeixinBaseController {
                                    json.put("toUser",member.getCode());
                                    json.remove("first");
                                    try {
                                        json.put("first", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), member.getName()) + first);
                                        json.put("first", weiXinOpenIdUtils.getTitleMes(p, j.getInt("relation"), p.getName()) + first);
                                    } catch (Exception e) {
                                        e.printStackTrace();
                                    }
                                    PushMsgTask.getInstance().sendWeixinMessage(weiXinAccessTokenUtils.getAccessToken(), 11, member.getOpenid(), member.getName(), json);
                                    PushMsgTask.getInstance().sendWeixinMessage(weiXinAccessTokenUtils.getAccessToken(), 11, member.getOpenid(), p.getName(), json);
                                }
                            }
                        }

+ 24 - 10
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/template/DoctorGuidanceTempController.java

@ -2,6 +2,7 @@ package com.yihu.wlyy.web.doctor.template;
import com.yihu.wlyy.aop.ObserverRequired;
import com.yihu.wlyy.entity.template.DoctorGuidanceTemp;
import com.yihu.wlyy.repository.template.DoctorGuidanceTempDao;
import com.yihu.wlyy.service.template.DoctorGuidanceTempService;
import com.yihu.wlyy.web.BaseController;
import io.swagger.annotations.Api;
@ -31,9 +32,12 @@ public class DoctorGuidanceTempController extends BaseController {
    @Autowired
    DoctorGuidanceTempService guidanceTempService;
    @Autowired
    DoctorGuidanceTempDao guidanceTempDao;
    /**
     * 查询单个模板详情
     *
     * @return
     */
    @RequestMapping(value = "/listDetail", method = RequestMethod.GET)
@ -86,11 +90,16 @@ public class DoctorGuidanceTempController extends BaseController {
            if (StringUtils.isEmpty(content)) {
                return error(-1, "内容不能为空");
            }
            if(modelName.length()<1||modelName.length()>10){
                return error(-1,"模板名称不能为空且在10字之内");
            if (modelName.length() < 1 || modelName.length() > 10) {
                return error(-1, "模板名称不能为空且在10字之内");
            }
            //        验证模板名称唯一性
            List<DoctorGuidanceTemp> templates = guidanceTempDao.findByTitle(modelName);
            if (templates != null && templates.size() != 0) {
                return error(-1, "模板名称与现有模板重复,请修改");
            }
            DoctorGuidanceTemp temp = guidanceTempService.add(getUID(), content,modelName,imagesUrl);
            DoctorGuidanceTemp temp = guidanceTempService.add(getUID(), content, modelName, imagesUrl);
            if (temp != null) {
                return write(200, "添加成功");
@ -117,8 +126,8 @@ public class DoctorGuidanceTempController extends BaseController {
    public String modify(@RequestParam @ApiParam(value = "指导编码") String code,
                         @RequestParam @ApiParam(value = "模板标题") String modelName,
                         @RequestParam @ApiParam(value = "指导内容") String content,
                         @RequestParam(required = false) @ApiParam(value = "图片地址")  String imagesUrl
                         ) {
                         @RequestParam(required = false) @ApiParam(value = "图片地址") String imagesUrl
    ) {
        try {
            if (StringUtils.isEmpty(code)) {
                return error(-1, "请指定需修改的模板");
@ -128,11 +137,16 @@ public class DoctorGuidanceTempController extends BaseController {
                return error(-1, "内容不能为空");
            }
            if (StringUtils.isEmpty(modelName)||modelName.length()>10) {
            if (StringUtils.isEmpty(modelName) || modelName.length() > 10) {
                return error(-1, "内容10个汉字之内且不能为空");
            }
//            验证模板名称唯一性 还要去除掉其本身
            List<DoctorGuidanceTemp> templates = guidanceTempDao.findByTitle(modelName);
            if (templates != null && templates.size() > 1) {
                return error(-1, "模板名称与现有模板重复,请修改");
            }
            DoctorGuidanceTemp temp = guidanceTempService.modify(code,modelName,content,imagesUrl);
            DoctorGuidanceTemp temp = guidanceTempService.modify(code, modelName, content, imagesUrl);
            if (temp != null) {
                return write(200, "修改成功");
@ -182,12 +196,12 @@ public class DoctorGuidanceTempController extends BaseController {
    @ApiOperation(value = "查询指导模板")
    public String list(@RequestParam(required = false, defaultValue = "")
                       @ApiParam(value = "模板类型 1:系统 2:自定义 为空:所有") String type,
                       @RequestParam(defaultValue = "10")  String pageSize,
                       @RequestParam(defaultValue = "10") String pageSize,
                       @RequestParam(defaultValue = "1") @ApiParam(value = "当前页码") String pageNo) {
        try {
            int pagesize = Integer.parseInt(pageSize);
            int pageno = Integer.parseInt(pageNo)-1;
            List<Map<String,Object>> temps = guidanceTempService.list(getUID(), type,pagesize,pageno);
            int pageno = Integer.parseInt(pageNo) - 1;
            List<Map<String, Object>> temps = guidanceTempService.list(getUID(), type, pagesize, pageno);
            if (temps == null || temps.size() < 1) {
                return write(200, "查询成功", "data", new JSONArray());

+ 6 - 3
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/template/DoctorTeamGuidanceController.java

@ -106,7 +106,7 @@ public class DoctorTeamGuidanceController extends WeixinBaseController {
            @ApiParam(value = "团队模板编码")
            @RequestParam String teamTemplateCode) {
        try {
            JSONObject guidanceDetail = doctorTeamGuidanceService.getTeamGuidanceDetail(teamId,teamTemplateCode);
            JSONObject guidanceDetail = doctorTeamGuidanceService.getTeamGuidanceDetail(teamId, teamTemplateCode);
            return write(200, "获取模板详情成功!", "guidanceDetail", guidanceDetail);
        } catch (Exception e) {
            return invalidUserException(e, -1, e.getMessage());
@ -172,12 +172,15 @@ public class DoctorTeamGuidanceController extends WeixinBaseController {
            @RequestParam String teamInfo,
            @ApiParam(value = "模板内容")
            @RequestParam String content,
            @ApiParam(value = "是否团队长")
            @RequestParam String isLeader,
            @ApiParam(value = "图片路径")
            @RequestParam(required = false) String images) {
        try {
//            新增修改权限,只有创建者和团队长才能修改
            String doctor = getUID();
            JSONArray teams = new JSONArray(teamInfo);
            doctorTeamGuidanceService.modifyTeamGuidance(doctor, saveAsGuidance, guidanceCode, title, teams, content, images);
            doctorTeamGuidanceService.modifyTeamGuidance(doctor,isLeader, saveAsGuidance, guidanceCode, title, teams, content, images);
            return write(200, "修改团队模板成功!");
        } catch (Exception e) {
            return invalidUserException(e, -1, e.getMessage());
@ -206,7 +209,7 @@ public class DoctorTeamGuidanceController extends WeixinBaseController {
            @RequestParam String guidanceCode) {
        try {
            String doctor = getUID();
            doctorTeamGuidanceService.deleteTeamGuidance(doctor,deleteAll, teamId, guidanceCode);
            doctorTeamGuidanceService.deleteTeamGuidance(doctor, deleteAll, teamId, guidanceCode);
            return write(200, "删除模板成功!");
        } catch (Exception e) {
            return invalidUserException(e, -1, e.getMessage());

+ 7 - 9
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/booking/PatientBookingController.java

@ -95,20 +95,18 @@ public class PatientBookingController extends WeixinBaseController{
//                        }
//                    }
                    //发送代理人
                    JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
                    JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode(),p.getOpenid());
                    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);
                            }
                            JSONObject data = json;
                            data.remove("toUser");
                            data.put("toUser",member.getCode());
                            data.remove("first");
                            data.put("first",weiXinOpenIdUtils.getTitleMes(p,j.getInt("relation"),p.getName())+first);
                            PushMsgTask.getInstance().putWxMsg(getAccessToken(), 7, member.getOpenid(), p.getName(), data);
                        }
                    }
                }

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

@ -1,6 +1,7 @@
package com.yihu.wlyy.web.patient.family;
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;
@ -230,19 +231,23 @@ public class FamilyMemberController extends WeixinBaseController {
                              @ApiParam(name = "familyMember", value = "家人code", defaultValue = "")
                              @RequestParam(value = "familyMember", required = true) String familyMember){
        try {
            Patient p = patientDao.findByCode(patient);
            JSONObject json = new JSONObject();
            json.put("code", p.getCode());
            json.put("name", p.getName());
            if(patient.equals(familyMember)){
                return success("查询成功");
                return write(200,"自己","data", json);
            }
            PatientFamilyMember member = familyMemberDao.findByPatientAndFamilyMember(patient,familyMember);
            if(member==null){
                return write(1,"不是家人","data", json);
            }
            JSONObject json = familyMemberService.isAuthorize(patient,familyMember);
            if(json==null){
                Patient member = patientDao.findByCode(familyMember);
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("code", member.getCode());
                jsonObject.put("name", member.getName());
                return write(1,"未授权","data", json);
            if(1==member.getIsAuthorize()){
                return write(200, "查询成功", "data", json);
            }
            return write(200, "查询成功", "data", json);
            return write(1,"未授权","data", json);
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "查询失败");

+ 24 - 30
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/third/BookingController.java

@ -325,20 +325,18 @@ public class BookingController extends WeixinBaseController {
//                    }
//                }
                //发送代理人
                JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
                JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode(),p.getOpenid());
                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);
                        }
                        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"),p.getName()));
                        PushMsgTask.getInstance().putWxMsg(getAccessToken(), 6, member.getOpenid(), p.getName(), data);
                    }
                }
@ -419,20 +417,18 @@ public class BookingController extends WeixinBaseController {
//                        }
//                    }
                    //发送代理人
                    JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
                    JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode(),p.getOpenid());
                    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);
                            }
                            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"),p.getName()));
                            PushMsgTask.getInstance().putWxMsg(getAccessToken(), 7, member.getOpenid(), p.getName(), data);
                        }
                    }
                }
@ -565,20 +561,18 @@ public class BookingController extends WeixinBaseController {
//                            }
//                        }
                        //发送代理人
                        JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode());
                        JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(p.getCode(),p.getOpenid());
                        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);
                                }
                                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"),p.getName()));
                                PushMsgTask.getInstance().putWxMsg(getAccessToken(), 6, member.getOpenid(), p.getName(), data);
                            }
                        }

+ 10 - 6
patient-co-wlyy/src/main/java/com/yihu/wlyy/wechat/util/WeiXinOpenIdUtils.java

@ -105,21 +105,25 @@ public class WeiXinOpenIdUtils {
     * @param code
     * @return
     */
    public JSONArray getAgentOpenId(String code) {
    public JSONArray getAgentOpenId(String code,String openid) {
        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) {
            Map<String,String> map = new HashMap<>();
            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);
                    if (StringUtils.isNotBlank(p.getOpenid())&&!p.getOpenid().equals(openid)) {
                        if(!map.containsKey(p.getOpenid())){
                            map.put(p.getOpenid(),p.getOpenid());
                            JSONObject json = new JSONObject();
                            json.put("member", p);
                            json.put("relation", (int) member.get("family_relation"));
                            result.put(json);
                        }
                    }
                }
            }