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

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

пре 8 година
родитељ
комит
04ae75caae
25 измењених фајлова са 1715 додато и 144 уклоњено
  1. 6 6
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/config/war/ServletInitializer.java
  2. 32 0
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/controller/JobController.java
  3. 23 0
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/dao/DoctorWorkTimeDao.java
  4. 40 0
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/dao/DoctorWorkWeekDao.java
  5. 14 15
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/check/ReportAllLogJob.java
  6. 123 0
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/message/NoticeJob.java
  7. 116 0
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/model/doctor/WlyyDoctorWorkTime.java
  8. 70 0
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/model/doctor/WlyyDoctorWorkWeek.java
  9. 306 0
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/service/DoctorWorkTimeService.java
  10. 17 0
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/service/JobService.java
  11. 2 5
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/util/IdCardUtil.java
  12. 9 0
      patient-co-wlyy/src/main/java/com/yihu/wlyy/entity/doctor/profile/Doctor.java
  13. 3 0
      patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/doctor/DoctorDao.java
  14. 4 0
      patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/doctor/DoctorTeamMemberDao.java
  15. 29 13
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/account/DoctorInfoService.java
  16. 38 0
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/hospital/HospitalDeptService.java
  17. 50 0
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/hospital/HospitalService.java
  18. 525 7
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/talk/TalkGroupService.java
  19. 22 5
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/team/DrHealthTeamService.java
  20. 33 3
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/BaseController.java
  21. 100 37
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/account/DoctorController.java
  22. 100 20
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/discussion/DoctorDiscussionGroupController.java
  23. 0 2
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/patient/SignPatientLabelInfoController.java
  24. 0 31
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/team/AdminTeamController.java
  25. 53 0
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/team/SignTeamController.java

+ 6 - 6
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/config/war/ServletInitializer.java

@ -7,9 +7,9 @@ import org.springframework.boot.context.web.SpringBootServletInitializer;
/**
 * Created by Administrator on 2016.10.14.
 */
public class ServletInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
}
//public class ServletInitializer extends SpringBootServletInitializer {
//    @Override
//    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
//        return application.sources(Application.class);
//    }
//}

+ 32 - 0
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/controller/JobController.java

@ -435,4 +435,36 @@ public class JobController extends BaseController {
            return invalidUserException(e, -1, "启动失败:" + e.getMessage());
        }
    }
    /**
     * 启动通知任务
     *
     * @return
     */
    @ApiOperation(value = "启动通知任务")
    @RequestMapping(value = "startNoticeJob", method = RequestMethod.GET)
    public String startNoticeJob() {
        try {
            jobService.startNoticeJob();
            return success("启动成功!");
        } catch (Exception e) {
            error(e);
            return invalidUserException(e, -1, "启动失败:" + e.getMessage());
        }
    }
    /**
     * 启动通知任务
     *
     * @return
     */
    @ApiOperation(value = "停止通知任务")
    @RequestMapping(value = "stopNoticeJob", method = RequestMethod.GET)
    public String stopNoticeJob() {
        try {
            jobService.stopNoticeJob();
            return success("启动成功!");
        } catch (Exception e) {
            error(e);
            return invalidUserException(e, -1, "启动失败:" + e.getMessage());
        }
    }
}

+ 23 - 0
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/dao/DoctorWorkTimeDao.java

@ -0,0 +1,23 @@
package com.yihu.wlyy.statistics.dao;
import com.yihu.wlyy.statistics.model.doctor.WlyyDoctorWorkTime;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by lyr on 2016/08/19.
 */
public interface DoctorWorkTimeDao extends PagingAndSortingRepository<WlyyDoctorWorkTime, Long>, JpaSpecificationExecutor<WlyyDoctorWorkTime> {
    /**
     * 查询医生工作时间
     *
     * @param doctor
     * @return
     */
    @Query("select a from WlyyDoctorWorkTime a where a.doctor = ?1")
    WlyyDoctorWorkTime findDoctorWorkTime(String doctor);
}

+ 40 - 0
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/dao/DoctorWorkWeekDao.java

@ -0,0 +1,40 @@
package com.yihu.wlyy.statistics.dao;
import com.yihu.wlyy.statistics.model.doctor.WlyyDoctorWorkWeek;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by lyr on 2016/08/19.
 */
public interface DoctorWorkWeekDao extends PagingAndSortingRepository<WlyyDoctorWorkWeek, Long>, JpaSpecificationExecutor<WlyyDoctorWorkWeek> {
    /**
     * 查询医生排班列表
     *
     * @param doctor
     * @return
     */
    @Query("select a from WlyyDoctorWorkWeek a where a.doctor = ?1")
    List<WlyyDoctorWorkWeek> findDoctorWorkWeeks(String doctor);
    /**
     * 查询医生某天排班信息
     *
     * @param doctor
     * @param week
     * @return
     */
    @Query("select a from WlyyDoctorWorkWeek a where a.doctor = ?1 and a.week = ?2")
    WlyyDoctorWorkWeek findDoctorWorkWeek(String doctor, String week);
    /**
     * 删除医生的排班信息
     *
     * @param doctor
     */
    void deleteByDoctor(String doctor);
}

+ 14 - 15
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/check/ReportAllLogJob.java

