Explorar o código

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

chenweida %!s(int64=8) %!d(string=hai) anos
pai
achega
4684d796ba

+ 4 - 4
patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/doctor/DoctorDao.java

@ -128,16 +128,16 @@ public interface DoctorDao extends PagingAndSortingRepository<Doctor, Long>, Jpa
    List<Doctor> findByIsFamous(Integer isFamous);
    @Query("select p from Doctor p ,DoctorFamousConsultTimesRemain w where p.code=w.doctor and p.isFamous=1 and w.consultDate = ?1 and p.name like ?2 and w.timesRemain > 0 order by w.timesRemain desc")
    Page<Doctor> famousDoctorList(String date, String name, Pageable pageRequest);
    List<Doctor> famousDoctorList(String date, String name);
    @Query("select p from Doctor p ,DoctorFamousConsultTimesRemain w where p.code=w.doctor and p.isFamous=1 and w.consultDate = ?1  and w.timesRemain > 0  order by w.timesRemain desc")
    Page<Doctor> famousDoctorList(String date, Pageable pageRequest);
    List<Doctor> famousDoctorList(String date);
    @Query("select p from Doctor p where p.isFamous=1 and p.name like ?1 ")
    Page<Doctor> doctorFamousDoctorList(String name, Pageable pageRequest);
    List<Doctor> doctorFamousDoctorList(String name);
    @Query("select p from Doctor p where p.isFamous=1 ")
    Page<Doctor> doctorFamousDoctorList(Pageable pageRequest);
    List<Doctor> doctorFamousDoctorList();
    @Query("select p from Doctor p where p.idcard = ?1")
    Doctor findbyIdCard(String idcard);

+ 108 - 113
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/label/SignPatientLabelInfoService.java

