Browse Source

Merge branch 'dev' of http://192.168.1.220:10080/Amoy/patient-co-management into dev

trick9191 8 years ago
parent
commit
e5d298045f

+ 1 - 1
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/health/HealthEduArticlePatientService.java

@ -154,7 +154,7 @@ public class HealthEduArticlePatientService extends BaseService {
            page = 1 ;
        }
        int start = (page-1) * pagesize;
        String sql ="select a.article,b.title,b.summary,a.attached_content, a.czrq,count(a.patient) as amount,GROUP_CONCAT(p.name) as  patients,a.batch_no from "+
        String sql ="select a.article,b.title,b.summary,a.attached_content, a.czrq,count( distinct a.patient) as amount,GROUP_CONCAT( distinct p.name) as  patients,a.batch_no from "+
        " wlyy_health_edu_article_patient a, "+
        " wlyy_health_edu_article b,"+
        " wlyy_patient p"+

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

@ -71,6 +71,7 @@ public class SignWebService extends BaseService {
    private DoctorDao doctorDao;
    @Autowired
    private MessageDao messageDao;
    /**
     * 根据医生代码及签约状态编码 获取该医生签约患者的信息列表
     *
@ -200,13 +201,13 @@ public class SignWebService extends BaseService {
                "     and f.type = 2 " +
                "     and LENGTH(trim(ifnull(b.openid,''))) < 1";
        List<String> result = jdbcTemplate.queryForList(sql, new Object[]{doctor, doctor},String.class);
        List<String> result = jdbcTemplate.queryForList(sql, new Object[]{doctor, doctor}, String.class);
        if (result != null && result.size() > 0) {
            Set<String> set = redisTemplate.opsForSet().members("wechat:focus:remind:set");
            if (set == null) {
                isAll = false;
            } else if(!set.containsAll(result)) {
            } else if (!set.containsAll(result)) {
                isAll = false;
            }
        } else {
@ -234,13 +235,13 @@ public class SignWebService extends BaseService {
                "     and f.type = 2 " +
                "     and (f.expenses_status = 0 or LENGTH(trim(ifnull(f.expenses_status,''))) < 1)";
        List<String> result = jdbcTemplate.queryForList(sql, new Object[]{doctor, doctor},String.class);
        List<String> result = jdbcTemplate.queryForList(sql, new Object[]{doctor, doctor}, String.class);
        if (result != null && result.size() > 0) {
            Set<String> set = redisTemplate.opsForSet().members("expenses:remind:set");
            if (set == null) {
                isAll = false;
            } else if(!set.containsAll(result)) {
            } else if (!set.containsAll(result)) {
                isAll = false;
            }
        } else {
@ -372,115 +373,162 @@ public class SignWebService extends BaseService {
        return signFamilyDao.findAllByIdcard(idcard);
    }
    public JSONArray getSigns(String patient){
    public List<JSONObject> getSigns(String patient) {
        JSONArray jsonArray = new JSONArray();
        List<JSONObject> jsonArray = new ArrayList<JSONObject>();
        //加入续签表数据
//        List<SignFamilyRenew> renews = jdbcTemplate.queryForList(
//                "SELECT * FROM wlyy_sign_family_renew t " +
//                        "WHERE t.patient = '"+patient+"' AND t.status <> -1 and t.status <> -2",SignFamilyRenew.class);
        List<SignFamilyRenew> renews = signFamilyRenewDao.findAllActiveSignByPatient(patient);
        for(SignFamilyRenew renew: renews){
        for (SignFamilyRenew renew : renews) {
            AdminTeam adminTeam = null;
            Doctor doctor = null;
            if(renew.getAdminTeamId()!=null){
            if (renew.getAdminTeamId() != null) {
                adminTeam = adminTeamService.getTeam(renew.getAdminTeamId());
                doctor = doctorService.findDoctorByCode(adminTeam.getLeaderCode());
            }
            if(adminTeam==null)adminTeam = new AdminTeam();
            if(doctor==null)doctor = new Doctor();
            if (adminTeam == null) adminTeam = new AdminTeam();
            if (doctor == null) doctor = new Doctor();
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("hospitalName",renew.getHospitalName());
            jsonObject.put("hospital",renew.getHospital());
            jsonObject.put("code",renew.getCode());
            jsonObject.put("teamCode",renew.getTeamCode());
            jsonObject.put("begin",renew.getBegin());
            jsonObject.put("end",renew.getEnd());
            jsonObject.put("status",renew.getStatus());
            jsonObject.put("leader",adminTeam.getLeaderCode());
            jsonObject.put("leaderName",doctor.getName());
            jsonObject.put("doctor",renew.getDoctor());
            jsonObject.put("doctorHealth",renew.getDoctorHealth());
            jsonObject.put("doctorName",renew.getDoctorName());
            jsonObject.put("doctorHealthName",renew.getDoctorHealthName());
            jsonObject.put("expensesStatus",StringUtils.isNotBlank(renew.getExpensesStatus())?renew.getExpensesStatus():"1");
            jsonObject.put("applyDate",renew.getApplyDate());
            jsonObject.put("createTime",renew.getCzrq());
            jsonObject.put("type",renew.getType());
            jsonObject.put("typeName",renew.getType()==1?"三师签约":"家庭签约续签");
            jsonObject.put("hospitalName", renew.getHospitalName());
            jsonObject.put("hospital", renew.getHospital());
            jsonObject.put("code", renew.getCode());
            jsonObject.put("teamCode", renew.getTeamCode());
            jsonObject.put("begin", renew.getBegin());
            jsonObject.put("end", renew.getEnd());
            jsonObject.put("status", renew.getStatus());
            jsonObject.put("leader", adminTeam.getLeaderCode());
            jsonObject.put("leaderName", doctor.getName());
            jsonObject.put("doctor", renew.getDoctor());
            jsonObject.put("doctorHealth", renew.getDoctorHealth());
            jsonObject.put("doctorName", renew.getDoctorName());
            jsonObject.put("doctorHealthName", renew.getDoctorHealthName());
            jsonObject.put("expensesStatus", StringUtils.isNotBlank(renew.getExpensesStatus()) ? renew.getExpensesStatus() : "1");
            jsonObject.put("applyDate", renew.getApplyDate());
            jsonObject.put("createTime", renew.getCzrq());
            jsonObject.put("type", renew.getType());
            jsonObject.put("typeName", renew.getType() == 1 ? "三师签约" : "家庭签约续签");
            String statusName = "";
            switch (jsonObject.getInt("status")){
                case -4 : statusName = "已到期";break;
                case -3 : statusName ="已解约";break;
                case 0 : statusName ="待审核";break;
                case 1 : if(jsonObject.getInt("expensesStatus")==1){statusName ="已签约";}else{statusName ="待缴费";} break;
                case 2 : statusName ="患者申请取消签约";break;
                case 3 : statusName ="医生申请取消签约";break;
            switch (jsonObject.getInt("status")) {
                case -4:
                    statusName = "已到期";
                    break;
                case -3:
                    statusName = "已解约";
                    break;
                case 0:
                    statusName = "待审核";
                    break;
                case 1:
                    if (jsonObject.getInt("expensesStatus") == 1) {
                        statusName = "已签约";
                    } else {
                        statusName = "待缴费";
                    }
                    break;
                case 2:
                    statusName = "患者申请取消签约";
                    break;
                case 3:
                    statusName = "医生申请取消签约";
                    break;
            }
            jsonObject.put("statusName",statusName);
            jsonArray.put(jsonObject);
            jsonObject.put("statusName", statusName);
            jsonArray.add(jsonObject);
        }
        //查询签约表数据
        List<SignFamily> signFamilys =  signFamilyDao.findAllActiveSignByPatient(patient);
        List<SignFamily> signFamilys = signFamilyDao.findAllActiveSignByPatient(patient);
        for(SignFamily signFamily: signFamilys){
        for (SignFamily signFamily : signFamilys) {
            AdminTeam adminTeam = null;
            Doctor doctor = null;
            if(signFamily.getAdminTeamId()!=null){
            if (signFamily.getAdminTeamId() != null) {
                adminTeam = adminTeamService.getTeam(signFamily.getAdminTeamId());
                doctor = doctorService.findDoctorByCode(adminTeam.getLeaderCode());
            }
            if(adminTeam==null)adminTeam = new AdminTeam();
            if(doctor==null)doctor = new Doctor();
            if (adminTeam == null) adminTeam = new AdminTeam();
            if (doctor == null) doctor = new Doctor();
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("hospitalName",signFamily.getHospitalName());
            jsonObject.put("hospital",signFamily.getHospital());
            jsonObject.put("code",signFamily.getCode());
            jsonObject.put("teamCode",signFamily.getTeamCode());
            jsonObject.put("begin",signFamily.getBegin());
            jsonObject.put("end",signFamily.getEnd());
            jsonObject.put("status",signFamily.getStatus());
            jsonObject.put("leader",adminTeam.getLeaderCode());
            jsonObject.put("leaderName",doctor.getName());
            jsonObject.put("doctor",signFamily.getDoctor());
            jsonObject.put("doctorHealth",signFamily.getDoctorHealth());
            jsonObject.put("doctorName",signFamily.getDoctorName());
            jsonObject.put("doctorHealthName",signFamily.getDoctorHealthName());
            jsonObject.put("expensesStatus",StringUtils.isNotBlank(signFamily.getExpensesStatus())?signFamily.getExpensesStatus():"1");
            jsonObject.put("applyDate",signFamily.getApplyDate());
            jsonObject.put("createTime",signFamily.getCzrq());
            jsonObject.put("type",signFamily.getType());
            jsonObject.put("typeName",signFamily.getType()==1?"三师签约":"家庭签约");
            jsonObject.put("hospitalName", signFamily.getHospitalName());
            jsonObject.put("hospital", signFamily.getHospital());
            jsonObject.put("code", signFamily.getCode());
            jsonObject.put("teamCode", signFamily.getTeamCode());
            jsonObject.put("begin", signFamily.getBegin());
            jsonObject.put("end", signFamily.getEnd());
            jsonObject.put("status", signFamily.getStatus());
            jsonObject.put("leader", adminTeam.getLeaderCode());
            jsonObject.put("leaderName", doctor.getName());
            jsonObject.put("doctor", signFamily.getDoctor());
            jsonObject.put("doctorHealth", signFamily.getDoctorHealth());
            jsonObject.put("doctorName", signFamily.getDoctorName());
            jsonObject.put("doctorHealthName", signFamily.getDoctorHealthName());
            jsonObject.put("expensesStatus", StringUtils.isNotBlank(signFamily.getExpensesStatus()) ? signFamily.getExpensesStatus() : "1");
            jsonObject.put("applyDate", signFamily.getApplyDate());
            jsonObject.put("createTime", signFamily.getCzrq());
            jsonObject.put("type", signFamily.getType());
            jsonObject.put("typeName", signFamily.getType() == 1 ? "三师签约" : "家庭签约");
            String statusName = "";
            switch (jsonObject.getInt("status")){
                case -4 : statusName = "已到期";break;
                case -3 : statusName ="已解约";break;
                case 0 : statusName ="待签约";break;
                case 1 : if(jsonObject.getInt("expensesStatus")==1){statusName ="已签约";}else{statusName ="待缴费";} break;
                case 2 : statusName ="患者申请取消签约";break;
                case 3 : statusName ="医生申请取消签约";break;
            switch (jsonObject.getInt("status")) {
                case -4:
                    statusName = "已到期";
                    break;
                case -3:
                    statusName = "已解约";
                    break;
                case 0:
                    statusName = "待签约";
                    break;
                case 1:
                    if (jsonObject.getInt("expensesStatus") == 1) {
                        statusName = "已签约";
                    } else {
                        statusName = "待缴费";
                    }
                    break;
                case 2:
                    statusName = "患者申请取消签约";
                    break;
                case 3:
                    statusName = "医生申请取消签约";
                    break;
            }
            jsonObject.put("statusName",statusName);
            jsonArray.put(jsonObject);
            jsonObject.put("statusName", statusName);
            jsonArray.add(jsonObject);
        }
        Collections.sort(jsonArray, new Comparator<JSONObject>() {
            @Override
            public int compare(JSONObject o1, JSONObject o2) {
                Date o1Date = (Date) o1.get("createTime");
                Date o2Date = (Date) o2.get("createTime");
                if (o1Date.before(o2Date)) {
                    return 1;
                } else if (o1Date.after(o2Date)) {
                    return -1;
                }
                return 0;
            }
        });
        return jsonArray;
    }
    /**
     * 已过时,启用getSignInfoOrRenewInfo
     *
     * @param teamCode
     * @return
     */
    public JSONObject getSignInfo(String teamCode,String code){
        List<SignFamily> signFamilys = signFamilyDao.findByTeamCodeIsValid(teamCode,code);
        SignFamily signFamily =null;
        if(signFamilys==null||signFamilys.size()==0){
    public JSONObject getSignInfo(String teamCode, String code) {
        List<SignFamily> signFamilys = signFamilyDao.findByTeamCodeIsValid(teamCode, code);
        SignFamily signFamily = null;
        if (signFamilys == null || signFamilys.size() == 0) {
            throw new RuntimeException("找不到签约关系!");
        }else{
        } else {
            signFamily = signFamilys.get(0);
            ;          }
            ;
        }
        Patient p = patientService.findByCode(signFamily.getPatient());
        String patient = p.getCode();
        JSONObject resultObject = new JSONObject();
@ -489,20 +537,20 @@ public class SignWebService extends BaseService {
        //查找到团队领导
        Doctor leader = doctorService.findDoctorByCode(adminTeam.getLeaderCode());
        JSONObject leaderObj = this.doctorParse(leader);
        resultObject.put("leader",leaderObj);
        resultObject.put("leader", leaderObj);
        String doctorHealth = signFamily.getDoctorHealth();
        String doctor = signFamily.getDoctor();
        //签约团队的健管师
        if(StringUtils.isNotBlank(doctorHealth)){
        if (StringUtils.isNotBlank(doctorHealth)) {
            Doctor health = doctorService.findDoctorByCode(doctorHealth);
            JSONObject healthObj = this.doctorParse(health);
            resultObject.put("doctorHealth",healthObj);
            resultObject.put("doctorHealth", healthObj);
        }
        //签约团队的全科医生
        if(StringUtils.isNotBlank(doctor)){
        if (StringUtils.isNotBlank(doctor)) {
            Doctor qk = doctorService.findDoctorByCode(doctor);
            JSONObject qkObj = this.doctorParse(qk);
            resultObject.put("doctor",qkObj);
            resultObject.put("doctor", qkObj);
        }
        Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"));
        int year = calendar.get(Calendar.YEAR);
@ -519,31 +567,31 @@ public class SignWebService extends BaseService {
        StringBuffer countSql = new StringBuffer();
        countSql.append(consult_sql).append(" union all ").append(followup_sql).append(" union all ").append(reservation_sql).append(" union all ").append(article_sql).append(" union all ").append(guidance_sql);
        List<Map<String, Object>> resultCount  = jdbcTemplate.queryForList(countSql.toString(), new Object[]{doctorHealth, patient, year,doctorHealth,doctor,patient,year,doctorHealth,doctor,patient,year,doctorHealth,doctor,patient,year,doctorHealth,doctor,patient,year});
        resultObject.put("consultNum",resultCount.get(0).get("count"));
        resultObject.put("followupNum",resultCount.get(1).get("count"));
        resultObject.put("reservationNum",resultCount.get(2).get("count"));
        resultObject.put("articleNum",resultCount.get(3).get("count"));
        resultObject.put("guidanceNum",resultCount.get(4).get("count"));
        List<Map<String, Object>> resultCount = jdbcTemplate.queryForList(countSql.toString(), new Object[]{doctorHealth, patient, year, doctorHealth, doctor, patient, year, doctorHealth, doctor, patient, year, doctorHealth, doctor, patient, year, doctorHealth, doctor, patient, year});
        resultObject.put("consultNum", resultCount.get(0).get("count"));
        resultObject.put("followupNum", resultCount.get(1).get("count"));
        resultObject.put("reservationNum", resultCount.get(2).get("count"));
        resultObject.put("articleNum", resultCount.get(3).get("count"));
        resultObject.put("guidanceNum", resultCount.get(4).get("count"));
        return resultObject;
    }
    private JSONObject doctorParse(Doctor doctor){
    private JSONObject doctorParse(Doctor doctor) {
        JSONObject object = new JSONObject();
        object.put("code",doctor.getCode());
        object.put("jobName",doctor.getJobName());
        object.put("level",doctor.getLevel());
        object.put("name",doctor.getName());
        object.put("evaluateScore",doctor.getEvaluateScore());
        object.put("photo",doctor.getPhoto());
        object.put("sex",doctor.getSex());
        object.put("hospitalName",doctor.getHospitalName());
        object.put("code", doctor.getCode());
        object.put("jobName", doctor.getJobName());
        object.put("level", doctor.getLevel());
        object.put("name", doctor.getName());
        object.put("evaluateScore", doctor.getEvaluateScore());
        object.put("photo", doctor.getPhoto());
        object.put("sex", doctor.getSex());
        object.put("hospitalName", doctor.getHospitalName());
        return object;
    }
    public JSONObject  getSignServiceInfo(String teamCode){
    public JSONObject getSignServiceInfo(String teamCode) {
        SignFamily signFamily = signFamilyDao.findByTeamCode(teamCode);
        if(signFamily==null){
        if (signFamily == null) {
            throw new RuntimeException("找不到签约关系!");
        }
        Patient p = patientService.findByCode(signFamily.getPatient());
@ -566,28 +614,38 @@ public class SignWebService extends BaseService {
        //咨询量
        List<Map<String, Object>> consultResult = jdbcTemplate.queryForList(consult_sql, new Object[]{doctorHealth, patient, year});
        //随访量
        List<Map<String, Object>> followupResult = jdbcTemplate.queryForList(followup_sql, new Object[]{doctorHealth,doctor, patient, year});
        List<Map<String, Object>> followupResult = jdbcTemplate.queryForList(followup_sql, new Object[]{doctorHealth, doctor, patient, year});
        //待预约量
        List<Map<String, Object>> reservationResult = jdbcTemplate.queryForList(reservation_sql, new Object[]{doctorHealth,doctor, patient, year});
        List<Map<String, Object>> reservationResult = jdbcTemplate.queryForList(reservation_sql, new Object[]{doctorHealth, doctor, patient, year});
        //健康教育量
        List<Map<String, Object>> articleResult = jdbcTemplate.queryForList(article_sql, new Object[]{doctorHealth,doctor, patient, year});
        List<Map<String, Object>> articleResult = jdbcTemplate.queryForList(article_sql, new Object[]{doctorHealth, doctor, patient, year});
        //健康指导量
        List<Map<String, Object>> guidanceResult = jdbcTemplate.queryForList(guidance_sql, new Object[]{doctorHealth,doctor, patient, year});
        List<Map<String, Object>> guidanceResult = jdbcTemplate.queryForList(guidance_sql, new Object[]{doctorHealth, doctor, patient, year});
        List<JSONObject> objects = new ArrayList<>();
        int amount  = consultResult.size()+followupResult.size()+reservationResult.size()+articleResult.size()+guidanceResult.size();
        int amount = consultResult.size() + followupResult.size() + reservationResult.size() + articleResult.size() + guidanceResult.size();
        int activeAmount = 0;
        objects.addAll(convertResult(consultResult));
        objects.addAll(convertResult(followupResult));
        objects.addAll(convertResult(reservationResult));
        objects.addAll(convertResult(articleResult));
        objects.addAll(convertResult(guidanceResult));
        for(JSONObject object: objects){
            switch (object.get("type").toString()){
                case "1":activeAmount += ("1".equals(object.get("status"))?1:0);break;
                case "2":activeAmount += ("1".equals(object.get("status"))?1:0);break;
                case "3":activeAmount += ("1".equals(object.get("status"))?1:0);break;
                case "4":activeAmount += ("1".equals(object.get("is_read"))?0:1);break;
                case "5":activeAmount += ("1".equals(object.get("read_status"))?1:0);break;
        for (JSONObject object : objects) {
            switch (object.get("type").toString()) {
                case "1":
                    activeAmount += ("1".equals(object.get("status")) ? 1 : 0);
                    break;
                case "2":
                    activeAmount += ("1".equals(object.get("status")) ? 1 : 0);
                    break;
                case "3":
                    activeAmount += ("1".equals(object.get("status")) ? 1 : 0);
                    break;
                case "4":
                    activeAmount += ("1".equals(object.get("is_read")) ? 0 : 1);
                    break;
                case "5":
                    activeAmount += ("1".equals(object.get("read_status")) ? 1 : 0);
                    break;
            }
        }
        objects.sort(new Comparator<JSONObject>() {
@ -596,30 +654,40 @@ public class SignWebService extends BaseService {
                Date begin = DateUtil.strToDateLong(o1.get("czrq").toString());
                Date end = DateUtil.strToDateLong(o2.get("czrq").toString());
                if(begin!=null&&end !=null&&begin.before(end)){
                if (begin != null && end != null && begin.before(end)) {
                    return 1;
                }else{
                } else {
                    return -1;
                }
            }
        });
        JSONObject object = new JSONObject();
        object.put("list",objects);
        object.put("amount",amount);
        object.put("activeAmount",activeAmount);
        object.put("list", objects);
        object.put("amount", amount);
        object.put("activeAmount", activeAmount);
        return object;
    }
    private List<JSONObject> convertResult(List<Map<String, Object>> dataList){
    private List<JSONObject> convertResult(List<Map<String, Object>> dataList) {
        List<JSONObject> objects = new ArrayList<>();
        JSONObject resultObject = new JSONObject();
        for(Map<String, Object> map: dataList){
            switch (map.get("type").toString()){
                case "1":resultObject = convertConsult(map);break;
                case "2":resultObject = convertFollowup(map);break;
                case "3":resultObject = convertReservation(map);break;
                case "4":resultObject = convertArticle(map);break;
                case "5":resultObject = convertGuidance(map);break;
        for (Map<String, Object> map : dataList) {
            switch (map.get("type").toString()) {
                case "1":
                    resultObject = convertConsult(map);
                    break;
                case "2":
                    resultObject = convertFollowup(map);
                    break;
                case "3":
                    resultObject = convertReservation(map);
                    break;
                case "4":
                    resultObject = convertArticle(map);
                    break;
                case "5":
                    resultObject = convertGuidance(map);
                    break;
            }
            objects.add(resultObject);
        }
@ -628,107 +696,108 @@ public class SignWebService extends BaseService {
    /**
     * 返回值装换
     *
     * @param map
     * @return
     */
    private JSONObject convertConsult(Map<String, Object> map){
    private JSONObject convertConsult(Map<String, Object> map) {
        JSONObject resultObject = new JSONObject();
        for(String key :map.keySet()){
            String value = map.get(key)+"";
            if("status".equals(key)){
                if("1".equals(value)){
                    resultObject.put("status_name","已完成");
                }else{
                    resultObject.put("status_name","进行中");
        for (String key : map.keySet()) {
            String value = map.get(key) + "";
            if ("status".equals(key)) {
                if ("1".equals(value)) {
                    resultObject.put("status_name", "已完成");
                } else {
                    resultObject.put("status_name", "进行中");
                }
            }
            resultObject.put(key,value);
            resultObject.put(key, value);
        }
        return resultObject;
    }
    private JSONObject convertFollowup(Map<String, Object> map){
    private JSONObject convertFollowup(Map<String, Object> map) {
        JSONObject resultObject = new JSONObject();
        if(map.get("followup_manager_status")==null){
            map.put("followup_manager_status","0");
        if (map.get("followup_manager_status") == null) {
            map.put("followup_manager_status", "0");
        }
        if(map.get("followup_class")==null){
            map.put("followup_class","0");
        if (map.get("followup_class") == null) {
            map.put("followup_class", "0");
        }
        for(String key :map.keySet()){
            String value = map.get(key)+"";
            if("followup_type".equals(key)){
                String followupTypeName = systemDictService.getDictValue("FOLLOWUP_WAY_DICT", map.get(key)+"");
                resultObject.put("followup_type_name",followupTypeName);
        for (String key : map.keySet()) {
            String value = map.get(key) + "";
            if ("followup_type".equals(key)) {
                String followupTypeName = systemDictService.getDictValue("FOLLOWUP_WAY_DICT", map.get(key) + "");
                resultObject.put("followup_type_name", followupTypeName);
            }
            if("followup_class".equals(key)){
                String followupClassName = systemDictService.getDictValue("FOLLOWUP_CLASS_DICT",map.get(key)+"");
                resultObject.put("followup_class_name",followupClassName);
            if ("followup_class".equals(key)) {
                String followupClassName = systemDictService.getDictValue("FOLLOWUP_CLASS_DICT", map.get(key) + "");
                resultObject.put("followup_class_name", followupClassName);
            }
            if("followup_manager_status".equals(key)){
                String followupManagerStatusName = systemDictService.getDictValue("FOLLOWUP_MANAGER_STATUS",map.get(key)+"");
                resultObject.put("followup_manager_status_name",followupManagerStatusName);
            if ("followup_manager_status".equals(key)) {
                String followupManagerStatusName = systemDictService.getDictValue("FOLLOWUP_MANAGER_STATUS", map.get(key) + "");
                resultObject.put("followup_manager_status_name", followupManagerStatusName);
            }
            if("status".equals(key)){
                if("1".equals(value)){
                    resultObject.put("status_name","已完成");
                }else if("2".equals(value)){
                    resultObject.put("status_name","未完成");
                }else if("3".equals(value)){
                    resultObject.put("status_name","进行中");
                }else{
                    resultObject.put("status_name","取消");
            if ("status".equals(key)) {
                if ("1".equals(value)) {
                    resultObject.put("status_name", "已完成");
                } else if ("2".equals(value)) {
                    resultObject.put("status_name", "未完成");
                } else if ("3".equals(value)) {
                    resultObject.put("status_name", "进行中");
                } else {
                    resultObject.put("status_name", "取消");
                }
            }
            resultObject.put(key,map.get(key)+"");
            resultObject.put(key, map.get(key) + "");
        }
        return resultObject;
    }
    private JSONObject convertReservation(Map<String, Object> map){
    private JSONObject convertReservation(Map<String, Object> map) {
        JSONObject resultObject = new JSONObject();
        for(String key :map.keySet()){
            String value = map.get(key)+"";
            if("status".equals(key)){
                if("1".equals(value)){
                    resultObject.put("status_name","已完成");
                }else{
                    resultObject.put("status_name","已取消");
        for (String key : map.keySet()) {
            String value = map.get(key) + "";
            if ("status".equals(key)) {
                if ("1".equals(value)) {
                    resultObject.put("status_name", "已完成");
                } else {
                    resultObject.put("status_name", "已取消");
                }
            }
            resultObject.put(key,value);
            resultObject.put(key, value);
        }
        return resultObject;
    }
    private JSONObject convertArticle(Map<String, Object> map){
    private JSONObject convertArticle(Map<String, Object> map) {
        JSONObject resultObject = new JSONObject();
        for(String key :map.keySet()){
            String value = map.get(key)+"";
            if("is_read".equals(key)){
                if("1".equals(value)){
                    resultObject.put("status_name","未读");
                }else{
                    resultObject.put("status_name","已读");
        for (String key : map.keySet()) {
            String value = map.get(key) + "";
            if ("is_read".equals(key)) {
                if ("1".equals(value)) {
                    resultObject.put("status_name", "未读");
                } else {
                    resultObject.put("status_name", "已读");
                }
            }
            resultObject.put(key,value);
            resultObject.put(key, value);
        }
        return resultObject;
    }
    private JSONObject convertGuidance(Map<String, Object> map){
    private JSONObject convertGuidance(Map<String, Object> map) {
        JSONObject resultObject = new JSONObject();
        for(String key :map.keySet()){
            String value = map.get(key)+"";
            if("read_status".equals(key)){
                if("1".equals(value)){
                    resultObject.put("status_name","已读");
                }else{
                    resultObject.put("status_name","未读");
        for (String key : map.keySet()) {
            String value = map.get(key) + "";
            if ("read_status".equals(key)) {
                if ("1".equals(value)) {
                    resultObject.put("status_name", "已读");
                } else {
                    resultObject.put("status_name", "未读");
                }
            }
            resultObject.put(key,value);
            resultObject.put(key, value);
        }
        return resultObject;
    }
@ -841,50 +910,51 @@ public class SignWebService extends BaseService {
    /**
     * 批量提醒用户
     *
     * @param access_token
     * @param doctor
     * @return
     * @throws Exception
     */
    public int sendRenewToPatients(String access_token,String doctor) throws Exception{
    public int sendRenewToPatients(String access_token, String doctor) throws Exception {
        String sql = "SELECT p.name,p.openid,t.doctor_name doctorName,p.code,p.mobile FROM wlyy_sign_family t ,wlyy_patient p " +
                "WHERE t.patient = p.code AND t.doctor = ? AND t.status >=0 AND t.expenses_status ='1' AND " +
                "NOT EXISTS" +
                "(SELECT 1 FROM wlyy_sign_family_renew a WHERE a.patient =t.patient)  ";
        List<Map<String,Object>> signFamilies = jdbcTemplate.queryForList(sql,new Object[]{doctor});
        List<Map<String, Object>> signFamilies = jdbcTemplate.queryForList(sql, new Object[]{doctor});
        if(signFamilies!=null&&signFamilies.size()>0){
            for(Map<String,Object> signFamily : signFamilies){
                String openid = (String)signFamily.get("openid");
                String name = (String)signFamily.get("name");
                String doctorName =(String)signFamily.get("doctorName");
        if (signFamilies != null && signFamilies.size() > 0) {
            for (Map<String, Object> signFamily : signFamilies) {
                String openid = (String) signFamily.get("openid");
                String name = (String) signFamily.get("name");
                String doctorName = (String) signFamily.get("doctorName");
                JSONObject json = new JSONObject();
                json.put("keyword1", "续签家庭医生");
                json.put("keyword2", DateUtil.dateToStr(new Date(), "yyyy-MM-dd"));
                json.put("remark","提醒医生 :"+doctorName+"\n"
                        +"我们将继续为您提供优质的健康服务。");
                if(StringUtils.isNotBlank(openid)){
                    json.put("first",name+",您好!\n" +
                json.put("remark", "提醒医生 :" + doctorName + "\n"
                        + "我们将继续为您提供优质的健康服务。");
                if (StringUtils.isNotBlank(openid)) {
                    json.put("first", name + ",您好!\n" +
                            "您的家庭医生签约将于7月31日到期,为了能继续给您提供健康服务,诚邀您续签家庭医生。");
                    PushMsgTask.getInstance().putWxMsg(access_token, 16, openid, name, json);
                }else{
                } else {
                    //如果自己没有绑定,则发给家人
                    String code = (String)signFamily.get("code");
                    String code = (String) signFamily.get("code");
                    JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(code);
                    Patient member = (Patient)j.get("member");
                    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"+
                                name+",您好!\n" +
                    if (StringUtils.isNotBlank(member.getOpenid())) {
                        json.put("first", weiXinOpenIdUtils.getTitleMes(p, (int) j.get("relation"), member.getName()) + "\n" +
                                name + ",您好!\n" +
                                "您的家庭医生签约将于7月31日到期,为了能继续给您提供健康服务,诚邀您续签家庭医生。");
                        PushMsgTask.getInstance().putWxMsg(access_token, 16, member.getOpenid(), member.getName(), json);
                    }else{
                    } else {
                        //发送短信
                        String mobile = (String)signFamily.get("mobile");
                        if(StringUtils.isNotBlank(mobile)){
                            SMSService.sendMsg(mobile,name+"您好!您的家庭医生将于7月31日到期,为了继续给您提供健康服务,请关注“厦门i健康”公众号,回复“续签”,进行家庭医生线上续签。");
                        String mobile = (String) signFamily.get("mobile");
                        if (StringUtils.isNotBlank(mobile)) {
                            SMSService.sendMsg(mobile, name + "您好!您的家庭医生将于7月31日到期,为了继续给您提供健康服务,请关注“厦门i健康”公众号,回复“续签”,进行家庭医生线上续签。");
                        }
                    }
                }
@ -898,33 +968,34 @@ public class SignWebService extends BaseService {
    /**
     * 同意或拒绝签约签约
     *
     * @param access_token
     * @param dotorCode
     * @param state 1成功 0拒绝
     * @param state        1成功 0拒绝
     * @return
     * @throws Exception
     */
    public int agreeRenew(String access_token,String dotorCode,String patientCode,String state,Long mesId,String signYear) throws Exception{
    public int agreeRenew(String access_token, String dotorCode, String patientCode, String state, Long mesId, String signYear) throws Exception {
        List<SignFamilyRenew> renews =  signFamilyRenewDao.findByDoctorAndPatientStatus0(dotorCode,patientCode,signYear);
        List<SignFamilyRenew> renews = signFamilyRenewDao.findByDoctorAndPatientStatus0(dotorCode, patientCode, signYear);
        if(renews==null||renews.size()==0){
            renews =  signFamilyRenewDao.findByDoctorHealthAndPatientStatus0(dotorCode,patientCode,signYear);
        if (renews == null || renews.size() == 0) {
            renews = signFamilyRenewDao.findByDoctorHealthAndPatientStatus0(dotorCode, patientCode, signYear);
        }
        if(renews!=null&&renews.size()>0){
            for(SignFamilyRenew renew : renews){
                if(StringUtils.isNotBlank(state)){
                    if ("0".equals(state)){
        if (renews != null && renews.size() > 0) {
            for (SignFamilyRenew renew : renews) {
                if (StringUtils.isNotBlank(state)) {
                    if ("0".equals(state)) {
                        renew.setStatus(-2);
                    }else if("1".equals(state)){
                    } else if ("1".equals(state)) {
                        renew.setStatus(1);
                    }
                }
                renew.setApplyDate(new Date());
                signFamilyRenewDao.save(renew);
                if(mesId!=null&&mesId>0){
                if (mesId != null && mesId > 0) {
                    Message mes = messageDao.findOne(mesId);
                    mes.setRead(0);//设置已读
                    mes.setOver("0");//设置消息操作结束
@ -934,50 +1005,50 @@ public class SignWebService extends BaseService {
                //发送微信模板消息
                JSONObject data = new JSONObject();
                data.put("doctorName",renew.getDoctorName());
                data.put("date",DateUtil.dateToStr(new Date(), "yyyy-MM-dd"));
                data.put("content","家庭医生续签");
                data.put("doctor",dotorCode);
                data.put("toUser",patientCode);
                data.put("toName",renew.getName());
                data.put("doctorName", renew.getDoctorName());
                data.put("date", DateUtil.dateToStr(new Date(), "yyyy-MM-dd"));
                data.put("content", "家庭医生续签");
                data.put("doctor", dotorCode);
                data.put("toUser", patientCode);
                data.put("toName", renew.getName());
                Patient patient = patientService.findByCode(renew.getPatient());
                if(patient!=null && StringUtils.isNotBlank(patient.getOpenid())){
                if (patient != null && StringUtils.isNotBlank(patient.getOpenid())) {
                    if ("0".equals(state)){
                        data.put("first",renew.getName()+",您好!\n"+
                    if ("0".equals(state)) {
                        data.put("first", renew.getName() + ",您好!\n" +
                                "您的家庭医生续签申请已被拒绝");
                        data.put("remark","您可在到期后选择其他医生进行签约。");
                        data.put("remark", "您可在到期后选择其他医生进行签约。");
                        PushMsgTask.getInstance().putWxMsg(access_token, 2, patient.getOpenid(), patient.getName(), data);
                    }else if("1".equals(state)){
                        data.put("first",renew.getName()+",您好!\n"+
                    } else if ("1".equals(state)) {
                        data.put("first", renew.getName() + ",您好!\n" +
                                "您的家庭医生续签申请已通过");
                        data.put("remark","待自动扣费成功后,家庭医生将续签成功。");
                        data.put("remark", "待自动扣费成功后,家庭医生将续签成功。");
                        PushMsgTask.getInstance().putWxMsg(access_token, 1, patient.getOpenid(), patient.getName(), data);
                    }
                }else{
                } else {
                    //如果自己没有绑定,则发给家人
                    JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(patient.getCode());
                    Patient member = (Patient)j.get("member");
                    if(StringUtils.isNotBlank(member.getOpenid())){
                    Patient member = (Patient) j.get("member");
                    if (StringUtils.isNotBlank(member.getOpenid())) {
                        if ("0".equals(state)){
                            data.put("first",weiXinOpenIdUtils.getTitleMes(patient,(int)j.get("relation"),member.getName())+"\n"+
                                    patient.getName()+",您好!\n" +
                        if ("0".equals(state)) {
                            data.put("first", weiXinOpenIdUtils.getTitleMes(patient, (int) j.get("relation"), member.getName()) + "\n" +
                                    patient.getName() + ",您好!\n" +
                                    "您的家庭医生续签申请已被拒绝");
                            data.put("remark","您可在到期后选择其他医生进行签约。");
                            data.put("remark", "您可在到期后选择其他医生进行签约。");
                            PushMsgTask.getInstance().putWxMsg(access_token, 2, member.getOpenid(), member.getName(), data);
                        }else if("1".equals(state)){
                            data.put("first",weiXinOpenIdUtils.getTitleMes(patient,(int)j.get("relation"),member.getName())+"\n"+
                                    patient.getName()+",您好!\n" +
                        } else if ("1".equals(state)) {
                            data.put("first", weiXinOpenIdUtils.getTitleMes(patient, (int) j.get("relation"), member.getName()) + "\n" +
                                    patient.getName() + ",您好!\n" +
                                    "您的家庭医生续签申请已通过");
                            data.put("remark","待自动扣费成功后,家庭医生将续签成功。");
                            data.put("remark", "待自动扣费成功后,家庭医生将续签成功。");
                            PushMsgTask.getInstance().putWxMsg(access_token, 1, member.getOpenid(), member.getName(), data);
                        }
                    }
                }
            }
        }else{
        } else {
            return 0;
        }
        return 1;
@ -985,33 +1056,34 @@ public class SignWebService extends BaseService {
    /**
     * 同意或拒绝签约签约(七月份的流程)
     *
     * @param access_token
     * @param dotorCode
     * @param state 1成功 0拒绝
     * @param state        1成功 0拒绝
     * @return
     * @throws Exception
     */
    public int agreeRenewOverDue (String access_token,String dotorCode,String patientCode,String state,Long mesId,String signYear) throws Exception{
    public int agreeRenewOverDue(String access_token, String dotorCode, String patientCode, String state, Long mesId, String signYear) throws Exception {
        List<SignFamily> renews =  signFamilyDao.findByDoctorAndPatientOverDue(dotorCode,patientCode,signYear);
        List<SignFamily> renews = signFamilyDao.findByDoctorAndPatientOverDue(dotorCode, patientCode, signYear);
        if(renews==null||renews.size()==0){
            renews =  signFamilyDao.findByDoctorHealthAndPatient(dotorCode,patientCode,signYear);
        if (renews == null || renews.size() == 0) {
            renews = signFamilyDao.findByDoctorHealthAndPatient(dotorCode, patientCode, signYear);
        }
        if(renews!=null&&renews.size()>0){
            for(SignFamily renew : renews){
                if(StringUtils.isNotBlank(state)){
                    if ("0".equals(state)){
        if (renews != null && renews.size() > 0) {
            for (SignFamily renew : renews) {
                if (StringUtils.isNotBlank(state)) {
                    if ("0".equals(state)) {
                        renew.setStatus(-2);
                    }else if("1".equals(state)){
                    } else if ("1".equals(state)) {
                        renew.setStatus(1);
                    }
                }
                renew.setApplyDate(new Date());
                signFamilyDao.save(renew);
                if(mesId!=null&&mesId>0){
                if (mesId != null && mesId > 0) {
                    Message mes = messageDao.findOne(mesId);
                    mes.setRead(0);//设置已读
                    mes.setOver("0");//设置消息操作结束
@ -1021,50 +1093,50 @@ public class SignWebService extends BaseService {
                //发送微信模板消息
                JSONObject data = new JSONObject();
                data.put("doctorName",renew.getDoctorName());
                data.put("date",DateUtil.dateToStr(new Date(), "yyyy-MM-dd"));
                data.put("content","家庭医生续签");
                data.put("doctor",dotorCode);
                data.put("toUser",patientCode);
                data.put("toName",renew.getName());
                data.put("doctorName", renew.getDoctorName());
                data.put("date", DateUtil.dateToStr(new Date(), "yyyy-MM-dd"));
                data.put("content", "家庭医生续签");
                data.put("doctor", dotorCode);
                data.put("toUser", patientCode);
                data.put("toName", renew.getName());
                Patient patient = patientService.findByCode(renew.getPatient());
                if(patient!=null && StringUtils.isNotBlank(patient.getOpenid())){
                if (patient != null && StringUtils.isNotBlank(patient.getOpenid())) {
                    if ("0".equals(state)){
                        data.put("first",renew.getName()+",您好!\n"+
                    if ("0".equals(state)) {
                        data.put("first", renew.getName() + ",您好!\n" +
                                "您的家庭医生续签申请已被拒绝");
                        data.put("remark","您可在到期后选择其他医生进行签约。");
                        data.put("remark", "您可在到期后选择其他医生进行签约。");
                        PushMsgTask.getInstance().putWxMsg(access_token, 2, patient.getOpenid(), patient.getName(), data);
                    }else if("1".equals(state)){
                        data.put("first",renew.getName()+",您好!\n"+
                    } else if ("1".equals(state)) {
                        data.put("first", renew.getName() + ",您好!\n" +
                                "您的家庭医生续签申请已通过");
                        data.put("remark","待自动扣费成功后,家庭医生将续签成功。");
                        data.put("remark", "待自动扣费成功后,家庭医生将续签成功。");
                        PushMsgTask.getInstance().putWxMsg(access_token, 1, patient.getOpenid(), patient.getName(), data);
                    }
                }else{
                } else {
                    //如果自己没有绑定,则发给家人
                    JSONObject j = weiXinOpenIdUtils.getFamilyOpenId(patient.getCode());
                    Patient member = (Patient)j.get("member");
                    if(StringUtils.isNotBlank(member.getOpenid())){
                    Patient member = (Patient) j.get("member");
                    if (StringUtils.isNotBlank(member.getOpenid())) {
                        if ("0".equals(state)){
                            data.put("first",weiXinOpenIdUtils.getTitleMes(patient,(int)j.get("relation"),member.getName())+"\n"+
                                    patient.getName()+",您好!\n" +
                        if ("0".equals(state)) {
                            data.put("first", weiXinOpenIdUtils.getTitleMes(patient, (int) j.get("relation"), member.getName()) + "\n" +
                                    patient.getName() + ",您好!\n" +
                                    "您的家庭医生续签申请已被拒绝");
                            data.put("remark","您可在到期后选择其他医生进行签约。");
                            data.put("remark", "您可在到期后选择其他医生进行签约。");
                            PushMsgTask.getInstance().putWxMsg(access_token, 2, member.getOpenid(), member.getName(), data);
                        }else if("1".equals(state)){
                            data.put("first",weiXinOpenIdUtils.getTitleMes(patient,(int)j.get("relation"),member.getName())+"\n"+
                                    patient.getName()+",您好!\n" +
                        } else if ("1".equals(state)) {
                            data.put("first", weiXinOpenIdUtils.getTitleMes(patient, (int) j.get("relation"), member.getName()) + "\n" +
                                    patient.getName() + ",您好!\n" +
                                    "您的家庭医生续签申请已通过");
                            data.put("remark","待自动扣费成功后,家庭医生将续签成功。");
                            data.put("remark", "待自动扣费成功后,家庭医生将续签成功。");
                            PushMsgTask.getInstance().putWxMsg(access_token, 1, member.getOpenid(), member.getName(), data);
                        }
                    }
                }
            }
        }else{
        } else {
            return 0;
        }
        return 1;
@ -1072,83 +1144,86 @@ public class SignWebService extends BaseService {
    /**
     * 获取年度列表
     *
     * @return
     */
    public JSONObject getRenewYearCount(Long teamCode){
    public JSONObject getRenewYearCount(Long teamCode) {
        StringBuffer sql = new StringBuffer("SELECT t.sign_year labelCode,t.sign_year labelName,COUNT(1) amount " +
                "FROM  wlyy_sign_family t WHERE t.admin_team_code ="+teamCode+"  AND t.status=-4 AND sign_year IS NOT NULL GROUP BY t.sign_year DESC");
        List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql.toString());
                "FROM  wlyy_sign_family t WHERE t.admin_team_code =" + teamCode + "  AND t.status=-4 AND sign_year IS NOT NULL GROUP BY t.sign_year DESC");
        List<Map<String, Object>> rs = jdbcTemplate.queryForList(sql.toString());
        JSONObject json = new JSONObject();
        json.put("result",rs);
        json.put("result", rs);
        return json;
    }
    /**
     * 获取用户信息
     *
     * @return
     */
    public JSONObject getOverDuePatients(String year,Long teamCode,Integer page,Integer pageSize){
    public JSONObject getOverDuePatients(String year, Long teamCode, Integer page, Integer pageSize) {
        StringBuffer sql = new StringBuffer("SELECT IFNULL(year( from_days( datediff( now(), p.birthday))),'未知') age," +
                "t.patient code,t.idcard,t.name,t.mobile,t.openid," +
                "t.ssc,t.type signType,p.sex ,t.expenses_status expensesStatus " +
                " FROM wlyy_sign_family t " +
                " LEFT JOIN wlyy_patient p ON t.patient = p.code " +
                " WHERE t.admin_team_code ="+teamCode+" AND t.sign_year ='"+year+"' AND t.status =-4 LIMIT "+page*pageSize+","+pageSize);
        List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql.toString());
                " WHERE t.admin_team_code =" + teamCode + " AND t.sign_year ='" + year + "' AND t.status =-4 LIMIT " + page * pageSize + "," + pageSize);
        List<Map<String, Object>> rs = jdbcTemplate.queryForList(sql.toString());
        JSONObject json = new JSONObject();
        json.put("result",rs);
        json.put("result", rs);
        return json;
    }
    /**
     * 统计
     * 咨询量、获取待预约、获取健康教育、获取健康指导
     *
     * @param patient
     * @return
     */
    public JSONObject getSignCountInfoInYear(String patient){
    public JSONObject getSignCountInfoInYear(String patient) {
        JSONObject rs = new JSONObject();
        List<SignFamily> signFamilys = signFamilyDao.findByPatients(patient);
        if(signFamilys==null||signFamilys.size()==0){
        if (signFamilys == null || signFamilys.size() == 0) {
            throw new RuntimeException("找不到签约关系!");
        }
        SignFamily signFamily = signFamilys.get(0);
        String doctors_sql = "";
        if(StringUtils.isNotBlank(signFamily.getTeamCode())){
          doctors_sql = "SELECT t.member_code member,t.name FROM wlyy_doctor_team_member t WHERE t.team ='"+signFamily.getTeamCode()+"' AND t.type <>5";
        }else{
        if (StringUtils.isNotBlank(signFamily.getTeamCode())) {
            doctors_sql = "SELECT t.member_code member,t.name FROM wlyy_doctor_team_member t WHERE t.team ='" + signFamily.getTeamCode() + "' AND t.type <>5";
        } else {
            throw new RuntimeException("找不到团队关系!");
        }
        List<Map<String,Object>> doctors = jdbcTemplate.queryForList(doctors_sql);
        List<Map<String, Object>> doctors = jdbcTemplate.queryForList(doctors_sql);
        String doctorCodeSql = "";
        if (doctors!=null&&doctors.size()>0){
            for(int i=0;i<doctors.size();i++){
                Map<String,Object> doctor = doctors.get(i);
                if(i==0){
                    doctorCodeSql = "'"+(String)doctor.get("member")+"'";
                }else{
                    doctorCodeSql +=",'"+(String)doctor.get("member")+"'";
        if (doctors != null && doctors.size() > 0) {
            for (int i = 0; i < doctors.size(); i++) {
                Map<String, Object> doctor = doctors.get(i);
                if (i == 0) {
                    doctorCodeSql = "'" + (String) doctor.get("member") + "'";
                } else {
                    doctorCodeSql += ",'" + (String) doctor.get("member") + "'";
                }
            }
        }
        Calendar cal = Calendar.getInstance();
        int year = cal.get(Calendar.YEAR);
        //咨询量
        String consult_sql = "SELECT COUNT(1) AS consultCount,d.name doctorName FROM wlyy_consult_team t,wlyy_doctor d WHERE t.doctor = d.code AND t.patient ='"+patient+"' " +
                "AND t.czrq <='"+year+"-07-01' AND t.czrq >='"+(year-1)+"-07-01' GROUP BY t.doctor DESC ";
        String consult_sql = "SELECT COUNT(1) AS consultCount,d.name doctorName FROM wlyy_consult_team t,wlyy_doctor d WHERE t.doctor = d.code AND t.patient ='" + patient + "' " +
                "AND t.czrq <='" + year + "-07-01' AND t.czrq >='" + (year - 1) + "-07-01' GROUP BY t.doctor DESC ";
        //获取待预约
        String reservation_sql = "SELECT COUNT(1) AS reservationCount FROM wlyy_patient_reservation  w " +
                " WHERE w.doctor in("+doctorCodeSql+") AND w.patient ='"+patient+"'" +
                " AND w.czrq <='"+year+"-07-01' AND w.czrq >='"+(year-1)+"-07-01'  ";
                " WHERE w.doctor in(" + doctorCodeSql + ") AND w.patient ='" + patient + "'" +
                " AND w.czrq <='" + year + "-07-01' AND w.czrq >='" + (year - 1) + "-07-01'  ";
        //获取健康教育
        String article_sql = "SELECT COUNT(1) AS articleCount FROM wlyy_health_edu_article_patient  w,wlyy_health_edu_article w2 WHERE w.article = w2.code " +
                "AND  w.doctor IN("+doctorCodeSql+") AND w.patient ='"+patient+"' " +
                "AND w.czrq <='"+year+"-07-01' AND w.czrq >='"+(year-1)+"-07-01'  ";
                "AND  w.doctor IN(" + doctorCodeSql + ") AND w.patient ='" + patient + "' " +
                "AND w.czrq <='" + year + "-07-01' AND w.czrq >='" + (year - 1) + "-07-01'  ";
        //获取健康指导
        String guidance_sql = "SELECT COUNT(1) AS guidanceCount  FROM wlyy_patient_health_guidance  w " +
                "WHERE w.doctor IN("+doctorCodeSql+") and w.patient ='"+patient+"' AND w.czrq <='"+year+"-07-01' AND w.czrq >='"+(year-1)+"-07-01'  ";
                "WHERE w.doctor IN(" + doctorCodeSql + ") and w.patient ='" + patient + "' AND w.czrq <='" + year + "-07-01' AND w.czrq >='" + (year - 1) + "-07-01'  ";
        //咨询量
        List<Map<String, Object>> consultResult = jdbcTemplate.queryForList(consult_sql);
@ -1160,34 +1235,35 @@ public class SignWebService extends BaseService {
        List<Map<String, Object>> guidanceResult = jdbcTemplate.queryForList(guidance_sql);
        Long consultTotal = 0L;
        if(consultResult!=null&&consultResult.size()>0){
            for(Map<String,Object> map :consultResult){
                Long c = (Long)map.get("consultCount");
                consultTotal+=c;
        if (consultResult != null && consultResult.size() > 0) {
            for (Map<String, Object> map : consultResult) {
                Long c = (Long) map.get("consultCount");
                consultTotal += c;
            }
        }
        rs.put("consultTotal",consultTotal);
        rs.put("consultResult",consultResult);
        rs.put("doctors",doctors);
        rs.put("reservationResult",reservationResult);
        rs.put("articleResult",articleResult);
        rs.put("guidanceResult",guidanceResult);
        rs.put("consultTotal", consultTotal);
        rs.put("consultResult", consultResult);
        rs.put("doctors", doctors);
        rs.put("reservationResult", reservationResult);
        rs.put("articleResult", articleResult);
        rs.put("guidanceResult", guidanceResult);
        return rs;
    }
    /**
     * 提醒用户续签约
     *
     * @param access_token
     * @param patientCode
     * @param doctor
     * @return
     * @throws Exception
     */
    public int remainPatientRenew(String access_token,String patientCode,String doctor)throws Exception{
    public int remainPatientRenew(String access_token, String patientCode, String doctor) throws Exception {
        Doctor d = doctorDao.findByCode(doctor);
        if(doctor==null){
        if (doctor == null) {
            return -1;
        }
        //发送微信模板消息
@ -1195,33 +1271,33 @@ public class SignWebService extends BaseService {
        JSONObject json = new JSONObject();
        json.put("keyword1", "续签家庭医生");
        json.put("keyword2", DateUtil.dateToStr(new Date(), "yyyy-MM-dd"));
        json.put("remark","提醒医生 :"+d.getName()+"\n"
                +"我们将继续为您提供优质的健康服务。");
        json.put("remark", "提醒医生 :" + d.getName() + "\n"
                + "我们将继续为您提供优质的健康服务。");
        String openid = p.getOpenid();
        String name = p.getName();
        if(StringUtils.isNotBlank(openid)){
            json.put("first",name+",您好!\n" +
        if (StringUtils.isNotBlank(openid)) {
            json.put("first", name + ",您好!\n" +
                    "您的家庭医生签约将于7月31日到期,为了能继续给您提供健康服务,诚邀您续签家庭医生。");
            PushMsgTask.getInstance().putWxMsg(access_token, 16, openid, name, json);
            patientSetReminFlag(patientCode);
            return 1;
        }else{
        } else {
            //如果自己没有绑定,则发给家人
            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"+
                        name+",您好!\n" +
            Patient member = (Patient) j.get("member");
            if (StringUtils.isNotBlank(member.getOpenid())) {
                json.put("first", weiXinOpenIdUtils.getTitleMes(p, (int) j.get("relation"), member.getName()) + "\n" +
                        name + ",您好!\n" +
                        "您的家庭医生签约将于7月31日到期,为了能继续给您提供健康服务,诚邀您续签家庭医生。");
                PushMsgTask.getInstance().putWxMsg(access_token, 16, member.getOpenid(), member.getName(), json);
                patientSetReminFlag(patientCode);
                return 1;
            }else{
            } else {
                //发送短信
                String mobile = p.getMobile();
                if(StringUtils.isNotBlank(mobile)){
                    SMSService.sendMsg(mobile,name+"您好!您的家庭医生将于7月31日到期,为了继续给您提供健康服务,请关注“厦门i健康”公众号,回复“续签”,进行家庭医生线上续签。");
                if (StringUtils.isNotBlank(mobile)) {
                    SMSService.sendMsg(mobile, name + "您好!您的家庭医生将于7月31日到期,为了继续给您提供健康服务,请关注“厦门i健康”公众号,回复“续签”,进行家庭医生线上续签。");
                    patientSetReminFlag(patientCode);
                    return 2;
                }
@ -1230,28 +1306,28 @@ public class SignWebService extends BaseService {
        return -1;
    }
    public void patientSetReminFlag(String patient){
        String dateKey = DateUtil.dateToStr(new Date(),"yyyyMMdd");
        redisTemplate.opsForValue().set("renew:"+dateKey+":"+patient,"1");
    public void patientSetReminFlag(String patient) {
        String dateKey = DateUtil.dateToStr(new Date(), "yyyyMMdd");
        redisTemplate.opsForValue().set("renew:" + dateKey + ":" + patient, "1");
    }
    //判断用户当前年度是否有已经付费的签约记录
    public int checkNowYearSign(String doctor,String patient){
    public int checkNowYearSign(String doctor, String patient) {
        List<SignFamilyRenew> renews1 = signFamilyRenewDao.findByDoctorAndPatientIsValid(doctor,patient,DateUtil.getNowYear()+"");
        if(renews1!=null&&renews1.size()>0){
        List<SignFamilyRenew> renews1 = signFamilyRenewDao.findByDoctorAndPatientIsValid(doctor, patient, DateUtil.getNowYear() + "");
        if (renews1 != null && renews1.size() > 0) {
            return 0;
        }
        List<SignFamilyRenew> renews2 = signFamilyRenewDao.findByDoctorHealthAndPatientIsValid(doctor,patient,DateUtil.getNowYear()+"");
        if(renews2!=null&&renews2.size()>0){
        List<SignFamilyRenew> renews2 = signFamilyRenewDao.findByDoctorHealthAndPatientIsValid(doctor, patient, DateUtil.getNowYear() + "");
        if (renews2 != null && renews2.size() > 0) {
            return 0;
        }
        List<SignFamily> sign1 = signFamilyDao.findByDoctorAndPatientIsValid(doctor,patient,DateUtil.getNowYear()+"");
        if(sign1!=null&&sign1.size()>0){
        List<SignFamily> sign1 = signFamilyDao.findByDoctorAndPatientIsValid(doctor, patient, DateUtil.getNowYear() + "");
        if (sign1 != null && sign1.size() > 0) {
            return 0;
        }
        List<SignFamily> sign2 = signFamilyDao.findByDoctorHealthAndPatientIsValid(doctor,patient,DateUtil.getNowYear()+"");
        if(sign2!=null&&sign2.size()>0){
        List<SignFamily> sign2 = signFamilyDao.findByDoctorHealthAndPatientIsValid(doctor, patient, DateUtil.getNowYear() + "");
        if (sign2 != null && sign2.size() > 0) {
            return 0;
        }
        return 1;
@ -1259,10 +1335,11 @@ public class SignWebService extends BaseService {
    /**
     * 设置消息为已读
     *
     * @param mesId
     */
    public void setMessState(Long mesId){
        if(mesId!=null&&mesId>0){
    public void setMessState(Long mesId) {
        if (mesId != null && mesId > 0) {
            Message mes = messageDao.findOne(mesId);
            mes.setRead(0);//设置已读
            mes.setOver("0");//设置消息操作结束
@ -1271,22 +1348,22 @@ public class SignWebService extends BaseService {
        }
    }
    public JSONObject getSignInfoOrRenewInfo(String teamCode,String code){
    public JSONObject getSignInfoOrRenewInfo(String teamCode, String code) {
        //签约或续签参数
        String patientCode = null;
        Long adminTeamId = null;
        String doctorHealth = null;
        String doctor =null;
        String doctor = null;
        //先查找续签表有没有记录
        List<SignFamilyRenew> renews = signFamilyRenewDao.findByTeamCodeIsValid(teamCode,code);
        List<SignFamilyRenew> renews = signFamilyRenewDao.findByTeamCodeIsValid(teamCode, code);
        if(renews==null||renews.size()==0){
        if (renews == null || renews.size() == 0) {
            //再查找签约表记录
            List<SignFamily> signFamilys = signFamilyDao.findByTeamCodeIsValid(teamCode,code);
            if(signFamilys==null||signFamilys.size()==0){
            List<SignFamily> signFamilys = signFamilyDao.findByTeamCodeIsValid(teamCode, code);
            if (signFamilys == null || signFamilys.size() == 0) {
                throw new RuntimeException("找不到签约关系!");
            }else{
            } else {
                SignFamily signFamily = signFamilys.get(0);
                patientCode = signFamily.getPatient();
@ -1294,7 +1371,7 @@ public class SignWebService extends BaseService {
                doctorHealth = signFamily.getDoctorHealth();
                doctor = signFamily.getDoctor();
            }
        }else{
        } else {
            SignFamilyRenew renew = renews.get(0);
            patientCode = renew.getPatient();
@ -1312,26 +1389,26 @@ public class SignWebService extends BaseService {
        //查找到团队领导
        Doctor leader = doctorService.findDoctorByCode(adminTeam.getLeaderCode());
        JSONObject leaderObj = this.doctorParse(leader);
        resultObject.put("leader",leaderObj);
        resultObject.put("leader", leaderObj);
        //签约团队的健管师
        if(StringUtils.isNotBlank(doctorHealth)){
        if (StringUtils.isNotBlank(doctorHealth)) {
            Doctor health = doctorService.findDoctorByCode(doctorHealth);
            if(health!=null){
            if (health != null) {
                JSONObject healthObj = this.doctorParse(health);
                resultObject.put("doctorHealth",healthObj);
            }else{
                resultObject.put("doctorHealth","");
                resultObject.put("doctorHealth", healthObj);
            } else {
                resultObject.put("doctorHealth", "");
            }
        }
        //签约团队的全科医生
        if(StringUtils.isNotBlank(doctor)){
        if (StringUtils.isNotBlank(doctor)) {
            Doctor qk = doctorService.findDoctorByCode(doctor);
            if(qk!=null){
            if (qk != null) {
                JSONObject healthObj = this.doctorParse(qk);
                resultObject.put("doctor",healthObj);
            }else{
                resultObject.put("doctor","");
                resultObject.put("doctor", healthObj);
            } else {
                resultObject.put("doctor", "");
            }
        }
        Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"));
@ -1349,12 +1426,12 @@ public class SignWebService extends BaseService {
        StringBuffer countSql = new StringBuffer();
        countSql.append(consult_sql).append(" union all ").append(followup_sql).append(" union all ").append(reservation_sql).append(" union all ").append(article_sql).append(" union all ").append(guidance_sql);
        List<Map<String, Object>> resultCount  = jdbcTemplate.queryForList(countSql.toString(), new Object[]{doctorHealth, patient, year,doctorHealth,doctor,patient,year,doctorHealth,doctor,patient,year,doctorHealth,doctor,patient,year,doctorHealth,doctor,patient,year});
        resultObject.put("consultNum",resultCount.get(0).get("count"));
        resultObject.put("followupNum",resultCount.get(1).get("count"));
        resultObject.put("reservationNum",resultCount.get(2).get("count"));
        resultObject.put("articleNum",resultCount.get(3).get("count"));
        resultObject.put("guidanceNum",resultCount.get(4).get("count"));
        List<Map<String, Object>> resultCount = jdbcTemplate.queryForList(countSql.toString(), new Object[]{doctorHealth, patient, year, doctorHealth, doctor, patient, year, doctorHealth, doctor, patient, year, doctorHealth, doctor, patient, year, doctorHealth, doctor, patient, year});
        resultObject.put("consultNum", resultCount.get(0).get("count"));
        resultObject.put("followupNum", resultCount.get(1).get("count"));
        resultObject.put("reservationNum", resultCount.get(2).get("count"));
        resultObject.put("articleNum", resultCount.get(3).get("count"));
        resultObject.put("guidanceNum", resultCount.get(4).get("count"));
        return resultObject;
    }

+ 2 - 2
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/sign/PatientSignController.java

@ -277,9 +277,9 @@ public class PatientSignController extends BaseController {
	@RequestMapping("/signs")
	public String getSigns() {
		try {
			JSONArray jsonArray  = signWebService.getSigns(getUID());
			List<JSONObject> jsonArray  = signWebService.getSigns(getUID());
			//JSONArray jsonArray  = signWebService.getSigns("915cc456-5b1d-11e6-8344-fa163e8aee56");
			return write(200, "查询成功!", "data", jsonArray);
			return write(200, "查询成功!", "data",new JSONArray(jsonArray));
		} catch (Exception ex) {
			error(ex);
			return error(-1, "系统错误,请联系管理员!");