@ -116,36 +116,35 @@ public class ReportAllLogJob implements Job {
            //系统患者总共登录成功的次数
            sqlCount= " select count(id) from wlyy_login_log where type=1 and user_type=1 ";
            count=jdbcTemplate.queryForObject(sqlCount,Integer.class);
            sb.append("<tr><td>截止到"+date+" 患者总共登录成功次数</td><td>"+count+"个</td></tr>");
            sb.append("<tr><td>截止到"+date+" 患者总共登录成功次数</td><td>"+count+"次</td></tr>");
            //系统患者总共登录失败的次数
            sqlCount= " select count(id) from wlyy_login_log where type=2 and user_type=1 ";
            count=jdbcTemplate.queryForObject(sqlCount,Integer.class);
            sb.append("<tr><td>截止到"+date+" 患者总共登录失败次数</td><td>"+count+"个</td></tr>");
            //系统患者昨天登录成功的次数
            sqlCount= " select count(id) from wlyy_login_log where type=1 and user_type=1 and  create_time<= '"+getYesterday(-1)+" 23:59:59 ' and  create_time>= '"+getYesterday(-1)+" 00:00:00 '";
            count=jdbcTemplate.queryForObject(sqlCount,Integer.class);
            sb.append("<tr><td>"+date+" 患者登录成功次数</td><td>"+count+"个</td></tr>");
            //系统患者昨天登录失败的次数
            sqlCount= " select count(id) from wlyy_login_log where type=2 and user_type=1 and  create_time<= '"+getYesterday(-1)+" 23:59:59 ' and  create_time>= '"+getYesterday(-1)+" 00:00:00 '";
            count=jdbcTemplate.queryForObject(sqlCount,Integer.class);
            sb.append("<tr><td>"+date+" 患者登录失败次数</td><td>"+count+"个</td></tr>");
            sb.append("<tr><td>截止到"+date+" 患者总共登录失败次数</td><td>"+count+"次</td></tr>");
            //系统医生总共登录成功的次数
            sqlCount= " select count(id) from wlyy_login_log where type=1 and user_type=2 ";
            count=jdbcTemplate.queryForObject(sqlCount,Integer.class);
            sb.append("<tr><td>截止到"+date+" 医生总共登录成功次数</td><td>"+count+"个</td></tr>");
            sb.append("<tr><td>截止到"+date+" 医生总共登录成功次数</td><td>"+count+"次</td></tr>");
            //系统医生总共登录失败的次数
            sqlCount= " select count(id) from wlyy_login_log where type=2 and user_type=2 ";
            count=jdbcTemplate.queryForObject(sqlCount,Integer.class);
            sb.append("<tr><td>截止到"+date+" 医生总共登录失败次数</td><td>"+count+"个</td></tr>");
            sb.append("<tr><td>截止到"+date+" 医生总共登录失败次数</td><td>"+count+"次</td></tr>");
            //系统患者昨天登录成功的次数
            sqlCount= " select count(id) from wlyy_login_log where type=1 and user_type=1 and  create_time<= '"+getYesterday(-1)+" 23:59:59 ' and  create_time>= '"+getYesterday(-1)+" 00:00:00 '";
            count=jdbcTemplate.queryForObject(sqlCount,Integer.class);
            sb.append("<tr><td>"+date+" 患者登录成功次数</td><td>"+count+"次</td></tr>");
            //系统患者昨天登录失败的次数
            sqlCount= " select count(id) from wlyy_login_log where type=2 and user_type=1 and  create_time<= '"+getYesterday(-1)+" 23:59:59 ' and  create_time>= '"+getYesterday(-1)+" 00:00:00 '";
            count=jdbcTemplate.queryForObject(sqlCount,Integer.class);
            sb.append("<tr><td>"+date+" 患者登录失败次数</td><td>"+count+"次</td></tr>");
            //系统医生昨天登录成功的次数
            sqlCount= " select count(id) from wlyy_login_log where type=1 and user_type=2 and  create_time<= '"+getYesterday(-1)+" 23:59:59 ' and  create_time>= '"+getYesterday(-1)+" 00:00:00 '";
            count=jdbcTemplate.queryForObject(sqlCount,Integer.class);
            sb.append("<tr><td>"+date+" 医生登录成功次数</td><td>"+count+"个</td></tr>");
            sb.append("<tr><td>"+date+" 医生登录成功次数</td><td>"+count+"次</td></tr>");
            //系统医生昨天登录失败的次数
            sqlCount= " select count(id) from wlyy_login_log where type=2 and user_type=2 and  create_time<= '"+getYesterday(-1)+" 23:59:59 ' and  create_time>= '"+getYesterday(-1)+" 00:00:00 '";
            count=jdbcTemplate.queryForObject(sqlCount,Integer.class);
            sb.append("<tr><td>"+date+" 医生登录失败次数</td><td>"+count+"个</td></tr>");
            sb.append("<tr><td>"+date+" 医生登录失败次数</td><td>"+count+"次</td></tr>");
            //今天实时统计执行的次数
            sqlCount= " select count(a.id) from wlyy_job_log a where a.job_id=11 and a.job_start_time>= '"+getYesterday(-1)+ " 00:00:00'and a.job_start_time<=  '"+getYesterday(-1)+" 23:59:59 '";

+ 123 - 0
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/message/NoticeJob.java

@ -0,0 +1,123 @@
package com.yihu.wlyy.statistics.job.message;
import com.yihu.wlyy.statistics.dao.DoctorDao;
import com.yihu.wlyy.statistics.dao.QuartzJobLogDao;
import com.yihu.wlyy.statistics.job.business.QuartzHelper;
import com.yihu.wlyy.statistics.model.doctor.Doctor;
import com.yihu.wlyy.statistics.model.job.QuartzJobLog;
import com.yihu.wlyy.statistics.service.DoctorWorkTimeService;
import com.yihu.wlyy.statistics.task.PushMsgTask;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by Administrator on 2016/11/7.
 */
@Component
@Scope("prototype")
public class NoticeJob implements Job {
    public static String jobKey = "Notice_JOB";
    public static String jobCron = "0 0 9,15,20 * * ?"; //每天9点,15点,20 点执行一次
    private static String[] noticeKey = {"no", "NO_ZX", "NO_QY", "NO_JKZD"};
    private static String[] noticeTitle = {"no", "咨询消息", "签约消息", "体征指标"};
    private static String[] noticeContent = {"no", "您有[SIZE]条新的咨询消息", "您有[SIZE]条新的签约消息", "您有[SIZE]条新的体征指标"};
    @Autowired
    private DoctorWorkTimeService doctorWorkTimeService;
    @Autowired
    private QuartzJobLogDao dbStorage;
    @Autowired
    private DoctorDao doctorDao;
    @Transactional
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        //新建任务日志对象
        QuartzJobLog quartzJobLog = new QuartzJobLog();
        quartzJobLog.setJobStartTime(new Date());
        quartzJobLog.setJobId(jobKey);
        quartzJobLog.setJobName(jobKey);
        try {
            List<Doctor> doctors = doctorDao.findAllDoctors();
            //得到所有未发送的医生的通知
            Map<String, Map<String, Integer>> maps = new HashMap<>();
            //发送通知
            for (Doctor doctor : doctors) {
                //判断医生是不是在工作时间内
                if ("1".equals(doctorWorkTimeService.isDoctorWorking(doctor.getCode(), -1).get("status"))) {
                    Map<String,Integer> map=new HashMap<>();
                    //得到医生多少条咨询消息
                    Integer size=getDoctorMesssageCount(doctor.getCode(),1);
                    addData(map, size, "1");
                    //得到医生多少条签约消息
                    size=getDoctorMesssageCount(doctor.getCode(),2);
                    addData(map, size, "2");
                    //得到医生多少条体征消息
                    size=getDoctorMesssageCount(doctor.getCode(),3);
                    addData(map, size, "3");
                    if(map.size()>0){
                        maps.put(doctor.getCode(),map);
                    }
                }
            }
            JSONArray jsonArray = new JSONArray();
            //发送通知
            for (Map.Entry<String, Map<String, Integer>> entry : maps.entrySet()) {
                for (Map.Entry<String, Integer> entry1 : entry.getValue().entrySet()) {
                    // 异常通知
                    JSONObject json = new JSONObject();
                    json.put("receiver", entry.getKey());
                    json.put("type", noticeKey[Integer.valueOf(entry1.getKey())]);
                    json.put("title", noticeTitle[Integer.valueOf(entry1.getKey())]);
                    json.put("msg", noticeContent[Integer.valueOf(entry1.getKey())].replace("[SIZE]", entry1.getValue() + ""));
                    json.put("data", "");
                    jsonArray.add(json);
                }
            }
            // 推送消息给医生
            PushMsgTask.getInstance().put(jsonArray);
            //保存日志
            quartzJobLog.setJobEndTime(new Date());
            quartzJobLog.setJobContent("通知成功");
            quartzJobLog.setJobType("1");
            dbStorage.save(quartzJobLog);
        } catch (Exception e) {
            //保存日志
            quartzJobLog.setJobEndTime(new Date());
            quartzJobLog.setJobContent("通知失败");
            quartzJobLog.setJobType("0");
            dbStorage.save(quartzJobLog);
            e.printStackTrace();
        }
    }
    private void addData(Map<String, Integer> map, Integer size, String key) {
        if (size > 0) {
            map.put(key, size);
        }
    }
    /**
     * 得到医生的未读数目
     * @param code 医生code
     * @param type 1是咨询 2个签约 3是体征
     * @return
     */
    private Integer getDoctorMesssageCount(String code, int type) {
        return 0;
    }
}

+ 116 - 0
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/model/doctor/WlyyDoctorWorkTime.java

@ -0,0 +1,116 @@
package com.yihu.wlyy.statistics.model.doctor;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.wlyy.statistics.model.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by lyr on 2016/08/19.
 */