@ -203,7 +203,7 @@ public class SignPatientLabelInfoService extends BaseService {
            sql = "select * " +
                    " from " +
                    "     wlyy_sign_family " +
                    " where repdoctor = ? and status > 0 and admin_team_code = ? ";
                    " where (doctor = ? or doctor_health = ?) and status > 0 and admin_team_code = ? ";
            if (labelCode.equals("1")) {
                int week = today.get(Calendar.DAY_OF_WEEK) - 2;
@ -226,7 +226,7 @@ public class SignPatientLabelInfoService extends BaseService {
                throw new Exception("label is not exist");
            }
            args = new Object[]{doctor, teamCode, doctor, teamCode};
            args = new Object[]{doctor, doctor, teamCode};
        } else {
            if (labelCode.equals("0")) {
                sql = "SELECT " +
@ -234,15 +234,15 @@ public class SignPatientLabelInfoService extends BaseService {
                        " FROM " +
                        "    wlyy_sign_family t1 " +
                        " left join " +
                        "    (select repl.patient,repl.label,repl.label_type,repl.label_name from wlyy_sign_family repf left join wlyy_sign_patient_label_info repl on repf.patient = repl.patient where repf.repdoctor = '" + doctor + "' and repf.status > 0 and repl.label_type = ? and repl.status = 1) t2 " +
                        "    (select l.patient,l.label,l.label_type,l.label_name from wlyy_sign_family f left join wlyy_sign_patient_label_info l on f.patient = l.patient where (f.doctor = '" + doctor + "' or f.doctor_health = '" + doctor + "') and f.status > 0 and l.label_type = ? and l.status = 1) t2 " +
                        " on t1.patient = t2.patient " +
                        " WHERE " +
                        "    t2.patient is null " +
                        "    AND t1.repdoctor = ? " +
                        "    AND (t1.doctor = ? or t1.doctor_health = ?) " +
                        "    AND t1.status > 0 " +
                        "    AND t1.admin_team_code = ? ";
                args = new Object[]{labelType, doctor, teamCode, labelType, doctor, teamCode};
                args = new Object[]{labelType, doctor, doctor, teamCode};
            } else {
                sql = "SELECT " +
                        "    t1.* " +
@ -254,19 +254,15 @@ public class SignPatientLabelInfoService extends BaseService {
                        "    AND t2.label_type = ? " +
                        "    AND t2.status = 1 " +
                        "    AND t1.patient = t2.patient " +
                        "    AND t1.repdoctor = ? " +
                        "    AND (t1.doctor = ? or t1.doctor_health = ?)" +
                        "    AND t1.status > 0 " +
                        "    AND t1.admin_team_code = ? ";
                args = new Object[]{labelCode, labelType, doctor, teamCode, labelCode, labelType, doctor, teamCode};
                args = new Object[]{labelCode, labelType, doctor, doctor, teamCode};
            }
        }
        String sqlDoc = sql.replaceAll("repdoctor", "doctor");
        String sqlDocHealth = sql.replaceAll("repdoctor", "doctor_health").replaceAll("t1", "t3").replaceAll("t2", "t4").replaceAll("repf", "repf1").replaceAll("repl", "repl1");
        sql = "select DISTINCT t.* from (" + sqlDoc + " union all " + sqlDocHealth + ") t limit " + start + "," + pagesize;
        sql += " limit " + start + "," + pagesize;
        signList = jdbcTemplate.queryForList(sql, args);
        if (signList != null && signList.size() > 0) {
@ -293,10 +289,12 @@ public class SignPatientLabelInfoService extends BaseService {
                        jsonP.put("expensesType", sign.get("expenses_type") != null ? String.valueOf(sign.get("expenses_type")) : "");
                        if (StringUtils.isEmpty(String.valueOf(jsonP.get("expensesStatus"))) || String.valueOf(jsonP.get("expensesStatus")).equals("0")) {
                            String epTime = "";
                            try {
                                epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                            } catch (Exception e) {
                                e.printStackTrace();
                            if(redisTemplate.isExposeConnection()) {
                                try {
                                    epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                            }
                            if (StringUtils.isEmpty(epTime)) {
                                jsonP.put("expensesRemindStatus", 0);
@ -348,10 +346,12 @@ public class SignPatientLabelInfoService extends BaseService {
                    if (StringUtils.isEmpty(String.valueOf(json.get("expensesStatus"))) || String.valueOf(json.get("expensesStatus")).equals("0")) {
                        String epTime = "";
                        try {
                            epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                        } catch (Exception e) {
                            e.printStackTrace();
                        if(redisTemplate.isExposeConnection()) {
                            try {
                                epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                        if (StringUtils.isEmpty(epTime)) {
                            json.put("expensesRemindStatus", 0);
@ -394,16 +394,11 @@ public class SignPatientLabelInfoService extends BaseService {
        List<Map<String, Object>> signList = new ArrayList<>();
        int start = page * pagesize;
        String sql = "";
        Object[] args = null;
        Object[] args = new Object[]{doctor, doctor, teamCode};
        sql = " select * from wlyy_sign_family where " +
                " repdoctor = ? and status > 0 and admin_team_code = ? ";
        String sqlDoc = sql.replaceAll("repdoctor", "doctor");
        String sqlDocHealth = sql.replaceAll("repdoctor", "doctor_health");
                " (doctor = ? or doctor_health = ?) and status > 0 and admin_team_code = ? limit " + start + "," + pagesize;
        args = new Object[]{doctor, teamCode, doctor, teamCode};
        sql = "select t.* from (" + sqlDoc + " union all " + sqlDocHealth + ") t limit " + start + "," + pagesize;
        signList = jdbcTemplate.queryForList(sql, args);
        if (signList != null && signList.size() > 0) {
@ -430,10 +425,12 @@ public class SignPatientLabelInfoService extends BaseService {
                        jsonP.put("expensesType", sign.get("expenses_type") != null ? String.valueOf(sign.get("expenses_type")) : "");
                        if (StringUtils.isEmpty(String.valueOf(jsonP.get("expensesStatus"))) || String.valueOf(jsonP.get("expensesStatus")).equals("0")) {
                            String epTime = "";
                            try {
                                epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                            } catch (Exception e){
                                e.printStackTrace();
                            if(redisTemplate.isExposeConnection()) {
                                try {
                                    epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                            }
                            if (StringUtils.isEmpty(epTime)) {
                                jsonP.put("expensesRemindStatus", 0);
@ -498,10 +495,12 @@ public class SignPatientLabelInfoService extends BaseService {
                    if (StringUtils.isEmpty(String.valueOf(json.get("expensesStatus"))) || String.valueOf(json.get("expensesStatus")).equals("0")) {
                        String epTime = "";
                        try {
                            epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                        } catch (Exception e) {
                            e.printStackTrace();
                        if(redisTemplate.isExposeConnection()) {
                            try {
                                epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                        if (StringUtils.isEmpty(epTime)) {
                            json.put("expensesRemindStatus", 0);
@ -569,10 +568,10 @@ public class SignPatientLabelInfoService extends BaseService {
                    Calendar today = Calendar.getInstance();
                    Calendar startDate = Calendar.getInstance();
                    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
                    sql = "select *" +
                    sql = "select count(DISTINCT patient) count" +
                            " from " +
                            "     wlyy_sign_family " +
                            " where repdoctor = ? and status > 0 " +
                            " where (doctor = ? or doctor_health = ?) and status > 0 " +
                            (teamCode > 0 ? " and admin_team_code = ? " : "");
                    if (label.getLabelCode().equals("1")) {
@ -595,33 +594,33 @@ public class SignPatientLabelInfoService extends BaseService {
                        throw new Exception("label is not exist");
                    }
                    if (teamCode > 0) {
                        args = new Object[]{doctor, teamCode, doctor, teamCode};
                        args = new Object[]{doctor, doctor, teamCode};
                    } else {
                        args = new Object[]{doctor, doctor};
                    }
                } else {
                    if (label.getLabelCode().equals("0")) {
                        sql = " SELECT " +
                                "     t1.* " +
                                "     count(DISTINCT t1.patient) count" +
                                " FROM" +
                                "     wlyy_sign_family t1 " +
                                " left join " +
                                "    (select repl.patient,repl.label,repl.label_type,repl.label_name from wlyy_sign_family repf left join wlyy_sign_patient_label_info repl on repf.patient = repl.patient where  repf.repdoctor = '" + doctor + "' and repf.status > 0 and repl.label_type = ? and repl.status = 1) t2 " +
                                "    (select l.patient,l.label,l.label_type,l.label_name from wlyy_sign_family f left join wlyy_sign_patient_label_info l on f.patient = l.patient where (f.doctor = '" + doctor + "' or f.doctor_health = '" + doctor + "') and f.status > 0 and l.label_type = ? and l.status = 1) t2 " +
                                " on t1.patient = t2.patient " +
                                " WHERE" +
                                "     t2.patient is null " +
                                "     AND t1.repdoctor = ? " +
                                "     AND (t1.doctor = ? or t1.doctor_health = ?)" +
                                "     AND t1.status > 0 " +
                                (teamCode > 0 ? "    AND t1.admin_team_code = ? " : "");
                        if (teamCode > 0) {
                            args = new Object[]{labelType, doctor, teamCode, labelType, doctor, teamCode};
                            args = new Object[]{labelType, doctor, doctor, teamCode};
                        } else {
                            args = new Object[]{labelType, doctor, labelType, doctor};
                            args = new Object[]{labelType, doctor, doctor};
                        }
                    } else {
                        sql = " SELECT " +
                                "     t1.* " +
                                "     count(DISTINCT t1.patient) count" +
                                " FROM" +
                                "     wlyy_sign_family t1, " +
                                "     wlyy_sign_patient_label_info t2 " +
@ -630,23 +629,18 @@ public class SignPatientLabelInfoService extends BaseService {
                                "     AND t2.label = ? " +
                                "     AND t2.label_type = ? " +
                                "     AND t2.status = 1 " +
                                "     AND t1.repdoctor = ? " +
                                "     AND (t1.doctor = ? or t1.doctor_health = ?)" +
                                "     AND t1.status > 0 " +
                                (teamCode > 0 ? "    AND t1.admin_team_code = ? " : "");
                        if (teamCode > 0) {
                            args = new Object[]{label.getLabelCode(), labelType, doctor, teamCode, label.getLabelCode(), labelType, doctor, teamCode};
                            args = new Object[]{label.getLabelCode(), labelType, doctor, doctor, teamCode};
                        } else {
                            args = new Object[]{label.getLabelCode(), labelType, doctor, label.getLabelCode(), labelType, doctor};
                            args = new Object[]{label.getLabelCode(), labelType, doctor, doctor};
                        }
                    }
                }
                String sqlDoc = sql.replaceAll("repdoctor", "doctor");
                String sqlDocHealth = sql.replaceAll("repdoctor", "doctor_health").replaceAll("t1", "t3").replaceAll("t2", "t4").replaceAll("repf", "repf1").replaceAll("repl", "repl1");
                sql = "select count(DISTINCT t.patient) count from (" + sqlDoc + " union all " + sqlDocHealth + ") t";
                List<Map<String, Object>> count = jdbcTemplate.queryForList(sql, args);
                if (count != null && count.size() > 0 && count.get(0).containsKey("count")) {
@ -1145,7 +1139,7 @@ public class SignPatientLabelInfoService extends BaseService {
        Object[] args = null;
        String sql = "select " +
                "    t1.* " +
                "    DISTINCT t1.* " +
                " FROM " +
                "    wlyy_sign_family t1 " +
                (StringUtils.isNotEmpty(labelCode) || StringUtils.isNotEmpty(labelType) ?
@ -1154,7 +1148,7 @@ public class SignPatientLabelInfoService extends BaseService {
                " ON t1.patient = t2.patient " +
                (teamCode > 0 ? " join (select * from wlyy_sign_patient_label where label_type != '4' or team_code = " + teamCode + " or (label_type = '4' and (label_code in (1,2)))) lb on t2.label = lb.label_code and t2.label_type = lb.label_type " : "") +
                " WHERE " +
                "    t1.repdoctor = ? " +
                "    (t1.doctor = ? or t1.doctor_health = ?) " +
                "    AND t1.status > 0 " +
                "    AND (" + (StringUtils.isNotEmpty(labelCode) || StringUtils.isNotEmpty(labelType) ? "" : " t2.patient is null OR ") + " t2.status = 1) " +
                (StringUtils.isNotEmpty(labelCode) ? " AND t2.label = ? " : "") +
@ -1163,16 +1157,14 @@ public class SignPatientLabelInfoService extends BaseService {
                "  AND (t1.name like ? or t2.label_name like ?) ";
        if (StringUtils.isNotEmpty(labelCode)) {
            args = new Object[]{doctor, labelCode, labelType, "%" + filter + "%", "%" + filter + "%", doctor, labelCode, labelType, "%" + filter + "%", "%" + filter + "%"};
            args = new Object[]{doctor, doctor, labelCode, labelType, "%" + filter + "%", "%" + filter + "%"};
        } else if (StringUtils.isEmpty(labelCode) && StringUtils.isNotEmpty(labelType)) {
            args = new Object[]{doctor, labelType, "%" + filter + "%", "%" + filter + "%", doctor, labelType, "%" + filter + "%", "%" + filter + "%"};
            args = new Object[]{doctor, doctor, labelType, "%" + filter + "%", "%" + filter + "%"};
        } else {
            args = new Object[]{doctor, "%" + filter + "%", "%" + filter + "%", doctor, "%" + filter + "%", "%" + filter + "%"};
            args = new Object[]{doctor, doctor, "%" + filter + "%", "%" + filter + "%"};
        }
        String sqlDoc = sql.replaceAll("repdoctor", "doctor");
        String sqlDocHealth = sql.replaceAll("repdoctor", "doctor_health").replaceAll("t1", "t3").replaceAll("t2", "t4").replaceAll("lb", "lb1");
        sql = "select DISTINCT t.* from (" + sqlDoc + " union all " + sqlDocHealth + ") t limit " + page + "," + pagesize;
        sql += " limit " + page + "," + pagesize;
        signList = jdbcTemplate.queryForList(sql, args);
        if (signList != null && signList.size() > 0) {
@ -1199,10 +1191,12 @@ public class SignPatientLabelInfoService extends BaseService {
                        jsonP.put("expensesType", sign.get("expenses_type") != null ? String.valueOf(sign.get("expenses_type")) : "");
                        if (StringUtils.isEmpty(String.valueOf(jsonP.get("expensesStatus"))) || String.valueOf(jsonP.get("expensesStatus")).equals("0")) {
                            String epTime = "";
                            try {
                                epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                            } catch (Exception e) {
                                e.printStackTrace();
                            if(redisTemplate.isExposeConnection()) {
                                try {
                                    epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                            }
                            if (StringUtils.isEmpty(epTime)) {
                                jsonP.put("expensesRemindStatus", 0);
@ -1277,10 +1271,12 @@ public class SignPatientLabelInfoService extends BaseService {
//                }
                    if (StringUtils.isEmpty(String.valueOf(json.get("expensesStatus"))) || String.valueOf(json.get("expensesStatus")).equals("0")) {
                        String epTime = "";
                        try {
                            epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                        } catch (Exception e) {
                            e.printStackTrace();
                        if(redisTemplate.isExposeConnection()) {
                            try {
                                epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                        if (StringUtils.isEmpty(epTime)) {
                            json.put("expensesRemindStatus", 0);
@ -1340,27 +1336,14 @@ public class SignPatientLabelInfoService extends BaseService {
                " from " +
                "     wlyy_sign_family f,wlyy_patient p " +
                " where " +
                "      f.patient = p.code and f.doctor = ? and f.admin_team_code = ? and f.status > 0 and f.name like ? " +
                " union all " +
                "select " +
                "     f1.patient " +
                "     ,f1.name " +
                "     ,f1.openid " +
                "     ,f1.admin_team_code " +
                "     ,p1.sex " +
                "     ,p1.idcard " +
                "     ,p1.photo " +
                " from " +
                "     wlyy_sign_family f1,wlyy_patient p1" +
                " where " +
                "     f1.patient = p1.code and f1.doctor_health = ? and f1.admin_team_code = ? and f1.status > 0 and f1.name like ? " +
                ") t " + (page < 0 ? "" : "limit " + start + "," + size);
                "      f.patient = p.code and (f.doctor = ? or f.doctor_health = ?) and f.admin_team_code = ? and f.status > 0 and f.name like ?) " +
                (page < 0 ? "" : "limit " + start + "," + size);
        if (teams != null) {
            for (AdminTeam team : teams) {
                teamMap.put(team.getId(), team);
                List<Map<String, Object>> result = jdbcTemplate.queryForList(sql, new Object[]{doctor, team.getId(),
                        "%" + filter + "%", doctor, team.getId(), "%" + filter + "%"});
                List<Map<String, Object>> result = jdbcTemplate.queryForList(sql, new Object[]{doctor, doctor, team.getId(),
                        "%" + filter + "%"});
                if (result != null && result.size() > 0) {
                    for (Map<String, Object> p : result) {
@ -1572,7 +1555,7 @@ public class SignPatientLabelInfoService extends BaseService {
        Object[] args = null;
        String sqlTemp = "select " +
                "    t1.* " +
                "    DISTINCT t1.* " +
                " FROM " +
                "    wlyy_sign_family t1 " +
                (StringUtils.isNotEmpty(labelCode) || StringUtils.isNotEmpty(labelType) ?
@ -1596,8 +1579,8 @@ public class SignPatientLabelInfoService extends BaseService {
            args = new Object[]{"%" + filter + "%", "%" + filter + "%"};
        }
        String sql = "select DISTINCT t.* from (" + sqlTemp + ") t limit " + page + "," + pagesize;
        signList = jdbcTemplate.queryForList(sql, args);
        sqlTemp += " limit " + page + "," + pagesize;
        signList = jdbcTemplate.queryForList(sqlTemp, args);
        if (signList != null && signList.size() > 0) {
            for (Map<String, Object> sign : signList) {
@ -1623,10 +1606,12 @@ public class SignPatientLabelInfoService extends BaseService {
                        jsonP.put("expensesType", sign.get("expenses_type") != null ? String.valueOf(sign.get("expenses_type")) : "");
                        if (StringUtils.isEmpty(String.valueOf(jsonP.get("expensesStatus"))) || String.valueOf(jsonP.get("expensesStatus")).equals("0")) {
                            String epTime = "";
                            try {
                                epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                            } catch (Exception e) {
                                e.printStackTrace();
                            if(redisTemplate.isExposeConnection()) {
                                try {
                                    epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                            }
                            if (StringUtils.isEmpty(epTime)) {
                                jsonP.put("expensesRemindStatus", 0);
@ -1654,7 +1639,7 @@ public class SignPatientLabelInfoService extends BaseService {
                }
                List<SignPatientLabelInfo> labels = null;
                if(teamCode > 0){
                if (teamCode > 0) {
                    labels = labelInfoDao.findByPatientAndStatusByTeam(sign.get("patient").toString(), 1, teamCode);
                } else {
                    labels = labelInfoDao.findByPatientAndStatus(sign.get("patient").toString(), 1);
@ -1698,10 +1683,12 @@ public class SignPatientLabelInfoService extends BaseService {
                    if (StringUtils.isEmpty(String.valueOf(json.get("expensesStatus"))) || String.valueOf(json.get("expensesStatus")).equals("0")) {
                        String epTime = "";
                        try {
                            epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                        } catch (Exception e) {
                            e.printStackTrace();
                        if(redisTemplate.isExposeConnection()) {
                            try {
                                epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                        if (StringUtils.isEmpty(epTime)) {
                            json.put("expensesRemindStatus", 0);
@ -1771,10 +1758,12 @@ public class SignPatientLabelInfoService extends BaseService {
                        jsonP.put("expensesType", sign.get("expenses_type") != null ? String.valueOf(sign.get("expenses_type")) : "");
                        if (StringUtils.isEmpty(String.valueOf(jsonP.get("expensesStatus"))) || String.valueOf(jsonP.get("expensesStatus")).equals("0")) {
                            String epTime = "";
                            try{
                                epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                            } catch (Exception e) {
                                e.printStackTrace();
                            if(redisTemplate.isExposeConnection()) {
                                try {
                                    epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                            }
                            if (StringUtils.isEmpty(epTime)) {
@ -1833,10 +1822,12 @@ public class SignPatientLabelInfoService extends BaseService {
                    if (StringUtils.isEmpty(String.valueOf(json.get("expensesStatus"))) || String.valueOf(json.get("expensesStatus")).equals("0")) {
                        String epTime = "";
                        try {
                            epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                        } catch (Exception e) {
                            e.printStackTrace();
                        if(redisTemplate.isExposeConnection()) {
                            try {
                                epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                        if (StringUtils.isEmpty(epTime)) {
                            json.put("expensesRemindStatus", 0);
@ -1967,10 +1958,12 @@ public class SignPatientLabelInfoService extends BaseService {
                        jsonP.put("expensesType", sign.get("expenses_type") != null ? String.valueOf(sign.get("expenses_type")) : "");
                        if (StringUtils.isEmpty(String.valueOf(jsonP.get("expensesStatus"))) || String.valueOf(jsonP.get("expensesStatus")).equals("0")) {
                            String epTime = "";
                            try {
                                epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                            } catch (Exception e) {
                                e.printStackTrace();
                            if(redisTemplate.isExposeConnection()) {
                                try {
                                    epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                            }
                            if (StringUtils.isEmpty(epTime)) {
@ -2023,10 +2016,12 @@ public class SignPatientLabelInfoService extends BaseService {
                    if (StringUtils.isEmpty(String.valueOf(json.get("expensesStatus"))) || String.valueOf(json.get("expensesStatus")).equals("0")) {
                        String epTime = "";
                        try {
                            epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                        } catch (Exception e) {
                            e.printStackTrace();
                        if(redisTemplate.isExposeConnection()) {
                            try {
                                epTime = redisTemplate.opsForValue().get("expenses:remind:" + p.getCode());
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                        if (StringUtils.isEmpty(epTime)) {
                            json.put("expensesRemindStatus", 0);

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

@ -39,93 +39,80 @@ public class SignWebService extends BaseService {
     *
     * @param doctor
     * @param status
     * @param page
     * @param pageSize
     * @return
     */
    public List<Map<String, Object>> getSignWebByDoctor(String doctor, int status, int page, int pagesize) {
    public List<Map<String, Object>> getSignWebByDoctor(String doctor, int status, int page, int pageSize) {
        // 查询语句
        String sql = "select " +
                "    a1.code " +
                "    ,a1.repdoctor doctor" +
                "    ,b1.code  as  patient" +
                "    ,b1.idcard " +
                "    ,b1.name " +
                "    ,b1.province_name  as provinceName" +
                "    ,b1.city_name  as cityName" +
                "    ,b1.town_name  as townName" +
                "    ,b1.address " +
                "    ,b1.photo " +
                "    ,a1.status " +
                "    ,a1.id" +
                "    ,a1.begin" +
                (status == 1 ? "    ,a1.patient_apply_date as applyDate " : "    ,a1.expenses_time as applyDate ") +
                "    ,a1.reason " +
                "    ,b1.street_name as streetName" +
                "    ,b1.sex" +
                "    a.code " +
                "    ,a.doctor " +
                "    ,b.code  as  patient" +
                "    ,b.idcard " +
                "    ,b.name " +
                "    ,b.province_name  as provinceName" +
                "    ,b.city_name  as cityName" +
                "    ,b.town_name  as townName" +
                "    ,b.address " +
                "    ,b.photo " +
                "    ,a.status " +
                "    ,a.id " +
                (status == 1 ? "    ,a.patient_apply_date as applyDate " : "    ,a.expenses_time as applyDate ") +
                "    ,a.reason " +
                "    ,b.street_name as streetName" +
                "    ,b.sex" +
                " from " +
                " ( select code,patient,repdoctor,status,id,apply_date,patient_apply_date,expenses_time,reason,begin from wlyy_sign_family where repdoctor = ? and status = ? and type = 2 " +
                (status == 3 ? " and expenses_status = '1'" : "") + ") a1 " +
                " ,wlyy_patient b1 " +
                " where a1.patient = b1.code ";
        sql = "select DISTINCT t.* from (" + sql.replaceAll("repdoctor","doctor") + " union all "
                + sql.replaceAll("repdoctor","doctor_health").replaceAll("a1","a2").replaceAll("b1","b2")
                + ") t order by t.begin desc limit " + page * pagesize  + "," + pagesize;
                " ( select code,patient,doctor,status,id,apply_date,patient_apply_date,expenses_time,reason,begin from wlyy_sign_family where (doctor = ? or doctor_health = ?) and status = ? and type = 2" +
                (status == 3 ? " and expenses_status = '1'" : "") + " order by begin desc ) a " +
                " ,wlyy_patient b " +
                " where a.patient = b.code  order by a.begin desc limit " + page * pageSize + "," + pageSize;
        // 未缴费查询语句
        String sqlExpenses = "select " +
                "    a1.code " +
                "    ,a1.repdoctor doctor" +
                "    ,b1.code  as  patient" +
                "    ,b1.name " +
                "    ,b1.idcard " +
                "    ,b1.province_name  as provinceName" +
                "    ,b1.city_name  as cityName" +
                "    ,b1.town_name  as townName" +
                "    ,b1.address " +
                "    ,b1.photo " +
                "    ,a1.status " +
                "    ,a1.id " +
                "    ,a1.apply_date as applyDate " +
                "    ,a1.reason " +
                "    ,b1.street_name as streetName" +
                "    ,b1.sex" +
                "    ,a1.begin" +
                "    a.code " +
                "    ,a.doctor " +
                "    ,b.code  as  patient" +
                "    ,b.name " +
                "    ,b.idcard " +
                "    ,b.province_name  as provinceName" +
                "    ,b.city_name  as cityName" +
                "    ,b.town_name  as townName" +
                "    ,b.address " +
                "    ,b.photo " +
                "    ,a.status " +
                "    ,a.id " +
                "    ,a.apply_date as applyDate " +
                "    ,a.reason " +
                "    ,b.street_name as streetName" +
                "    ,b.sex" +
                " from " +
                " ( select code,patient,repdoctor,status,id,apply_date,reason,begin,expenses_status,LENGTH(trim(ifnull(expenses_status,''))) len from wlyy_sign_family where repdoctor = ? and status > ? and type = 2 ) a1 " +
                " ,wlyy_patient b1 " +
                " where a1.patient = b1.code and (a1.expenses_status = '0' or a1.len < 1) ";
        sqlExpenses = "select DISTINCT t.* from (" + sqlExpenses.replaceAll("repdoctor","doctor") + " union all "
                + sqlExpenses.replaceAll("repdoctor","doctor_health").replaceAll("a1","a2").replaceAll("b1","b2")
                + ") t order by t.begin desc limit " + page * pagesize  + "," + pagesize;
                " ( select code,patient,doctor,status,id,apply_date,reason,begin,expenses_status,LENGTH(trim(ifnull(expenses_status,''))) len from wlyy_sign_family where (doctor = ? or doctor_health = ?) and status > ? and type = 2 order by begin desc ) a " +
                " ,wlyy_patient b " +
                " where a.patient = b.code and (a.expenses_status = '0' or a.len < 1) order by a.begin desc limit " + page * pageSize + "," + pageSize;
        // 已解约查询语句
        String surrSql = "select " +
                "    a1.code " +
                "    ,a1.repdoctor doctor" +
                "    ,b1.code  as  patient" +
                "    ,b1.name " +
                "    ,b1.idcard " +
                "    ,b1.province_name  as provinceName" +
                "    ,b1.city_name  as cityName" +
                "    ,b1.town_name  as townName" +
                "    ,b1.address " +
                "    ,b1.photo " +
                "    ,a1.status " +
                "    ,a1.id " +
                "    ,a1.apply_unsign_date as applyDate" +
                "    ,a1.reason " +
                "    ,b1.street_name as streetName" +
                "    ,b1.sex" +
                "    ,a1.begin" +
                "    a.code " +
                "    ,a.doctor " +
                "    ,b.code  as  patient" +
                "    ,b.name " +
                "    ,b.idcard " +
                "    ,b.province_name  as provinceName" +
                "    ,b.city_name  as cityName" +
                "    ,b.town_name  as townName" +
                "    ,b.address " +
                "    ,b.photo " +
                "    ,a.status " +
                "    ,a.id " +
                "    ,a.apply_unsign_date as applyDate" +
                "    ,a.reason " +
                "    ,b.street_name as streetName" +
                "    ,b.sex" +
                " from " +
                " ( select code,patient,repdoctor,status,id,apply_date,apply_unsign_date,reason,begin from wlyy_sign_family where repdoctor = ? and ( status = ? or status = ? ) and type = 2 ) a1 " +
                " ,wlyy_patient b1 " +
                " where a1.patient = b1.code ";
        surrSql = "select DISTINCT t.* from (" + surrSql.replaceAll("repdoctor","doctor") + " union all "
                + surrSql.replaceAll("repdoctor","doctor_health").replaceAll("a1","a2").replaceAll("b1","b2")
                + ") t order by t.begin desc limit " + page * pagesize  + "," + pagesize;
                " ( select code,patient,doctor,status,id,apply_date,apply_unsign_date,reason,begin from wlyy_sign_family where (doctor = ? or doctor_health = ?) and ( status = ? or status = ? ) and type = 2 order by begin desc ) a " +
                " ,wlyy_patient b " +
                " where a.patient = b.code  order by a.begin desc limit " + page * pageSize + "," + pageSize;
        // 分页信息
        //PageRequest pageRequest = new PageRequest(page - 1, pageSize);
@ -134,19 +121,19 @@ public class SignWebService extends BaseService {
        List<Map<String, Object>> patients = null;
        switch (status) {
            case 1:// 待签约
                patients = jdbcTemplate.queryForList(sql, new Object[]{doctor, 0, doctor, 0});
                patients = jdbcTemplate.queryForList(sql, new Object[]{doctor, doctor, 0});
                break;
            case 2:// 待解约
                patients = jdbcTemplate.queryForList(sql, new Object[]{doctor, 2, doctor, 2});
                patients = jdbcTemplate.queryForList(sql, new Object[]{doctor, doctor, 2});
                break;
            case 3:// 已签约
                patients = jdbcTemplate.queryForList(sql, new Object[]{doctor, 1, doctor, 1});
                patients = jdbcTemplate.queryForList(sql, new Object[]{doctor, doctor, 1});
                break;
            case 4:// 4已经解约
                patients = jdbcTemplate.queryForList(surrSql, new Object[]{doctor, -3, -4, doctor, -3, -4});
                patients = jdbcTemplate.queryForList(surrSql, new Object[]{doctor, doctor, -3, -4});
                break;
            case 5: // 未缴费
                patients = jdbcTemplate.queryForList(sqlExpenses, new Object[]{doctor, 0, doctor, 0});
                patients = jdbcTemplate.queryForList(sqlExpenses, new Object[]{doctor, doctor, 0});
        }
        return patients;

+ 0 - 665
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/talk/TalkGroupService.java

@ -454,671 +454,6 @@ public class TalkGroupService extends BaseService {
        return discussionGroupMemberDao.countByMemberCode(doctor);
    }
    /**
     * 获取以上一对一聊天
     *
     * @param doctor
     * @param doctorName
     * @return
     */
    @Deprecated
    public JSONArray getOneToOneIm(String doctor, String doctorName) throws UnsupportedEncodingException {
        JSONArray result = null;
        JSONArray resultArray = new JSONArray();
        String url = SystemConf.getInstance().getSystemProperties().getProperty("im_list_get")
                + "statistic/getchatlist.im";
        String json = HttpUtil.sendGet(url, "uid=" + doctor);
        if (!StringUtils.isEmpty(json) && json.trim().startsWith("[") && json.trim().endsWith("]")) {
            System.out.println("one-to-one:" + json);
            result = new JSONArray(json);
        }
        if (result != null && result.length() > 0) {
            for (int i = 0; i < result.length(); i++) {
                JSONObject obj = result.getJSONObject(i);
                if (obj.getInt("msg_type") == 1 && obj.get("peer_uid") != null) {
                    JSONObject objRe = new JSONObject();
                    Doctor fromDoctor = doctorDao.findByCode(obj.get("peer_uid").toString());
                    if (fromDoctor == null) {
                        continue;
                    }
                    if (!StringUtils.isEmpty(doctorName)) {
                        if (!fromDoctor.getName().contains(doctorName)) {
                            continue;
                        }
                    }
                    objRe.put("uid", obj.get("uid") != null ? obj.getString("uid") : "");
                    objRe.put("fromUid", obj.get("peer_uid") != null ? obj.get("peer_uid").toString() : "");
                    objRe.put("fromName", fromDoctor.getName());
                    objRe.put("fromLevel", fromDoctor.getLevel());
                    objRe.put("photo", StringUtils.isEmpty(fromDoctor.getPhoto()) ? "" : fromDoctor.getPhoto());
                    objRe.put("sex", fromDoctor.getSex());
                    objRe.put("lastContentType", obj.getInt("last_content_type"));
                    objRe.put("lastContent", obj.get("last_content") != null ? new String(obj.getString("last_content").getBytes(), "utf-8") : "");
                    objRe.put("newMsgCount", obj.getInt("new_msg_count"));
                    objRe.put("lastMsgTime", obj.get("timestamp") != null ? DateUtil.dateToStr(new Date(obj.getLong("timestamp")), DateUtil.YYYY_MM_DD_HH_MM) : "");
                    objRe.put("lastMsgTimeLong", obj.getLong("timestamp"));
                    resultArray.put(objRe);
                }
            }
        }
        return resultArray;
    }
    /**
     * 搜索转发医生
     *
     * @param doctor
     * @param filter
     * @return
     */
    public JSONObject searchImDoctor(String doctor, String filter) {
        JSONObject result = new JSONObject();
        String sqlDoc = "select * from wlyy_doctor where name like ? ";
        String sqlTalkGroup = "select DISTINCT g.* from " +
                " (select " +
                "   gi.* " +
                " from" +
                "  wlyy_talk_group_member mi " +
                "  ,wlyy_talk_group gi " +
                " where mi.group_code = gi.code and mi.member_code = ?) g " +
                " left join wlyy_talk_group_member m on g.code = m.group_code where g.type = 2 and g.name like ? or m.member_name like ? ";
        String sqlTeam = "select DISTINCT t.* from " +
                " (select " +
                "   ti.* " +
                " from" +
                "  wlyy_admin_team_member mi " +
                "  ,wlyy_admin_team ti " +
                " where mi.team_id = ti.id and mi.doctor_code = ?) t " +
                " left join wlyy_admin_team_member m on t.id = m.team_id join wlyy_doctor d on m.doctor_code = d.code where t.name like ? or d.name like ? ";
        List<Doctor> doctors = jdbcTemplate.query(sqlDoc, new Object[]{"%" + filter + "%"}, new BeanPropertyRowMapper(Doctor.class));
        List<WlyyTalkGroup> groups = jdbcTemplate.query(sqlTalkGroup, new Object[]{doctor, "%" + filter + "%", "%" + filter + "%"}, new BeanPropertyRowMapper(WlyyTalkGroup.class));
        List<AdminTeam> teams = jdbcTemplate.query(sqlTeam, new Object[]{doctor, "%" + filter + "%", "%" + filter + "%"}, new BeanPropertyRowMapper(AdminTeam.class));
        if (doctors != null && doctors.size() > 0) {
            JSONArray docArray = new JSONArray();
            for (Doctor doc : doctors) {
                JSONObject json = new JSONObject(doc);
                if (json.has("password")) {
                    json.remove("password");
                }
                if (json.has("salt")) {
                    json.remove("salt");
                }
                docArray.put(json);
            }
            result.put("doctor", docArray);
        }
        if (groups != null && groups.size() > 0) {
            JSONArray groupsArray = new JSONArray();
            for (WlyyTalkGroup group : groups) {
                JSONObject json = new JSONObject(group);
                List<WlyyTalkGroupMember> members = findTalkGroupMembers(group.getCode());
                json.put("members", members);
                groupsArray.put(json);
            }
            result.put("groupChat", groupsArray);
        }
        if (teams != null && teams.size() > 0) {
            JSONArray teamArray = new JSONArray();
            for (AdminTeam team : teams) {
                JSONObject json = new JSONObject(team);
                List<Doctor> members = teamService.getMembers(team.getId());
                if (members != null && members.size() > 0) {
                    JSONArray memberArray = new JSONArray();
                    for (Doctor doc : members) {
                        JSONObject dJson = new JSONObject(doc);
                        if (dJson.has("password")) {
                            dJson.remove("password");
                        }
                        if (dJson.has("salt")) {
                            dJson.remove("salt");
                        }
                        memberArray.put(dJson);
                    }
                    json.put("members", memberArray);
                } else {
                    json.put("members", new JSONArray());
                }
                teamArray.put(json);
            }
            result.put("teamChat", teamArray);
        }
        return result;
    }
    /**
     * 查询医生IM列表
     *
     * @param doctor 医生
     * @param type   聊天对象类型 1:居民 2:医生
     * @return
     */
    public JSONObject getImList(String doctor, int type, int page, int pagesize) {
        JSONObject result = new JSONObject();
        result.put("oneChat", getOneImList(doctor, type, page, pagesize));
        result.put("groupChat", getTalkgroupList(doctor, type, page, pagesize));
        if (type == 2) {
            result.put("teamChat", getTeamChatList(doctor, page, pagesize));
        }
        return result;
    }
    /**
     * 查询医生一对一IM列表
     *
     * @param doctor 医生
     * @param type   聊天对象类型 1:居民 2:医生
     * @return
     */
    public JSONArray getOneImList(String doctor, int type, int page, int pagesize) {
        JSONArray list = new JSONArray();
        JSONArray imList = new JSONArray();
        String sqlP = "";
        if (type == 1) {
            sqlP = "select code,name,photo,sex,idcard,mobile from wlyy_patient where code = ? ";
        } else {
            sqlP = "select code,name,photo,sex,idcard,mobile,level from wlyy_doctor where code = ? ";
        }
        for (int i = 0; i < imList.length(); i++) {
            JSONObject im = imList.getJSONObject(i);
            JSONObject json = new JSONObject();
            Map<String, Object> map = jdbcTemplate.queryForMap(sqlP, new Object[]{im.get("")});
            if (map != null) {
                json.put("name", map.get("name"));
                json.put("sex", map.get("sex"));
                json.put("idcard", map.get("idcard"));
                json.put("age", IdCardUtil.getAgeForIdcard(map.get("idcard") != null ? String.valueOf(map.get("idcard")) : ""));
                json.put("photo", map.get("photo"));
                json.put("mobile", map.get("mobile"));
                if (type == 2) {
                    json.put("level", map.get("level"));
                }
            }
            list.put(json);
        }
        return list;
    }
    /**
     * 查询医生讨论组列表
     *
     * @param doctor   医生
     * @param type     聊天对象类型 1:咨询 2:其他
     * @param page     第几页
     * @param pagesize 页大小
     * @return
     */
    public JSONArray getTalkgroupList(String doctor, int type, int page, int pagesize) {
        JSONArray list = new JSONArray();
        String sqlGroup = "select * " +
                " from" +
                "     wlyy_talk_group g" +
                " join" +
                "     wlyy_talk_group_member m" +
                "  on g.code = m.group_code" +
                " where" +
                "     m.member_code = ? and g.type = " + (type == 1 ? "1" : "2") + " limit " + page * pagesize + "," + pagesize;
        List<WlyyTalkGroup> talkGroups = jdbcTemplate.query(sqlGroup,
                new Object[]{doctor}, new BeanPropertyRowMapper(WlyyTalkGroup.class));
        for (WlyyTalkGroup group : talkGroups) {
            JSONObject obj = new JSONObject(group);
            List<WlyyTalkGroupMember> members = findTalkGroupMembers(group.getCode());
            JSONArray mArray = new JSONArray();
            for (WlyyTalkGroupMember member : members) {
                JSONObject mJson = new JSONObject();
                mJson.put("memberCode", member.getMemberCode());
                mJson.put("memberName", member.getMemberName());
                mJson.put("type", member.getType());
                Map<String, Object> mObj = null;
                if (member.getType() == 4) {
                    String sqlP = "select code,name,photo,sex,idcard,mobile from wlyy_patient where code = ? ";
                    mObj = jdbcTemplate.queryForMap(sqlP, new Object[]{member.getMemberCode()});
                } else {
                    String sqlP = "select code,name,photo,sex,idcard,mobile,level from wlyy_doctor where code = ? ";
                    mObj = jdbcTemplate.queryForMap(sqlP, new Object[]{member.getMemberCode()});
                }
                if (mObj != null) {
                    mJson.put("memberName", mObj.get("name"));
                    mJson.put("sex", mObj.get("sex"));
                    mJson.put("idcard", mObj.get("idcard"));
                    mJson.put("age", IdCardUtil.getAgeForIdcard(mObj.get("idcard") != null ? String.valueOf(mObj.get("idcard")) : ""));
                    mJson.put("photo", mObj.get("photo"));
                    if (member.getType() != 4) {
                        mJson.put("level", mObj.get("level"));
                    }
                }
                mArray.put(mJson);
            }
            obj.put("members", mArray);
            list.put(obj);
        }
        return list;
    }
    /**
     * 查询团队聊天
     *
     * @param doctor
     * @param page
     * @param pagesize
     * @return
     */
    public JSONArray getTeamChatList(String doctor, int page, int pagesize) {
        String sql = "select t.* from wlyy_admin_team t" +
                " join wlyy_admin_team_member m" +
                " on t.id = m.team_id" +
                " where m.doctor_code = ? limit " + page * pagesize + "," + pagesize;
        List<AdminTeam> teams = jdbcTemplate.query(sql, new Object[]{doctor}, new BeanPropertyRowMapper(AdminTeam.class));
        JSONArray teamArray = new JSONArray();
        if (teams != null) {
            for (AdminTeam team : teams) {
                JSONObject json = new JSONObject(team);
                List<Doctor> members = teamService.getMembers(team.getId());
                if (members != null && members.size() > 0) {
                    JSONArray memberArray = new JSONArray();
                    for (Doctor doc : members) {
                        JSONObject dJson = new JSONObject();
                        dJson.put("memberCode", doc.getCode());
                        dJson.put("memberName", doc.getName());
                        dJson.put("sex", doc.getSex());
                        dJson.put("idcard", doc.getIdcard());
                        dJson.put("age", IdCardUtil.getAgeForIdcard(doc.getIdcard()));
                        dJson.put("photo", doc.getPhoto());
                        dJson.put("level", doc.getLevel());
                        memberArray.put(dJson);
                    }
                    json.put("members", memberArray);
                } else {
                    json.put("members", new JSONArray());
                }
                teamArray.put(json);
            }
        }
        return teamArray;
    }
    /**
     * 查询医生最近联系IM列表
     *
     * @param doctor 医生
     * @param type   聊天对象类型 1:居民 2:医生
     * @return
     */
    public JSONObject getRecentImList(String doctor, int type) {
        JSONObject result = new JSONObject();
        if (type == 1) {
            result.put("oneChat", getRecentOneImList(doctor, type));
        } else {
            result.put("oneChat", getRecentOneImList(doctor, type));
            result.put("groupChat", getRecentGroupImList(doctor));
        }
        return result;
    }
    /**
     * 获取最近联系一对一IM列表
     *
     * @param doctor 医生
     * @return
     */
    public JSONArray getRecentOneImList(String doctor, int type) {
        JSONArray list = new JSONArray();
        JSONArray imList = new JSONArray();
        String sqlP = "";
        if (type == 1) {
            sqlP = "select code,name,photo,sex,idcard,mobile from wlyy_patient where code = ? ";
        } else {
            sqlP = "select code,name,photo,sex,idcard,mobile,level from wlyy_doctor where code = ? ";
        }
        for (int i = 0; i < imList.length(); i++) {
            JSONObject im = imList.getJSONObject(i);
            JSONObject json = new JSONObject();
            Map<String, Object> map = jdbcTemplate.queryForMap(sqlP, new Object[]{im.get("")});
            if (map != null) {
                json.put("code", map.get("code"));
                json.put("name", map.get("name"));
                json.put("sex", map.get("sex"));
                json.put("idcard", map.get("idcard"));
                json.put("age", IdCardUtil.getAgeForIdcard(map.get("idcard") != null ? String.valueOf(map.get("idcard")) : ""));
                json.put("photo", map.get("photo"));
                json.put("mobile", map.get("mobile"));
                if (type == 2) {
                    json.put("level", map.get("level"));
                }
            }
            list.put(json);
        }
        return list;
    }
    /**
     * 获取最近联系的讨论组或团队群聊
     *
     * @param doctor 医生
     * @return
     */
    public JSONArray getRecentGroupImList(String doctor) {
        JSONArray list = new JSONArray();
        JSONArray imList = new JSONArray();
        for (int i = 0; i < imList.length(); i++) {
            JSONObject im = imList.getJSONObject(i);
            JSONObject json = new JSONObject();
            String sqlG = "";
            String sqlP = "select code,name,photo,sex,idcard,mobile,level from wlyy_doctor where code = ? ";
            Map<String, Object> map = jdbcTemplate.queryForMap(sqlP, new Object[]{im.get("")});
            if (map != null) {
                json.put("code", map.get("code"));
                json.put("name", map.get("name"));
                json.put("sex", map.get("sex"));
                json.put("idcard", map.get("idcard"));
                json.put("age", IdCardUtil.getAgeForIdcard(map.get("idcard") != null ? String.valueOf(map.get("idcard")) : ""));
                json.put("photo", map.get("photo"));
                json.put("mobile", map.get("mobile"));
                json.put("level", map.get("level"));
            }
            list.put(json);
        }
        return list;
    }
    /**
     * IM搜索
     *
     * @param doctor     医生
     * @param type       搜索类型 1:居民 2: 医生
     * @param searchType 搜索类型 1:居民 2:居民聊天记录 3:医生 4:群聊 5:医生聊天记录
     * @param page       第几页
     * @param pagesize   页大小
     * @return
     */
    public JSONObject searchIm(String doctor, String filter, int type, int searchType, int page, int pagesize) {
        JSONObject result = new JSONObject();
        if (type == 1) {
            if (searchType == -1 || searchType == 1) {
                result.put("patient", searchPatients(filter, doctor, page, pagesize));
            }
            if (searchType == -1 || searchType == 2) {
                //result.put("patientChatRecord", searchPatients(filter, doctor, page, pagesize));
            }
        } else {
            if (searchType == -1 || searchType == 3) {
                result.put("doctor", searchDoctors(filter, page, pagesize));
            }
            if (searchType == -1 || searchType == 4) {
                result.put("groupChat", searchDoctorGroupChat(filter, doctor, page, pagesize));
            }
            if (searchType == -1 || searchType == 5) {
                //result.put("doctorChatRecord", searchPatients(filter, doctor, page, pagesize));
            }
        }
        return result;
    }
    /**
     * 搜索医生签约患者
     *
     * @param filter 搜索关键字
     * @param doctor 医生
     * @return
     */
    public JSONArray searchPatients(String filter, String doctor, int page, int pagesize) {
        JSONArray reArray = new JSONArray();
        int start = page * pagesize;
        int size = pagesize;
        String sql = "select distinct t.* from (" +
                " select " +
                "     f.patient " +
                "     ,f.name " +
                "     ,f.openid " +
                "     ,f.admin_team_code " +
                "     ,p.sex " +
                "     ,p.idcard " +
                "     ,p.photo " +
                " from " +
                "     wlyy_sign_family f,wlyy_patient p " +
                " where " +
                "      f.patient = p.code and f.doctor = ? and f.status > 0 and f.name like ? " +
                " union all " +
                "select " +
                "     f1.patient " +
                "     ,f1.name " +
                "     ,f1.openid " +
                "     ,f1.admin_team_code " +
                "     ,p1.sex " +
                "     ,p1.idcard " +
                "     ,p1.photo " +
                " from " +
                "     wlyy_sign_family f1,wlyy_patient p1" +
                " where " +
                "     f1.patient = p1.code and f1.doctor_health = ? and f1.status > 0 and f1.name like ? " +
                ") t  limit " + start + "," + size;
        List<Map<String, Object>> result = jdbcTemplate.queryForList(sql, new Object[]{doctor,
                "%" + filter + "%", doctor, "%" + filter + "%"});
        if (result != null && result.size() > 0) {
            for (Map<String, Object> p : result) {
                JSONObject pJson = new JSONObject();
                pJson.put("code", p.get("patient"));
                pJson.put("name", p.get("name") != null ? p.get("name") : "");
                pJson.put("openid", p.get("openid") != null ? p.get("openid") : "");
                pJson.put("adminTeamCode", p.get("admin_team_code") != null ? p.get("admin_team_code") : "");
                pJson.put("sex", p.get("sex") != null ? p.get("sex") : "");
                pJson.put("age", p.get("idcard") != null ? IdCardUtil.getAgeForIdcard(String.valueOf(p.get("idcard"))) : "");
                pJson.put("photo", p.get("photo") != null ? p.get("photo") : "");
                pJson.put("idcard", p.get("idcard") != null ? p.get("idcard") : "");
                reArray.put(pJson);
            }
        }
        return reArray;
    }
    /**
     * 搜索医生与居民聊天记录
     *
     * @param filter   搜索关键字
     * @param doctor   医生
     * @param page     第几页
     * @param pagesize 页大小
     * @return
     */
    public JSONArray searchPatientRecords(String filter, String doctor, int page, int pagesize) {
        return null;
    }
    /**
     * 搜索医生
     *
     * @param filter   搜索关键字
     * @param page     第几页
     * @param pagesize 页大小
     * @return
     */
    public JSONArray searchDoctors(String filter, int page, int pagesize) {
        String sql = "select * from wlyy_doctor where name like ? limit " + page * pagesize + "," + pagesize;
        List<Doctor> doctorList = jdbcTemplate.query(sql, new Object[]{"%" + filter + "%"},
                new BeanPropertyRowMapper(Doctor.class));
        JSONArray docArray = new JSONArray();
        if (doctorList != null) {
            for (Doctor doc : doctorList) {
                JSONObject docJson = new JSONObject();
                docJson.put("code", doc.getCode());
                docJson.put("name", doc.getName());
                docJson.put("sex", doc.getSex());
                docJson.put("age", IdCardUtil.getAgeForIdcard(doc.getIdcard()));
                docJson.put("idcard", doc.getIdcard());
                docJson.put("mobile", doc.getMobile());
                docJson.put("level", doc.getLevel());
                docJson.put("photo", doc.getPhoto());
                docJson.put("hospital", doc.getHospital());
                docJson.put("hospitalName", doc.getHospitalName());
                docArray.put(docJson);
            }
        }
        return docArray;
    }
    /**
     * 搜索医生群聊
     *
     * @param filter   搜索关键字
     * @param doctor   医生
     * @param page     第几页
     * @param pagesize 页大小
     * @return
     */
    public JSONArray searchDoctorGroupChat(String filter, String doctor, int page, int pagesize) {
        JSONArray result = new JSONArray();
        String sqlTalkGroup = "select g.code,'1' type from " +
                " (select " +
                "   gi.* " +
                " from" +
                "  wlyy_talk_group_member mi " +
                "  ,wlyy_talk_group gi " +
                " where mi.group_code = gi.code and mi.member_code = ?) g " +
                " left join wlyy_talk_group_member m on g.code = m.group_code" +
                " where g.type = 2 and (g.name like ? or m.member_name like ?) ";
        String sqlTeam = "select cast(t.id as CHAR) code,'2' type from " +
                " (select " +
                "   ti.* " +
                " from" +
                "  wlyy_admin_team_member mii " +
                "  ,wlyy_admin_team ti " +
                " where mii.team_id = ti.id and mii.doctor_code = ?) t " +
                " left join wlyy_admin_team_member mm on t.id = mm.team_id join wlyy_doctor d" +
                " on mm.doctor_code = d.code where t.name like ? or d.name like ? ";
        String sql = "select DISTINCT o.* from (" + sqlTalkGroup + " union all "
                + sqlTeam + ") o limit " + page * pagesize + "," + pagesize;
        List<Map<String, Object>> mapList = jdbcTemplate.queryForList(sql, new Object[]{doctor, "%" + filter + "%",
                "%" + filter + "%", doctor, "%" + filter + "%", "%" + filter + "%"});
        if (mapList != null) {
            for (Map<String, Object> map : mapList) {
                JSONObject json = new JSONObject();
                List<Doctor> members = null;
                if (String.valueOf(map.get("type")).equals("1")) {
                    WlyyTalkGroup group = discussionGroupDao.findByCode(map.get("code").toString());
                    String sqlDoc = "select d.* from" +
                            " wlyy_talk_group_member m" +
                            " join wlyy_doctor d" +
                            " on m.memebr_code = d.code" +
                            " where m.group_code = ? ";
                    members = jdbcTemplate.query(sqlDoc, new Object[]{map.get("code").toString()},
                            new BeanPropertyRowMapper(Doctor.class));
                    json.put("code", group.getCode());
                    json.put("name", group.getName());
                    json.put("type", "1");
                } else {
                    AdminTeam team = teamService.getTeam(Long.valueOf(map.get("code").toString()));
                    members = teamService.getMembers(Long.valueOf(map.get("code").toString()));
                    json.put("code", String.valueOf(team.getId()));
                    json.put("name", team.getName());
                    json.put("type", "2");
                }
                JSONArray mArray = new JSONArray();
                if (members != null) {
                    for (Doctor doc : members) {
                        JSONObject docJson = new JSONObject();
                        docJson.put("code", doc.getCode());
                        docJson.put("name", doc.getName());
                        docJson.put("sex", doc.getSex());
                        docJson.put("age", IdCardUtil.getAgeForIdcard(doc.getIdcard()));
                        docJson.put("idcard", doc.getIdcard());
                        docJson.put("mobile", doc.getMobile());
                        docJson.put("level", doc.getLevel());
                        docJson.put("photo", doc.getPhoto());
                        docJson.put("hospital", doc.getHospital());
                        docJson.put("hospitalName", doc.getHospitalName());
                        mArray.put(docJson);
                    }
                }
                json.put("members", mArray);
                result.put(json);
            }
        }
        return result;
    }
    /**
     * 搜索医生聊天记录
     *
     * @param filter   搜索关键字
     * @param doctor   医生
     * @param page     第几页
     * @param pagesize 页大小
     * @return
     */
    public JSONArray searchDoctorRecords(String filter, String doctor, int page, int pagesize) {
        return null;
    }
    public List<WlyyTalkGroup> findTalkGroupByConsult(String consult) {
        return discussionGroupDao.findByConsult(consult);
    }
    public ConsultTeam findConsultByGroup(String groupCode) {
        WlyyTalkGroup w = discussionGroupDao.findByCode(groupCode);
        return consultTeamDao.findByConsult(w.getConsultCode());

+ 6 - 11
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/common/account/DoctorService.java

@ -78,31 +78,26 @@ public class DoctorService extends TokenService {
	}
	public Page<Doctor> famousDoctorList(String name, int page, int pagesize) {
		// 分页信息
		Pageable pageRequest = new PageRequest(page-1, pagesize);
	public List<Doctor> famousDoctorList(String name) {
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		if (StringUtils.isNoneEmpty(name)) {
			name="%"+name+"%";
			return doctorDao.famousDoctorList(sdf.format(new Date()),name, pageRequest);
			return doctorDao.famousDoctorList(sdf.format(new Date()),name);
		}else{
			return doctorDao.famousDoctorList(sdf.format(new Date()), pageRequest);
			return doctorDao.famousDoctorList(sdf.format(new Date()));
		}
	}
	public Page<Doctor> getDoctorFamousDoctorList(String name, int page, int pagesize) {
		// 分页信息
		Pageable pageRequest = new PageRequest(page-1, pagesize);
	public List<Doctor> getDoctorFamousDoctorList(String name) {
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		if (StringUtils.isNoneEmpty(name)) {
			name="%"+name+"%";
			return doctorDao.doctorFamousDoctorList(name, pageRequest);
			return doctorDao.doctorFamousDoctorList(name);
		}else{
			return doctorDao.doctorFamousDoctorList(pageRequest);
			return doctorDao.doctorFamousDoctorList();
		}
	}

+ 2 - 4
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/consult/DoctorConsultController.java

@ -257,12 +257,10 @@ public class DoctorConsultController extends WeixinBaseController {
    @RequestMapping(value = "famousDoctorList")
    @ResponseBody
    public String famousDoctorList(
            @RequestParam(required = false) String name,
            int page,
            int pagesize) {
            @RequestParam(required = false) String name) {
        try {
            JSONArray array = new JSONArray();
            Page<Doctor> list = doctorService.getDoctorFamousDoctorList(name, page, pagesize);
            List<Doctor> list = doctorService.getDoctorFamousDoctorList(name);
            if (list != null) {
                for (Doctor doctor : list) {
                    if (doctor == null) {

+ 0 - 132
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/discussion/DoctorDiscussionGroupController.java

@ -831,136 +831,4 @@ public class DoctorDiscussionGroupController extends BaseController {
        }
    }
    /**
     * 获取医生一对一聊天
     *
     * @param doctorName
     * @return
     */
    @Deprecated
    @RequestMapping(value = "/one_to_one_im", method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String getOneToOneIm(@RequestParam(required = false) String doctorName
            , @RequestParam(required = false) Integer page
            , @RequestParam(required = false) Integer pagesize) {
        try {
            JSONArray result = talkGroupService.getOneToOneIm(getUID(), doctorName);
            if (page != null && pagesize != null) {
                int from = (page - 1) * pagesize;
                int end = from + pagesize;
                JSONArray pageResult = new JSONArray();
                if (result != null) {
                    for (int i = from; i < result.length(); i++) {
                        if (i < end) {
                            pageResult.put(result.getJSONObject(i));
                        }
                    }
                }
                return write(200, "查询成功", "data", pageResult);
            } else {
                return write(200, "查询成功", "data", result);
            }
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "查询失败");
        }
    }
    /**
     * 医生转发对象搜索
     *
     * @param filter 搜索字段
     * @return
     */
    @RequestMapping(value = "/doctor_im_search", method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String imSearch(@RequestParam(required = true) String filter) {
        try {
            if (StringUtils.isEmpty(filter)) {
                return error(-1, "搜索字段不能为空");
            }
            JSONObject result = talkGroupService.searchImDoctor(getUID(), filter);
            return write(200, "查询成功", "data", result);
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "查询失败");
        }
    }
    /**
     * 查询医生与居民、医生聊天列表
     *
     * @param type 类型: 1居民  2医生
     * @return
     */
    @RequestMapping(value = "/im_list", method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String getImList(@RequestParam(required = true) int type,
                            @RequestParam(required = true) int page,
                            @RequestParam(required = true) int pagesize) {
        try {
            if (type != 1 && type != 2) {
                return error(-1, "类型错误");
            }
            page = page > 0 ? page - 1 : 0;
            JSONObject result = talkGroupService.getImList(getUID(), type, page, pagesize);
            return write(200, "查询成功", "data", result);
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "查询失败");
        }
    }
    /**
     * 查询医生最近的联系人
     *
     * @param type 类型: 1居民  2医生
     * @return
     */
    @RequestMapping(value = "/recent_im_list", method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String getRecentImList(@RequestParam(required = true) int type) {
        try {
            if (type != 1 && type != 2) {
                return error(-1, "类型错误");
            }
            JSONObject result = talkGroupService.getRecentImList(getUID(), type);
            return write(200, "查询成功", "data", result);
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "查询失败");
        }
    }
    /**
     * 搜索IM
     *
     * @param filter     搜索条件
     * @param type       类型  1:居民 2:医生
     * @param searchType 搜索类型 1:居民 2:居民聊天记录 3:医生 4:求助 5:医生聊天记录
     * @param page       第几页
     * @param pagesize   页大小
     * @return
     */
    @RequestMapping(value = "/search_im", method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String searchIm(@RequestParam(required = true) String filter,
                           @RequestParam(required = true) int type,
                           @RequestParam(required = false, defaultValue = "-1") int searchType,
                           @RequestParam(required = true) int page,
                           @RequestParam(required = true) int pagesize) {
        try {
            page = page > 0 ? page - 1 : 0;
            JSONObject result = talkGroupService.searchIm(getUID(), filter,
                    type, searchType, page, pagesize);
            return write(200, "搜索成功", "data", result);
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "搜索失败");
        }
    }
}

+ 6 - 4
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/sign/DoctorSignController.java

@ -257,10 +257,12 @@ public class DoctorSignController extends BaseController {
                    json.put("sex", temp.get("sex"));
                    if (status == 5) {
                        String epTime = "";
                        try {
                            epTime = redisTemplate.opsForValue().get("expenses:remind:" + temp.get("patient"));
                        } catch (Exception e) {
                            e.printStackTrace();
                        if(redisTemplate.isExposeConnection()) {
                            try {
                                epTime = redisTemplate.opsForValue().get("expenses:remind:" + temp.get("patient"));
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                        if (StringUtils.isEmpty(epTime)) {
                            json.put("expensesRemindStatus", 0);

+ 2 - 4
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/consult/ConsultController.java

@ -413,12 +413,10 @@ public class ConsultController extends WeixinBaseController {
    @RequestMapping(value = "famousDoctorList")
    @ResponseBody
    public String famousDoctorList(
            @RequestParam(required = false) String name,
            int page,
            int pagesize) {
            @RequestParam(required = false) String name) {
        try {
            JSONArray array = new JSONArray();
            Page<Doctor> list = doctorService.famousDoctorList(name, page, pagesize);
            List<Doctor> list = doctorService.famousDoctorList(name);
            if (list != null) {
                for (Doctor doctor : list) {
                    if (doctor == null) {