@Entity
@Table(name = "wlyy_doctor_work_time")
public class WlyyDoctorWorkTime extends IdEntity {
    // 医生标识
    private String doctor;
    // 医生姓名
    private String doctorName;
    // 接收咨询 0不接受 1接受
    private String receiveConsult;
    // 名医咨询次数
    private Integer famousConsultTimes;
    // 上午开始时间
    private String morningBegin;
    // 上午结束时间
    private String morningEnd;
    // 下午开始时间
    private String afternoonBegin;
    // 下午结束时间
    private String afternoonEnd;
    // 晚上开始时间
    private String nightBegin;
    // 晚上结束时间
    private String nightEnd;
    // 更新时间
    private Date czrq;
    public String getDoctor() {
        return doctor;
    }
    public void setDoctor(String doctor) {
        this.doctor = doctor;
    }
    public String getDoctorName() {
        return doctorName;
    }
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
    public String getReceiveConsult() {
        return receiveConsult;
    }
    public void setReceiveConsult(String receiveConsult) {
        this.receiveConsult = receiveConsult;
    }
    public Integer getFamousConsultTimes() {
        return famousConsultTimes;
    }
    public void setFamousConsultTimes(Integer famousConsultTimes) {
        this.famousConsultTimes = famousConsultTimes;
    }
    public String getMorningBegin() {
        return morningBegin;
    }
    public void setMorningBegin(String morningBegin) {
        this.morningBegin = morningBegin;
    }
    public String getMorningEnd() {
        return morningEnd;
    }
    public void setMorningEnd(String morningEnd) {
        this.morningEnd = morningEnd;
    }
    public String getAfternoonBegin() {
        return afternoonBegin;
    }
    public void setAfternoonBegin(String afternoonBegin) {
        this.afternoonBegin = afternoonBegin;
    }
    public String getAfternoonEnd() {
        return afternoonEnd;
    }
    public void setAfternoonEnd(String afternoonEnd) {
        this.afternoonEnd = afternoonEnd;
    }
    public String getNightBegin() {
        return nightBegin;
    }
    public void setNightBegin(String nightBegin) {
        this.nightBegin = nightBegin;
    }
    public String getNightEnd() {
        return nightEnd;
    }
    public void setNightEnd(String nightEnd) {
        this.nightEnd = nightEnd;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getCzrq() {
        return czrq;
    }
    public void setCzrq(Date czrq) {
        this.czrq = czrq;
    }
}

+ 70 - 0
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/model/doctor/WlyyDoctorWorkWeek.java

@ -0,0 +1,70 @@
package com.yihu.wlyy.statistics.model.doctor;
import com.yihu.wlyy.statistics.model.IdEntity;
import javax.persistence.Entity;
import java.util.Date;
/**
 * Created by lyr on 2016/08/19.
 */
@Entity
public class WlyyDoctorWorkWeek extends IdEntity {
    private String doctor;
    private String doctorName;
    private String week;
    private String morning;
    private String afternoon;
    private String night;
    private Date czrq;
    public String getDoctor() {
        return doctor;
    }
    public void setDoctor(String doctor) {
        this.doctor = doctor;
    }
    public String getDoctorName() {
        return doctorName;
    }
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
    public String getWeek() {
        return week;
    }
    public void setWeek(String week) {
        this.week = week;
    }
    public String getMorning() {
        return morning;
    }
    public void setMorning(String morning) {
        this.morning = morning;
    }
    public String getAfternoon() {
        return afternoon;
    }
    public void setAfternoon(String afternoon) {
        this.afternoon = afternoon;
    }
    public String getNight() {
        return night;
    }
    public void setNight(String night) {
        this.night = night;
    }
    public Date getCzrq() {
        return czrq;
    }
    public void setCzrq(Date czrq) {
        this.czrq = czrq;
    }
}

+ 306 - 0
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/service/DoctorWorkTimeService.java

@ -0,0 +1,306 @@
package com.yihu.wlyy.statistics.service;
import com.yihu.wlyy.statistics.dao.DoctorDao;
import com.yihu.wlyy.statistics.dao.DoctorWorkTimeDao;
import com.yihu.wlyy.statistics.dao.DoctorWorkWeekDao;
import com.yihu.wlyy.statistics.model.doctor.Doctor;
import com.yihu.wlyy.statistics.model.doctor.WlyyDoctorWorkTime;
import com.yihu.wlyy.statistics.model.doctor.WlyyDoctorWorkWeek;
import com.yihu.wlyy.statistics.util.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * 医生工作排班
 * <p>
 * Created by lyr on 2016/08/19.
 */
@Service
@Transactional
public class DoctorWorkTimeService {
    static Object obj = new Object();
    @Autowired
    private DoctorWorkTimeDao doctorWorkTimeDao;
    @Autowired
    private DoctorWorkWeekDao doctorWorkWeekDao;
    @Autowired
    private DoctorDao doctorDao;
    /**
     * 查询医生某天工作时间
     *
     * @param doctor 医生标识
     * @param week   某天
     * @return
     */
    public JSONObject findDoctorWeekWorkTime(String doctor, String week) throws Exception {
        JSONObject result = new JSONObject();
        WlyyDoctorWorkTime workTime = doctorWorkTimeDao.findDoctorWorkTime(doctor);
        WlyyDoctorWorkWeek workWeek = doctorWorkWeekDao.findDoctorWorkWeek(doctor, week);
        result.put("workTime", workTime != null ? new JSONObject(workTime) : "");
        result.put("workWeek", workWeek != null ? new JSONObject(workWeek) : "");
        return result;
    }
    /**
     * 查询医生某天工作时间
     *
     * @param doctor 医生标识
     * @param week   某天
     * @return
     */
    public Map<String, Object> findDoctorWeekWork(String doctor, String week) throws Exception {
        Map<String, Object> map = new HashMap<>();
        Doctor doc = doctorDao.findByCode(doctor);
        if (doc == null) {
            throw new Exception("doctor-worktime-error:doctor not exist");
        }
        WlyyDoctorWorkTime workTime = doctorWorkTimeDao.findDoctorWorkTime(doctor);
        WlyyDoctorWorkWeek workWeek = doctorWorkWeekDao.findDoctorWorkWeek(doctor, week);
        map.put("workTime", workTime);
        map.put("workWeek", workWeek);
        return map;
    }
    /**
     * 医生是否在工作
     *
     * @param doctor 医生
     * @return
     */
    public JSONObject isDoctorWorking(String doctor, Integer week) throws Exception {
        JSONObject json = new JSONObject();
        Calendar calendar = Calendar.getInstance();
        if (week < 0) {
            week = calendar.get(Calendar.DAY_OF_WEEK) - 1;
            if (week == 0) {
                week = 7;
            }
        }
        // 医生工作时间设置
        Map<String, Object> result = findDoctorWeekWork(doctor, String.valueOf(week));
        if (result.get("workTime") == null) {
            // 医生未设置时,默认7*24小时工作
            json.put("status", "1");
            json.put("msg", "医生当前接受咨询");
        } else {
            WlyyDoctorWorkTime doctorWorkTime = (WlyyDoctorWorkTime) result.get("workTime");
            if (doctorWorkTime.getReceiveConsult().equals("0")) {
                // 医生设置不接受咨询
                json.put("status", "0");
                json.put("msg", "医生不接受咨询");
            } else {
                if (StringUtils.isEmpty(doctorWorkTime.getMorningBegin()) && StringUtils.isEmpty(doctorWorkTime.getMorningEnd())
                        && StringUtils.isEmpty(doctorWorkTime.getAfternoonBegin()) && StringUtils.isEmpty(doctorWorkTime.getAfternoonEnd())
                        && StringUtils.isEmpty(doctorWorkTime.getNightBegin()) && StringUtils.isEmpty(doctorWorkTime.getNightEnd())) {
                    // 医生未设置工作时间,默认7*24小时工作
                    json.put("status", "1");
                    json.put("msg", "医生当前接受咨询");
                } else {
                    if (result.get("workWeek") != null) {
                        // 当前工作日已设置工作时间
                        int flag = 0;
                        WlyyDoctorWorkTime workTime = (WlyyDoctorWorkTime) result.get("workTime");
                        WlyyDoctorWorkWeek workWeek = (WlyyDoctorWorkWeek) result.get("workWeek");
                        int hour = calendar.get(Calendar.HOUR_OF_DAY);
                        int minute = calendar.get(Calendar.MINUTE);
                        String current = (hour < 10 ? ("0" + hour) : hour) + ":" + (hour < 10 ? ("0" + minute) : minute);
                        // 早上
                        if (workWeek.getMorning().equals("1")) {
                            String currentStart = workTime.getMorningBegin();
                            String currentEnd = workTime.getMorningEnd();
                            if (currentStart.length() == 4) {
                                currentStart = "0" + currentStart;
                            }
                            if (currentEnd.length() == 4) {
                                currentEnd = "0" + currentEnd;
                            }
                            if (current.compareTo(currentStart) >= 0 &&
                                    current.compareTo(currentEnd) < 0) {
                                flag = 1;
                            }
                        }
                        // 下午
                        if (workWeek.getAfternoon().equals("1")) {
                            String currentStart = workTime.getAfternoonBegin();
                            String currentEnd = workTime.getAfternoonEnd();
                            if (currentStart.length() == 4) {
                                currentStart = "0" + currentStart;
                            }
                            if (currentEnd.length() == 4) {
                                currentEnd = "0" + currentEnd;
                            }
                            if (current.compareTo(currentStart) >= 0 &&
                                    current.compareTo(currentEnd) < 0) {
                                flag = 1;
                            }
                        }
                        // 晚上
                        if (workWeek.getNight().equals("1")) {
                            String currentStart = workTime.getNightBegin();
                            String currentEnd = workTime.getNightEnd();
                            if (currentStart.length() == 4) {
                                currentStart = "0" + currentStart;
                            }
                            if (currentEnd.length() == 4) {
                                currentEnd = "0" + currentEnd;
                            }
                            if (current.compareTo(currentStart) >= 0 &&
                                    current.compareTo(currentEnd) < 0) {
                                flag = 1;
                            }
                        }
                        if (flag == 1) {
                            json.put("status", "1");
                            json.put("msg", "医生当前接受咨询");
                        } else {
                            json.put("status", "2");
                            json.put("msg", "医生当前不在工作时间");
                        }
                    } else {
                        json.put("status", "2");
                        json.put("msg", "医生当前不在工作时间");
                    }
                }
            }
        }
        return json;
    }
    public Date getDoctorWeek(String doctor, Integer week) throws Exception {
        Date json = new Date();
        Calendar calendar = Calendar.getInstance();
        // 医生工作时间设置
        Map<String, Object> result = findDoctorWeekWork(doctor, String.valueOf(week));
        if (result.get("workTime") == null) {
            // 医生未设置时,默认7*24小时工作
            return json;
        } else {
            WlyyDoctorWorkTime doctorWorkTime = (WlyyDoctorWorkTime) result.get("workTime");
            if (doctorWorkTime.getReceiveConsult().equals("0")) {
                return null;
            } else {
                if (StringUtils.isEmpty(doctorWorkTime.getMorningBegin()) && StringUtils.isEmpty(doctorWorkTime.getMorningEnd())
                        && StringUtils.isEmpty(doctorWorkTime.getAfternoonBegin()) && StringUtils.isEmpty(doctorWorkTime.getAfternoonEnd())
                        && StringUtils.isEmpty(doctorWorkTime.getNightBegin()) && StringUtils.isEmpty(doctorWorkTime.getNightEnd())) {
                    // 医生未设置工作时间,默认7*24小时工作
                    return json;
                } else {
                    if (result.get("workWeek") != null) {
                        // 当前工作日已设置工作时间
                        int flag = 0;
                        WlyyDoctorWorkTime workTime = (WlyyDoctorWorkTime) result.get("workTime");
                        WlyyDoctorWorkWeek workWeek = (WlyyDoctorWorkWeek) result.get("workWeek");
                        int hour = calendar.get(Calendar.HOUR_OF_DAY);
                        int minute = calendar.get(Calendar.MINUTE);
                        String current = (hour < 10 ? ("0" + hour) : hour) + ":" + (hour < 10 ? ("0" + minute) : minute);
                        // 早上
                        if (workWeek.getMorning().equals("1")) {
                            String currentStart = workTime.getMorningBegin();
                            String currentEnd = workTime.getMorningEnd();
                            if (currentStart.length() == 4) {
                                currentStart = "0" + currentStart;
                            }
                            if (currentEnd.length() == 4) {
                                currentEnd = "0" + currentEnd;
                            }
                            if (current.compareTo(currentStart) >= 0 &&
                                    current.compareTo(currentEnd) < 0) {
                               String preDate= DateUtil.dateToStr(json,"yyyy-MM-dd");
                               preDate=preDate+" "+currentStart;
                                return DateUtil.strToDate(preDate,"yyyy-MM-dd HH:mm");
                            }
                        }
                        // 下午
                        if (workWeek.getAfternoon().equals("1")) {
                            String currentStart = workTime.getAfternoonBegin();
                            String currentEnd = workTime.getAfternoonEnd();
                            if (currentStart.length() == 4) {
                                currentStart = "0" + currentStart;
                            }
                            if (currentEnd.length() == 4) {
                                currentEnd = "0" + currentEnd;
                            }
                            if (current.compareTo(currentStart) >= 0 &&
                                    current.compareTo(currentEnd) < 0) {
                                String preDate= DateUtil.dateToStr(json,"yyyy-MM-dd");
                                preDate=preDate+" "+currentStart;
                                return DateUtil.strToDate(preDate,"yyyy-MM-dd HH:mm");
                            }
                        }
                        // 晚上
                        if (workWeek.getNight().equals("1")) {
                            String currentStart = workTime.getNightBegin();
                            String currentEnd = workTime.getNightEnd();
                            if (currentStart.length() == 4) {
                                currentStart = "0" + currentStart;
                            }
                            if (currentEnd.length() == 4) {
                                currentEnd = "0" + currentEnd;
                            }
                            if (current.compareTo(currentStart) >= 0 &&
                                    current.compareTo(currentEnd) < 0) {
                                String preDate= DateUtil.dateToStr(json,"yyyy-MM-dd");
                                preDate=preDate+" "+currentStart;
                                return DateUtil.strToDate(preDate,"yyyy-MM-dd HH:mm");
                            }
                        }
                    } else {
                        return null;
                    }
                }
            }
        }
        return null;
    }
    /**
     * 得到医生的下次工作时间
     *
     * @param doctor
     * @return
     * @throws Exception
     */
    public Date getDoctorNextWork(String doctor) throws Exception {
        Calendar calendar = Calendar.getInstance();
        int week = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        if (week == 0) {
            week = 7;
        }
        //得到今天的是否有工作
        Date date=getDoctorWeek(doctor,week);
        if(date==null){
            //如果工作时间遍历得到最新的一天的时间
            for(int i=1;i<8;i++){
                int weekTemp=(i+week)%7;
                if(weekTemp==0){
                    weekTemp=7;
                }
                date=getDoctorWeek(doctor,weekTemp);
            }
        }
        return date;
    }
}

+ 17 - 0
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/service/JobService.java

@ -11,6 +11,7 @@ import com.yihu.wlyy.statistics.job.cache.CacheCleanJob;
import com.yihu.wlyy.statistics.job.check.CheckSignJob;
import com.yihu.wlyy.statistics.job.check.ReportAllLogJob;
import com.yihu.wlyy.statistics.job.message.HealthMessageJob;
import com.yihu.wlyy.statistics.job.message.NoticeJob;
import com.yihu.wlyy.statistics.model.doctor.DoctorPatientGroupInfo;
import com.yihu.wlyy.statistics.model.job.QuartzJobConfig;
import com.yihu.wlyy.statistics.model.job.WlyyQuota;
@ -455,4 +456,20 @@ public class JobService {
            throw new Exception("已经停止");
        }
    }
    public void startNoticeJob() throws Exception {
        if(!quartzHelper.isExistJob(NoticeJob.jobKey)){
            quartzHelper.addJob(NoticeJob.class,NoticeJob.jobCron,NoticeJob.jobKey,new HashMap<>());
        }else{
            throw new Exception("已经启动");
        }
    }
    public void stopNoticeJob()throws Exception  {
        if(quartzHelper.isExistJob(NoticeJob.jobKey)){
            quartzHelper.removeJob(NoticeJob.jobKey);
        }else{
            throw new Exception("已经停止");
        }
    }
}

+ 2 - 5
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/util/IdCardUtil.java

@ -95,7 +95,6 @@ public class IdCardUtil {
     */
    public static int getAgeForIdcard(String idcard) {
        int age = 0;
        try{
        if (StringUtils.isEmpty(idcard)) {
            return age;
@ -115,12 +114,10 @@ public class IdCardUtil {
        Calendar cal = Calendar.getInstance();
        age = cal.get(Calendar.YEAR) - year;
        //周岁计算
        if (cal.get(Calendar.MONTH) > (month - 1) || (cal.get(Calendar.MONTH) == (month - 1) && cal.get(Calendar.DATE) > day)) {
        if (cal.get(Calendar.MONTH) < (month - 1) || (cal.get(Calendar.MONTH) == (month - 1) && cal.get(Calendar.DATE) < day)) {
            age--;
        }
        }catch (Exception e){
            return age;
        }
        return age;
    }

+ 9 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/entity/doctor/profile/Doctor.java

@ -61,6 +61,7 @@ public class Doctor extends IdEntity {
	private String idcard;          //身份证号
	private Integer isFamous;       //是否是名医 1是  0或者空不是
	private String isPasswordPrompt;// 是否提示密码信息 1是 0或者空是否
	private String isHelp;//是否求助  1已经求助 0未求助
	public Doctor() {}
@ -351,6 +352,14 @@ public class Doctor extends IdEntity {
    public boolean isHealthDoctor(){
        return level == 3;
    }
	@Transient
	public String getIsHelp() {
		return isHelp;
	}
	public void setIsHelp(String isHelp) {
		this.isHelp = isHelp;
	}
	@Column(name = "is_password_prompt")
	public String getIsPasswordPrompt() {

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

@ -30,6 +30,9 @@ public interface DoctorDao extends PagingAndSortingRepository<Doctor, Long>, Jpa
    @Query("select d from Doctor d where d.del = 1")
    List<Doctor> findAllDoctors();
    @Query("select d from Doctor d where d.del = 1 and d.name like ?1")
    List<Doctor> findDoctorsByName(String name);
    @Query("select d from Doctor d where d.del = 1 and d.hospital = ?1")
    Iterable<Doctor> findHospitalDoctors(String hospital);

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

@ -1,5 +1,6 @@
package com.yihu.wlyy.repository.doctor;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.doctor.team.sign.DoctorTeamMember;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
@ -61,4 +62,7 @@ public interface DoctorTeamMemberDao extends PagingAndSortingRepository<DoctorTe
    @Query("SELECT case when count(a) > 0 THEN true else false END FROM DoctorTeamMember a WHERE a.signType = 1 AND a" +
            ".memberCode = :memberCode")
    Boolean isSanShiSigning(@Param("memberCode") String doctorCode);
    @Query("select d FROM DoctorTeamMember a,Doctor d WHERE a.memberCode=d.code  and  a.del='1'and  a.type=1 and a.team in ( select b.team from DoctorTeamMember b where b.memberCode= ?1 and b.del='1' and b.type=2) ")
    List<Doctor> getTeamZKByQK(String qkCode);
}

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

@ -744,28 +744,32 @@ public class DoctorInfoService extends BaseService {
    }
    @Transactional
    public JSONArray findWorkingDoctorListByDept(String dept, String hospital, String level, String key) throws Exception {
        String sql = "select * from wlyy_doctor where dept = ? and hospital = ? and status = 1";
        Object[] args = null;
    public JSONArray findWorkingDoctorListByDept(String dept, String hospital, String level, String key, int page, int pagesize) throws Exception {
        String sql = "select * from wlyy_doctor where  status = 1";
        List<Object> args = new ArrayList<>();
        if (!StringUtils.isEmpty(dept)) {
            sql += " and dept = ? ";
            args.add(dept);
        }
        if (!StringUtils.isEmpty(hospital)) {
            sql += " and hospital = ? ";
            args.add(hospital);
        }
        if (!StringUtils.isEmpty(level)) {
            sql += " and level = ? ";
            args.add(Integer.valueOf(level));
        }
        if (!StringUtils.isEmpty(key)) {
            sql += " and name like ? ";
            args.add("%" + key + "%");
        }
        if (StringUtils.isNotEmpty(level) && StringUtils.isNotEmpty(key)) {
            args = new Object[]{dept, hospital, Integer.valueOf(level), "%" + key + "%"};
        } else if (StringUtils.isEmpty(level) && StringUtils.isNotEmpty(key)) {
            args = new Object[]{dept, hospital, "%" + key + "%"};
        } else if (StringUtils.isNotEmpty(level) && StringUtils.isEmpty(key)) {
            args = new Object[]{dept, hospital, Integer.valueOf(level)};
        } else {
            args = new Object[]{dept, hospital};
        if (page >= 0) {
            sql += " limit " + page * pagesize + "," + pagesize;
        }
        List<Doctor> doctors = jdbcTemplate.query(sql, args, new BeanPropertyRowMapper(Doctor.class));
        List<Doctor> doctors = jdbcTemplate.query(sql, args.toArray(), new BeanPropertyRowMapper(Doctor.class));
        JSONArray workingDoctor = new JSONArray();
        if (doctors.size() > 0) {
            for (Doctor doc : doctors) {
@ -906,7 +910,19 @@ public class DoctorInfoService extends BaseService {
        if (smsCheck != 1) {
            return -3;
        }
        //修改密码
        String oldPassword=doc.getPassword();
        //判断旧的密码是不是手机号码后六位
        String oldMobile=doc.getMobile();
        if(!org.springframework.util.StringUtils.isEmpty(oldMobile)){
            String passwordTemp=oldMobile.substring(5);
            passwordTemp=MD5.GetMD5Code(passwordTemp+doc.getSalt());
            if(passwordTemp.equals(oldPassword)){
                //如果密码是原来的电话号码后留位改成现在号码的后留位
                String newPassword=MD5.GetMD5Code(mobile.substring(5)+doc.getSalt());
                doc.setPassword(newPassword);
            }
        }
        doc.setMobile(mobile);
        return 1;

+ 38 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/hospital/HospitalDeptService.java

@ -1,5 +1,6 @@
package com.yihu.wlyy.service.app.hospital;
import com.yihu.wlyy.entity.organization.Hospital;
import com.yihu.wlyy.entity.organization.HospitalDept;
import com.yihu.wlyy.repository.organization.HospitalDeptDao;
import com.yihu.wlyy.service.BaseService;
@ -10,12 +11,16 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springside.modules.persistence.DynamicSpecifications;
import org.springside.modules.persistence.SearchFilter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@ -27,6 +32,8 @@ import java.util.Map;
public class HospitalDeptService extends BaseService {
    @Autowired
    private HospitalDeptDao hospitalDeptDao;
    @Autowired
    JdbcTemplate jdbcTemplate;
    public Page<HospitalDept> findDeptByHsoptail(String hospital, String key, long id, int pageSize) {
        if (pageSize <= 0) {
@ -50,4 +57,35 @@ public class HospitalDeptService extends BaseService {
        Specification<HospitalDept> spec = DynamicSpecifications.bySearchFilter(filters.values(), HospitalDept.class);
        return hospitalDeptDao.findAll(spec,pageRequest);
    }
    /**
     * 查询科室列表
     *
     * @param hospital
     * @param key
     * @param page
     * @param pagesize
     * @return
     */
    public List<HospitalDept> getHospitalDept(String hospital, String key, int page, int pagesize){
        String sql = "select * from dm_hospital_dept " +
                " where" +
                "    exists (select * from wlyy_doctor where wlyy_doctor.dept = dm_hospital_dept.code)" +
                " and hospital = ? ";
        List<Object> args = new ArrayList<>();
        args.add(hospital);
        if(StringUtils.isNotEmpty(key)){
            sql += " and name like ? ";
            args.add("%" + key + "%");
        }
        sql += " limit "+ (page*pagesize) + "," + pagesize;
        List<HospitalDept> hosList = jdbcTemplate.query(sql,args.toArray(),new BeanPropertyRowMapper(HospitalDept.class));
        return hosList;
    }
}

+ 50 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/hospital/HospitalService.java

@ -1,11 +1,14 @@
package com.yihu.wlyy.service.app.hospital;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.thoughtworks.xstream.persistence.XmlArrayList;
import com.yihu.wlyy.entity.address.Town;
import com.yihu.wlyy.repository.address.TownDao;
import org.apache.commons.collections.ArrayStack;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
@ -13,6 +16,8 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springside.modules.persistence.DynamicSpecifications;
@ -31,6 +36,8 @@ public class HospitalService extends BaseService {
	private HospitalDao hospitalDao;
	@Autowired
	private TownDao townDao;
	@Autowired
	JdbcTemplate jdbcTemplate;
	/**
	 * 获取医院列表
@ -71,4 +78,47 @@ public class HospitalService extends BaseService {
	public List<Hospital> getHositalByTownCode(String town) {
		return hospitalDao.findByTownCode(town);
	}
	/**
	 * 查询医院列表
	 *
	 * @param type
	 * @param province
	 * @param city
	 * @param town
	 * @param key
	 * @param page
	 * @param pagesize
	 * @return
	 */
	public List<Hospital> getHospitals(int type,String province,String city,String town,String key,int page,int pagesize){
		String sql = "select * from dm_hospital where exists (select * from wlyy_doctor where wlyy_doctor.hospital = dm_hospital.code) and level = ? ";
		List<Object> args = new ArrayList<>();
		args.add(type);
		if(StringUtils.isNotEmpty(province)){
			sql += " and province = ? ";
			args.add(province);
		}
		if(StringUtils.isNotEmpty(city)){
			sql += " and city = ? ";
			args.add(city);
		}
		if(StringUtils.isNotEmpty(town)){
			sql += " and town = ? ";
			args.add(town);
		}
		if(StringUtils.isNotEmpty(key)){
			sql += " and name like ? ";
			args.add("%" + key + "%");
		}
		sql += " limit "+ (page*pagesize) + "," + pagesize;
		List<Hospital> hosList = jdbcTemplate.query(sql,args.toArray(),new BeanPropertyRowMapper(Hospital.class));
		return hosList;
	}
}

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

@ -11,10 +11,15 @@ import javax.transaction.Transactional;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.doctor.team.admin.AdminTeam;
import com.yihu.wlyy.entity.doctor.team.admin.AdminTeamMember;
import com.yihu.wlyy.entity.doctor.team.sign.SignPatientLabelInfo;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.repository.doctor.DoctorDao;
import com.yihu.wlyy.repository.patient.PatientDao;
import com.yihu.wlyy.service.app.team.AdminTeamService;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.util.HttpUtil;
import com.yihu.wlyy.util.IdCardUtil;
import com.yihu.wlyy.util.SystemConf;
import org.json.JSONArray;
import org.json.JSONObject;
@ -35,18 +40,18 @@ import org.springframework.util.StringUtils;
@Transactional
public class TalkGroupService extends BaseService {
    // 讨论组DAO
    @Autowired
    DiscussionGroupDao discussionGroupDao;
    @Autowired
    // 讨论组成员DAO
            DiscussionGroupMemberDao discussionGroupMemberDao;
    DiscussionGroupMemberDao discussionGroupMemberDao;
    @Autowired
    JdbcTemplate jdbcTemplate;
    @Autowired
    DoctorDao doctorDao;
    @Autowired
    AdminTeamService teamService;
    @Autowired
    PatientDao patientDao;
    /**
     * 讨论组保存
@ -77,6 +82,23 @@ public class TalkGroupService extends BaseService {
        discussionGroupMemberDao.save(member);
    }
    /**
     * 判断成员是否已在讨论组内
     *
     * @param group
     * @param member
     * @return
     */
    public boolean isMemberExists(String group, String member) {
        WlyyTalkGroupMember m = discussionGroupMemberDao.findByGroupCodeAndMemberCode(group, member);
        if (m != null) {
            return true;
        } else {
            return false;
        }
    }
    /**
     * 移除讨论组成员
     *
@ -143,7 +165,6 @@ public class TalkGroupService extends BaseService {
        saveTalkGroup(talkGroup, members);
    }
    /**
     * 获取医生讨论组列表
     *
@ -335,7 +356,6 @@ public class TalkGroupService extends BaseService {
        return discussionGroupMemberDao.countByMemberCode(doctor);
    }
    /**
     * 获取以上一对一聊天
     *
@ -391,7 +411,13 @@ public class TalkGroupService extends BaseService {
        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 ? ";
@ -402,7 +428,7 @@ public class TalkGroupService extends BaseService {
                "  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.name like ? or m.member_name like ? ";
                " 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.* " +
@ -469,5 +495,497 @@ public class TalkGroupService extends BaseService {
        }
        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(doc);
                        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("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("", 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:群聊 6:医生聊天记录
     * @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 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.getHosptialName());
                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.getHosptialName());
                        mArray.put(docJson);
                    }
                }
                json.put("members", mArray);
                result.put(json);
            }
        }
        return result;
    }
}

+ 22 - 5
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/team/DrHealthTeamService.java

@ -6,12 +6,10 @@
package com.yihu.wlyy.service.app.team;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.doctor.team.admin.AdminTeam;
import com.yihu.wlyy.entity.doctor.team.sign.DoctorPatient;
import com.yihu.wlyy.entity.doctor.team.sign.DoctorTeam;
import com.yihu.wlyy.repository.doctor.DoctorDao;
import com.yihu.wlyy.repository.doctor.DoctorPatientDao;
import com.yihu.wlyy.repository.doctor.DoctorTeamDao;
import com.yihu.wlyy.repository.doctor.DoctorTeamMemberDao;
import com.yihu.wlyy.repository.doctor.*;
import com.yihu.wlyy.service.BaseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
@ -19,6 +17,7 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -40,7 +39,8 @@ public class DrHealthTeamService extends BaseService {
    private DoctorTeamMemberDao doctorTeamMemberDao;
    @Autowired
    private DoctorDao doctorDao;
    @Autowired
    DoctorAdminTeamMemberDao memberDao;
    /**
     * 查询签约团队的其他医生
     *
@ -256,4 +256,21 @@ public class DrHealthTeamService extends BaseService {
            return null;
        }
    }
    public Map<String,List<Doctor>> getTeamDoctorsAndAdminTeamDoctors(String doctorCode,Long teamId) {
        Map<String,List<Doctor>> returnMap=new HashMap<>();
        //得到责任医生
        List<Doctor> zrDoctors=  doctorTeamMemberDao.getTeamZKByQK(doctorCode);
        for(Doctor doctor:zrDoctors){
            //判断是否求助
        }
        //得到医生所在的团队的除了自己的所有人
        List<Doctor> teamDoctors= memberDao.findAllHeathExcludeThis(teamId, doctorCode);
        for(Doctor doctor:teamDoctors){
            //判断是否求助
        }
        returnMap.put("zr",zrDoctors);
        returnMap.put("team",teamDoctors);
        return returnMap;
    }
}

+ 33 - 3
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/BaseController.java

@ -1,8 +1,7 @@
package com.yihu.wlyy.web;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.lang.reflect.Field;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
@ -16,6 +15,7 @@ import org.springframework.data.domain.Page;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.wlyy.entity.IdEntity;
import org.springframework.util.ReflectionUtils;
public class BaseController {
@ -480,5 +480,35 @@ public class BaseController {
			return null;
		}
	}
	public List<Map<String, Object>> copyBeans(Collection<? extends Object> beans, String...propertyNames){
		List<Map<String, Object>> result = new ArrayList<>();
		for (Object bean : beans){
			result.add(copyBeanProperties(bean, propertyNames));
		}
		return result;
	}
	/**
	 * 复制特定属性。
	 *
	 * @param bean
	 * @param propertyNames
	 * @return
	 */
	public Map<String, Object> copyBeanProperties(Object bean, String...propertyNames){
		Map<String, Object> simplifiedBean = new HashMap<>();
		for (String propertyName : propertyNames){
			Field field = ReflectionUtils.findField(bean.getClass(), propertyName);
			if (field != null){
				field.setAccessible(true);
				Object value = ReflectionUtils.getField(field, bean);
				simplifiedBean.put(propertyName, value == null ? "" : value);
			} else {
				simplifiedBean.put(propertyName, "");
			}
		}
		return simplifiedBean;
	}
}

+ 100 - 37
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/account/DoctorController.java

@ -74,14 +74,10 @@ public class DoctorController extends BaseController {
    @Autowired
    private PatientInfoService patientInfoService;
    @Autowired
    private PatientService patientService;
    @Autowired
    private PatientDao patientDao;
    @Autowired
    private TblBasicDao tblBasicDao;
    @Autowired
    private HospitalDeptService hospitalDeptService;
    @Autowired
    private HospitalDeptService deptService;
    @Autowired
    private DoctorWorkTimeService workTimeService;
    /**
@ -240,6 +236,104 @@ public class DoctorController extends BaseController {
        }
    }
    /**
     * 查询存在医生的医院列表
     *
     * @param type     类型 1:医院 2社区
     * @param province 省份
     * @param city     城市
     * @param town     城镇
     * @param key      名字搜索
     * @param page     第几页
     * @param pagesize 页大小
     * @return
     */
    @RequestMapping(value = "hospitals_list")
    @ResponseBody
    public String hospitalL(@RequestParam(required = true) int type,
                            @RequestParam(required = false) String province,
                            @RequestParam(required = false) String city,
                            @RequestParam(required = false) String town,
                            @RequestParam(required = false) String key,
                            @RequestParam(required = true) int page,
                            @RequestParam(required = true) int pagesize) {
        try {
            if (type != 1 && type != 2) {
                return error(-1, "医院类型错误");
            }
            page = page > 1 ? page - 1 : 0;
            List<Hospital> hos = hospitalService.getHospitals(type, province, city, town, key, page, pagesize);
            return write(200, "查询成功", "data", hos);
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "查询失败");
        }
    }
    /**
     * 查询某个医院存在医生科室列表
     *
     * @param hospital 医院
     * @param key      科室名字搜索
     * @param page     第几页
     * @param pagesize 页大小
     * @return
     */
    @RequestMapping(value = "/dept_list")
    @ResponseBody
    public String deptList(@RequestParam(required = true) String hospital,
                           @RequestParam(required = false) String key,
                           @RequestParam(required = true) int page,
                           @RequestParam(required = true) int pagesize) {
        try {
            if (StringUtils.isEmpty(hospital)) {
                return error(-1, "医院不能为空");
            }
            page = page > 1 ? page - 1 : 0;
            List<HospitalDept> dept = deptService.getHospitalDept(hospital, key, page, pagesize);
            return write(200, "查询成功", "data", dept);
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "查询失败");
        }
    }
    /**
     * 根据科室查询当前在工作医生
     *
     * @param dept
     * @param hospital
     * @param level
     * @param key
     * @param page
     * @param pagesize
     * @return
     */
    @RequestMapping(value = "/doctors_list")
    @ResponseBody
    public String findWorkingDoctorByDept(@RequestParam(required = false) String dept,
                                          @RequestParam(required = false) String hospital,
                                          @RequestParam(required = false, defaultValue = "") String level,
                                          @RequestParam(required = false, defaultValue = "") String key,
                                          @RequestParam(required = false, defaultValue = "-1") int page,
                                          @RequestParam(required = false, defaultValue = "15") int pagesize) {
        try {
            if (page > 1) {
                page = page - 1;
            }
            JSONArray doctors = doctorInfoService.findWorkingDoctorListByDept(dept, hospital, level, key, page, pagesize);
            return write(200, "查询成功", "data", doctors);
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "查询失败");
        }
    }
    /**
     * 根据机构查找科室
     *
@ -334,37 +428,6 @@ public class DoctorController extends BaseController {
        }
    }
    /**
     * 根据科室查询当前在工作医生
     *
     * @param dept
     * @param hospital
     * @param level
     * @param key
     * @return
     */
    @RequestMapping(value = "/findDoctorByDeptAndName")
    @ResponseBody
    public String findWorkingDoctorByDept(@RequestParam(required = true) String dept,
                                          @RequestParam(required = true) String hospital,
                                          @RequestParam(required = false, defaultValue = "") String level,
                                          @RequestParam(required = false, defaultValue = "") String key) {
        try {
            if (StringUtils.isEmpty(dept)) {
                return error(-1, "科室不能为空");
            }
            if (StringUtils.isEmpty(hospital)) {
                return error(-1, "医院不能为空");
            }
            JSONArray doctors = doctorInfoService.findWorkingDoctorListByDept(dept, hospital, level, key);
            return write(200, "查询成功", "data", doctors);
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "查询失败");
        }
    }
    /**
     * 名医列表
     *

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

@ -49,7 +49,7 @@ public class DoctorDiscussionGroupController extends BaseController {
     * @param patientInclude 病人是否加入讨论组
     * @return
     */
    @RequestMapping(value = "/create")
    @RequestMapping(value = "/create",method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String createTalkGroup(
            @RequestParam(required = true) String name,
@ -188,7 +188,7 @@ public class DoctorDiscussionGroupController extends BaseController {
     * @param patientInclude 患者是否加入
     * @return
     */
    @RequestMapping(value = "/create/members")
    @RequestMapping(value = "/create/members",method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String createTalkGroupMany(@RequestParam(required = true) String name,
                                      @RequestParam(required = true) int type,
@ -328,7 +328,7 @@ public class DoctorDiscussionGroupController extends BaseController {
     * @param doctorType 医生类型
     * @return
     */
    @RequestMapping(value = "addmember")
    @RequestMapping(value = "addmember",method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String addTalkMember(
            @RequestParam(required = true) String groupCode,
@ -336,6 +336,11 @@ public class DoctorDiscussionGroupController extends BaseController {
            @RequestParam(required = true) String doctor,
            @RequestParam(required = true) String doctorName, int doctorType) {
        try {
            if (talkGroupService.isMemberExists(groupCode, groupName)) {
                return error(-2, "成员已在该讨论组");
            }
            WlyyTalkGroupMember member = new WlyyTalkGroupMember();
            member.setGroupCode(groupCode);
@ -380,7 +385,7 @@ public class DoctorDiscussionGroupController extends BaseController {
     * @param members   讨论组成员[{"doctor":"xxx","doctorName":"xxx","doctorType":1}]
     * @return
     */
    @RequestMapping(value = "/addmembers")
    @RequestMapping(value = "/addmembers",method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String addMembers(String groupCode, String groupName, String members) {
        try {
@ -395,6 +400,9 @@ public class DoctorDiscussionGroupController extends BaseController {
            if (membersJArray != null) {
                for (int i = 0; i < membersJArray.length(); i++) {
                    JSONObject object = membersJArray.getJSONObject(i);
                    if (talkGroupService.isMemberExists(groupCode, object.getString("doctor"))) {
                        return error(-2, "添加失败,有成员已在该讨论组");
                    }
                    //指定的讨论组另一医生成员
                    WlyyTalkGroupMember doctorTalkMember = new WlyyTalkGroupMember();
@ -452,7 +460,7 @@ public class DoctorDiscussionGroupController extends BaseController {
     * @param memberCode 讨论组成员标识
     * @return
     */
    @RequestMapping(value = "removemember")
    @RequestMapping(value = "removemember",method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String removeTalkMember(
            @RequestParam(required = true) String groupCode,
@ -472,7 +480,7 @@ public class DoctorDiscussionGroupController extends BaseController {
     * @param members
     * @return
     */
    @RequestMapping(value = "/removemembers")
    @RequestMapping(value = "/removemembers",method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String removeMembers(String groupCode, String members) {
        try {
@ -492,7 +500,7 @@ public class DoctorDiscussionGroupController extends BaseController {
     *
     * @return
     */
    @RequestMapping(value = "mytalkgroups")
    @RequestMapping(value = "mytalkgroups",method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String getMyTalkGroup(
            @RequestParam(required = false) String doctorName,
@ -538,7 +546,7 @@ public class DoctorDiscussionGroupController extends BaseController {
     * @param groups
     * @return
     */
    @RequestMapping(value = "/group_sign")
    @RequestMapping(value = "/group_sign",method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String getMyTalkGroupSign(String groups) {
        try {
@ -555,7 +563,7 @@ public class DoctorDiscussionGroupController extends BaseController {
     *
     * @return
     */
    @RequestMapping(value = "groupmembers")
    @RequestMapping(value = "groupmembers",method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String getTalkGroupMembers(@RequestParam(required = true) String groupCode) {
        try {
@ -598,7 +606,7 @@ public class DoctorDiscussionGroupController extends BaseController {
     * @param patient
     * @return
     */
    @RequestMapping(value = "histories")
    @RequestMapping(value = "histories",method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String getTalkGroupHistory(@RequestParam(required = true) String patient) {
        try {
@ -615,7 +623,7 @@ public class DoctorDiscussionGroupController extends BaseController {
     * @param member
     * @return
     */
    @RequestMapping(value = "related")
    @RequestMapping(value = "related",method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String getTalkGroupRelated(@RequestParam(required = true) String member, @RequestParam(required = false) String groupType) {
        try {
@ -651,7 +659,7 @@ public class DoctorDiscussionGroupController extends BaseController {
     *
     * @return
     */
    @RequestMapping(value = "count")
    @RequestMapping(value = "count",method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String getMyTalkGroupCount() {
        try {
@ -669,7 +677,7 @@ public class DoctorDiscussionGroupController extends BaseController {
     * @param doctorName
     * @return
     */
    @RequestMapping(value = "/one_to_one_im")
    @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
@ -698,22 +706,21 @@ public class DoctorDiscussionGroupController extends BaseController {
        }
    }
    /**
     * 医生聊天对象搜索
     * 医生转发对象搜索
     *
     * @param filter
     * @param filter 搜索字段
     * @return
     */
    @RequestMapping(value = "/doctor_im_search")
    @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,"搜索字段不能为空");
            if (StringUtils.isEmpty(filter)) {
                return error(-1, "搜索字段不能为空");
            }
            JSONObject result = talkGroupService.searchImDoctor(getUID(),filter);
            JSONObject result = talkGroupService.searchImDoctor(getUID(), filter);
            return write(200, "查询成功", "data", result);
        } catch (Exception e) {
@ -721,4 +728,77 @@ public class DoctorDiscussionGroupController extends BaseController {
            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, "类型错误");
            }
            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 > 1 ? 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, "搜索失败");
        }
    }
}

+ 0 - 2
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/patient/SignPatientLabelInfoController.java

@ -241,7 +241,6 @@ public class SignPatientLabelInfoController extends BaseController {
        }
    }
    @RequestMapping(value = "/patient_search_all", method = RequestMethod.GET)
    @ApiOperation("根据姓名搜索所有团队下居民")
    public String searchPatients(@RequestParam(required = true) String filter,
@ -373,5 +372,4 @@ public class SignPatientLabelInfoController extends BaseController {
        }
    }
}

+ 0 - 31
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/team/AdminTeamController.java

@ -296,35 +296,4 @@ public class AdminTeamController extends BaseController {
        }
    }
    private List<Map<String, Object>> copyBeans(Collection<? extends Object> beans, String...propertyNames){
        List<Map<String, Object>> result = new ArrayList<>();
        for (Object bean : beans){
            result.add(copyBeanProperties(bean, propertyNames));
        }
        return result;
    }
    /**
     * 复制特定属性。
     *
     * @param bean
     * @param propertyNames
     * @return
     */
    private Map<String, Object> copyBeanProperties(Object bean, String...propertyNames){
        Map<String, Object> simplifiedBean = new HashMap<>();
        for (String propertyName : propertyNames){
            Field field = ReflectionUtils.findField(bean.getClass(), propertyName);
            if (field != null){
                field.setAccessible(true);
                Object value = ReflectionUtils.getField(field, bean);
                simplifiedBean.put(propertyName, value == null ? "" : value);
            } else {
                simplifiedBean.put(propertyName, "");
            }
        }
        return simplifiedBean;
    }
}

+ 53 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/team/SignTeamController.java

@ -1,8 +1,10 @@
package com.yihu.wlyy.web.doctor.team;
import java.util.List;
import java.util.Map;
import io.swagger.annotations.Api;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
@ -159,4 +161,55 @@ public class SignTeamController extends BaseController {
            return invalidUserException(e, -1, "查询失败!");
        }
    }
    /**
     * 求助页面需要的医生查找
     * @return
     */
    @RequestMapping(value = "teamDoctorsAndAdminTeamDoctors", method = RequestMethod.GET)
    @ResponseBody
    public String getTeamDoctorsAndAdminTeamDoctors(Long teamId) {
        try {
            Map<String,List<Doctor>> doctors = drHealthTeamService.getTeamDoctorsAndAdminTeamDoctors("64de930c-5b15-11e6-8344-fa163e8aee56",teamId);
            JSONObject jo=new JSONObject();
            jo.put("zr", addDoctor(doctors.get("zr")));
            jo.put("team", addDoctor(doctors.get("team")));
            return write(200, "查询成功!", "data",jo );
        } catch (Exception e) {
            error(e);
            return invalidUserException(e, -1, "查询失败!");
        }
    }
    private JSONArray addDoctor(List<Doctor> zr) {
        JSONArray array=new JSONArray();
        for (Doctor doctor : zr) {
            if (doctor == null) {
                continue;
            }
            JSONObject json = new JSONObject();
            json.put("id", doctor.getId());
            // 医生标识
            json.put("code", doctor.getCode());
            // 医生姓名
            json.put("name", doctor.getName());
            // 所在医院名称
            json.put("hospital_name", doctor.getHosptialName());
            // 科室名称
            json.put("dept_name", StringUtils.isEmpty(doctor.getDeptName()) ? " " : doctor.getDeptName());
            // 职称名称
            json.put("job_name", StringUtils.isEmpty(doctor.getJobName()) ? " " : doctor.getJobName());
            // 头像
            json.put("photo", doctor.getPhoto());
            // 简介
            json.put("introduce", doctor.getIntroduce());
            // 专长
            json.put("expertise", doctor.getExpertise());
            // 是否求出
            json.put("isHelp", doctor.getIsHelp());
            array.put(json);
        }
        return array;
    }
}