Explorar o código

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

%!s(int64=8) %!d(string=hai) anos
pai
achega
3e9ec0f615

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

@ -32,7 +32,9 @@ import com.yihu.wlyy.repository.patient.SignFamilyDao;
import com.yihu.wlyy.service.app.scheduling.DoctorWorkTimeService;
import com.yihu.wlyy.service.app.scheduling.DoctorWorkTimeService;
import com.yihu.wlyy.service.common.SMSService;
import com.yihu.wlyy.service.common.SMSService;
import com.yihu.wlyy.util.MD5;
import com.yihu.wlyy.util.MD5;
import org.apache.commons.beanutils.converters.IntegerConverter;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Page;
@ -40,7 +42,9 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.annotation.Transactional;
import org.springside.modules.persistence.DynamicSpecifications;
import org.springside.modules.persistence.DynamicSpecifications;
@ -713,7 +717,7 @@ public class DoctorInfoService extends BaseService {
        if (doctors.size() > 0) {
        if (doctors.size() > 0) {
            for (Doctor doc : doctors) {
            for (Doctor doc : doctors) {
                if(workingDoctor.size() > end){
                if (workingDoctor.size() > end) {
                    break;
                    break;
                }
                }
                if (type != 1) {
                if (type != 1) {
@ -739,13 +743,56 @@ public class DoctorInfoService extends BaseService {
        return returnList;
        return returnList;
    }
    }
    @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;
        if (!StringUtils.isEmpty(level)) {
            sql += " and level = ? ";
        }
        if (!StringUtils.isEmpty(key)) {
            sql += " and name like ? ";
        }
        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};
        }
        List<Doctor> doctors = jdbcTemplate.query(sql, args, new BeanPropertyRowMapper(Doctor.class));
        JSONArray workingDoctor = new JSONArray();
        if (doctors.size() > 0) {
            for (Doctor doc : doctors) {
                JSONObject iswork = workTimeService.isDoctorWorking(doc.getCode());
                if (iswork.getString("status").equals("1")) {
                    JSONObject docJson = new JSONObject(doc);
                    if (docJson.has("password")) {
                        docJson.remove("password");
                    }
                    if (docJson.has("salt")) {
                        docJson.remove("salt");
                    }
                    workingDoctor.put(docJson);
                }
            }
        }
        return workingDoctor;
    }
    @Transactional
    @Transactional
    public void updateTeamHealthDoctor(String newDoctorCode, String oldDoctorCode, String patient) throws Exception {
    public void updateTeamHealthDoctor(String newDoctorCode, String oldDoctorCode, String patient) throws Exception {
        //得到患者的签约信息
        //得到患者的签约信息
        SignFamily signFamily = signFamilyDao.findByPatient(patient);
        SignFamily signFamily = signFamilyDao.findByPatient(patient);
        //得到签约中的健管师
        //得到签约中的健管师
        oldDoctorCode=signFamily.getDoctorHealth();
        oldDoctorCode = signFamily.getDoctorHealth();
        //如果存在旧的健管师
        //如果存在旧的健管师
        if (!org.springframework.util.StringUtils.isEmpty(oldDoctorCode)) {
        if (!org.springframework.util.StringUtils.isEmpty(oldDoctorCode)) {
            //判断患者对旧的健管师是否存在健康咨询
            //判断患者对旧的健管师是否存在健康咨询
@ -786,16 +833,16 @@ public class DoctorInfoService extends BaseService {
    }
    }
    @Transactional
    @Transactional
    public int updateTeamHealthDoctorsAll(String newDoctorCode,String doctor) throws Exception {
    public int updateTeamHealthDoctorsAll(String newDoctorCode, String doctor) throws Exception {
        List<String> patients = signFamilyDao.findNohealthByDoctor(doctor);
        List<String> patients = signFamilyDao.findNohealthByDoctor(doctor);
        boolean hasNoTeam = false;
        boolean hasNoTeam = false;
        if(patients != null){
        if (patients != null) {
            for (String patient : patients) {
            for (String patient : patients) {
                try {
                try {
                    if(updateTeamHealthDoctorAll(newDoctorCode, patient) == -1){
                    if (updateTeamHealthDoctorAll(newDoctorCode, patient) == -1) {
                        hasNoTeam = true;
                        hasNoTeam = true;
                    }
                    }
                }catch (Exception e){
                } catch (Exception e) {
                    e.printStackTrace();
                    e.printStackTrace();
                }
                }
            }
            }
@ -808,7 +855,7 @@ public class DoctorInfoService extends BaseService {
    public int updateTeamHealthDoctorAll(String newDoctorCode, String patient) throws Exception {
    public int updateTeamHealthDoctorAll(String newDoctorCode, String patient) throws Exception {
        //得到患者的签约信息
        //得到患者的签约信息
        SignFamily signFamily = signFamilyDao.findByPatient(patient);
        SignFamily signFamily = signFamilyDao.findByPatient(patient);
        if(StringUtils.isEmpty(signFamily.getTeamCode())){
        if (StringUtils.isEmpty(signFamily.getTeamCode())) {
            return -1;
            return -1;
        }
        }
        Doctor newD = doctorDao.findByCode(newDoctorCode);
        Doctor newD = doctorDao.findByCode(newDoctorCode);

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

@ -1010,25 +1010,31 @@ public class SignPatientLabelInfoService extends BaseService {
        String sql = "select distinct t.* from (" +
        String sql = "select distinct t.* from (" +
                " select " +
                " select " +
                "     patient " +
                "     ,name " +
                "     ,openid " +
                "     ,admin_team_code " +
                "     f.patient " +
                "     ,f.name " +
                "     ,f.openid " +
                "     ,f.admin_team_code " +
                "     ,p.sex " +
                "     ,p.idcard " +
                "     ,p.photo " +
                " from " +
                " from " +
                "     wlyy_sign_family " +
                "     wlyy_sign_family f,wlyy_patient p " +
                " where " +
                " where " +
                "      doctor = ? and admin_team_code = ? and status > 0 and name like ? " +
                "      f.patient = p.code and f.doctor = ? and f.admin_team_code = ? and f.status > 0 and f.name like ? " +
                " union all " +
                " union all " +
                "select " +
                "select " +
                "     patient " +
                "     ,name " +
                "     ,openid " +
                "     ,admin_team_code " +
                "     f1.patient " +
                "     ,f1.name " +
                "     ,f1.openid " +
                "     ,f1.admin_team_code " +
                "     ,p1.sex " +
                "     ,p1.idcard " +
                "     ,p1.photo " +
                " from " +
                " from " +
                "     wlyy_sign_family " +
                "     wlyy_sign_family f1,wlyy_patient p1" +
                " where " +
                " where " +
                "      doctor_health = ? and admin_team_code = ? and status > 0 and name like ? " +
                ") t " + (page < 0 ? "" :"limit " + start + "," + size);
                "     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);
        if (teams != null) {
        if (teams != null) {
            for (AdminTeam team : teams) {
            for (AdminTeam team : teams) {
@ -1040,10 +1046,13 @@ public class SignPatientLabelInfoService extends BaseService {
                    for (Map<String, Object> p : result) {
                    for (Map<String, Object> p : result) {
                        JSONObject pJson = new JSONObject();
                        JSONObject pJson = new JSONObject();
                        pJson.put("code", String.valueOf(p.get("patient")));
                        pJson.put("name", String.valueOf(p.get("name")));
                        pJson.put("openid", String.valueOf(p.get("openid")));
                        pJson.put("adminTeamCode", String.valueOf(p.get("admin_team_code")));
                        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") : "");
                        List<SignPatientLabelInfo> labels = labelInfoDao.findByPatientAndStatus(String.valueOf(p.get("patient")), 1);
                        List<SignPatientLabelInfo> labels = labelInfoDao.findByPatientAndStatus(String.valueOf(p.get("patient")), 1);
                        pJson.put("labels", labels == null ? "" : labels);
                        pJson.put("labels", labels == null ? "" : labels);

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

@ -6,16 +6,20 @@ import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.*;
import javax.print.Doc;
import javax.transaction.Transactional;
import javax.transaction.Transactional;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.doctor.team.admin.AdminTeam;
import com.yihu.wlyy.repository.doctor.DoctorDao;
import com.yihu.wlyy.repository.doctor.DoctorDao;
import com.yihu.wlyy.service.app.team.AdminTeamService;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.util.HttpUtil;
import com.yihu.wlyy.util.HttpUtil;
import com.yihu.wlyy.util.SystemConf;
import com.yihu.wlyy.util.SystemConf;
import org.json.JSONArray;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Service;
import org.springframework.stereotype.Service;
@ -36,11 +40,13 @@ public class TalkGroupService extends BaseService {
    DiscussionGroupDao discussionGroupDao;
    DiscussionGroupDao discussionGroupDao;
    @Autowired
    @Autowired
    // 讨论组成员DAO
    // 讨论组成员DAO
    DiscussionGroupMemberDao discussionGroupMemberDao;
            DiscussionGroupMemberDao discussionGroupMemberDao;
    @Autowired
    @Autowired
    JdbcTemplate jdbcTemplate;
    JdbcTemplate jdbcTemplate;
    @Autowired
    @Autowired
    DoctorDao doctorDao;
    DoctorDao doctorDao;
    @Autowired
    AdminTeamService teamService;
    /**
    /**
     * 讨论组保存
     * 讨论组保存
@ -337,13 +343,13 @@ public class TalkGroupService extends BaseService {
     * @param doctorName
     * @param doctorName
     * @return
     * @return
     */
     */
    public JSONArray getOneToOneIm(String doctor,String doctorName) throws UnsupportedEncodingException {
    public JSONArray getOneToOneIm(String doctor, String doctorName) throws UnsupportedEncodingException {
        JSONArray result = null;
        JSONArray result = null;
        JSONArray resultArray = new JSONArray();
        JSONArray resultArray = new JSONArray();
        String url = SystemConf.getInstance().getSystemProperties().getProperty("im_list_get")
        String url = SystemConf.getInstance().getSystemProperties().getProperty("im_list_get")
                + "statistic/getchatlist.im";
                + "statistic/getchatlist.im";
        String json = HttpUtil.sendGet(url, "uid=" + doctor);
        String json = HttpUtil.sendGet(url, "uid=" + doctor);
        if(!StringUtils.isEmpty(json) && json.trim().startsWith("[") && json.trim().endsWith("]")) {
        if (!StringUtils.isEmpty(json) && json.trim().startsWith("[") && json.trim().endsWith("]")) {
            System.out.println("one-to-one:" + json);
            System.out.println("one-to-one:" + json);
            result = new JSONArray(json);
            result = new JSONArray(json);
        }
        }
@ -355,27 +361,27 @@ public class TalkGroupService extends BaseService {
                    JSONObject objRe = new JSONObject();
                    JSONObject objRe = new JSONObject();
                    Doctor fromDoctor = doctorDao.findByCode(obj.get("peer_uid").toString());
                    Doctor fromDoctor = doctorDao.findByCode(obj.get("peer_uid").toString());
                    if(fromDoctor == null){
                    if (fromDoctor == null) {
                        continue;
                        continue;
                    }
                    }
                    if(!StringUtils.isEmpty(doctorName)){
                        if(!fromDoctor.getName().contains(doctorName)){
                    if (!StringUtils.isEmpty(doctorName)) {
                        if (!fromDoctor.getName().contains(doctorName)) {
                            continue;
                            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"));
                    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);
                    resultArray.put(objRe);
                }
                }
@ -385,5 +391,83 @@ public class TalkGroupService extends BaseService {
        return resultArray;
        return resultArray;
    }
    }
    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.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;
    }
}
}

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

@ -334,6 +334,37 @@ 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, "查询失败");
        }
    }
    /**
    /**
     * 名医列表
     * 名医列表
     *
     *
@ -1478,10 +1509,10 @@ public class DoctorController extends BaseController {
            if (StringUtils.isNotEmpty(isAll) && isAll.equals("1")) {
            if (StringUtils.isNotEmpty(isAll) && isAll.equals("1")) {
                int result = doctorInfoService.updateTeamHealthDoctorsAll(newDoctorCode, getUID());
                int result = doctorInfoService.updateTeamHealthDoctorsAll(newDoctorCode, getUID());
                if(result == 1){
                    return write(200,"分配健管师成功");
                } else if(result == 2){
                    return write(200,"部分居民因没有服务团队分配失败");
                if (result == 1) {
                    return write(200, "分配健管师成功");
                } else if (result == 2) {
                    return write(200, "部分居民因没有服务团队分配失败");
                }
                }
            } else {
            } else {
                if (StringUtils.isEmpty(patients)) {
                if (StringUtils.isEmpty(patients)) {

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

@ -27,676 +27,698 @@ import com.yihu.wlyy.web.BaseController;
@RequestMapping(value = "/doctor/talkgroup", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RequestMapping(value = "/doctor/talkgroup", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(description = "医生端-讨论组")
@Api(description = "医生端-讨论组")
public class DoctorDiscussionGroupController extends BaseController {
public class DoctorDiscussionGroupController extends BaseController {
	// 医生服务类
	@Autowired
	private DoctorService doctorService;
	@Autowired
	// 讨论组服务类
	private TalkGroupService talkGroupService;
    // 医生服务类
    @Autowired
    @Autowired
	private PatientService patientService;
	/**
	 * 医生创建讨论组
	 * 
	 * @param name 讨论组名称
	 * @param type 讨论组类型
	 * @param talkDoctor 讨论组医生
	 * @param talkDoctorName 讨论组医生名称
	 * @param doctorType 成员医生类型
	 * @param patient 病人标识
	 * @param patientName 病人姓名
	 * @param patientInclude 病人是否加入讨论组
	 * @return
	 */
	@RequestMapping(value = "/create")
	@ResponseBody
	public String createTalkGroup(
			@RequestParam(required = true)String name,
			@RequestParam(required = true)int type,
			@RequestParam(required = true)String talkDoctor,
			@RequestParam(required = true)String talkDoctorName,
			@RequestParam(required = true)int doctorType,
			@RequestParam(required = false)String patient,
			@RequestParam(required = false)String patientName,
			@RequestParam(required = false)String patientInclude){
		try{
			Doctor doctor = doctorService.findDoctorByCode(getUID());
			List<WlyyTalkGroupMember> members = new ArrayList<WlyyTalkGroupMember>();
			
			if(doctor != null){
				//讨论组建立
				WlyyTalkGroup talkGroup = new WlyyTalkGroup();
				
				if(StringUtils.isEmpty(name)){
					return error(-1,"请输入讨论组名称");
				}
				if(StringUtils.isEmpty(talkDoctor)){
					return error(-1,"请输入讨论组成员医生");
				}
				if(StringUtils.isEmpty(talkDoctorName)){
					return error(-1,"请输入讨论组成员医生姓名");
				}
				// 讨论组针对某一病人时
				if(type == 1){
					if(StringUtils.isEmpty(patient)){
						return error(-1,"请输入患者标识");
					}
					if(StringUtils.isEmpty(patientName)){
						return error(-1,"请输入患者姓名");
					}
					if(StringUtils.isEmpty(patientInclude)){
						return error(-1,"请输入患者是否加入讨论组");
					}
				}
				
				talkGroup.setCode(talkGroupService.getCode());
				talkGroup.setName(name);
				talkGroup.setType(type);
				talkGroup.setCreator(doctor.getCode());
				talkGroup.setCreatorName(doctor.getName());
				talkGroup.setHospitalCode(doctor.getHospital());
				talkGroup.setHospitalName(doctor.getHosptialName());
				talkGroup.setPatient(patient);
				talkGroup.setPatientName(patientName);
				talkGroup.setCzrq(new Date());
				
				//病人加入讨论组
				if(!StringUtils.isEmpty(patientInclude) && patientInclude.equals("1")){
					WlyyTalkGroupMember patientMember = new WlyyTalkGroupMember();
					
					patientMember.setMemberCode(patient);
					patientMember.setMemberName(patientName);
					patientMember.setGroupCode(talkGroup.getCode());
					patientMember.setGroupName(name);
					patientMember.setType(4);
					patientMember.setStatus(1);
					patientMember.setCzrq(new Date());
					
					members.add(patientMember);
				}
				
				//当前医生加入讨论组
				WlyyTalkGroupMember doctorMember = new WlyyTalkGroupMember();
				
				doctorMember.setMemberCode(doctor.getCode());
				doctorMember.setMemberName(doctor.getName());
				doctorMember.setGroupCode(talkGroup.getCode());
				doctorMember.setGroupName(name);
				doctorMember.setType(doctor.getLevel());
				doctorMember.setStatus(1);
				doctorMember.setCzrq(new Date());	
				members.add(doctorMember);
				
				//指定的讨论组另一医生成员
				WlyyTalkGroupMember doctorTalkMember = new WlyyTalkGroupMember();
				
				doctorTalkMember.setMemberCode(talkDoctor);
				doctorTalkMember.setMemberName(talkDoctorName);
				doctorTalkMember.setGroupCode(talkGroup.getCode());
				doctorTalkMember.setGroupName(name);
				doctorTalkMember.setType(doctorType);
				doctorTalkMember.setStatus(1);
				doctorTalkMember.setCzrq(new Date());	
				members.add(doctorTalkMember);
				
				talkGroupService.saveTalkGroup(talkGroup, members);
				
				JSONObject jsonObject = new JSONObject(talkGroup);
    private DoctorService doctorService;
    @Autowired
    // 讨论组服务类
    private TalkGroupService talkGroupService;
    @Autowired
    private PatientService patientService;
    /**
     * 医生创建讨论组
     *
     * @param name           讨论组名称
     * @param type           讨论组类型
     * @param talkDoctor     讨论组医生
     * @param talkDoctorName 讨论组医生名称
     * @param doctorType     成员医生类型
     * @param patient        病人标识
     * @param patientName    病人姓名
     * @param patientInclude 病人是否加入讨论组
     * @return
     */
    @RequestMapping(value = "/create")
    @ResponseBody
    public String createTalkGroup(
            @RequestParam(required = true) String name,
            @RequestParam(required = true) int type,
            @RequestParam(required = true) String talkDoctor,
            @RequestParam(required = true) String talkDoctorName,
            @RequestParam(required = true) int doctorType,
            @RequestParam(required = false) String patient,
            @RequestParam(required = false) String patientName,
            @RequestParam(required = false) String patientInclude) {
        try {
            Doctor doctor = doctorService.findDoctorByCode(getUID());
            List<WlyyTalkGroupMember> members = new ArrayList<WlyyTalkGroupMember>();
            if (doctor != null) {
                //讨论组建立
                WlyyTalkGroup talkGroup = new WlyyTalkGroup();
                if (StringUtils.isEmpty(name)) {
                    return error(-1, "请输入讨论组名称");
                }
                if (StringUtils.isEmpty(talkDoctor)) {
                    return error(-1, "请输入讨论组成员医生");
                }
                if (StringUtils.isEmpty(talkDoctorName)) {
                    return error(-1, "请输入讨论组成员医生姓名");
                }
                // 讨论组针对某一病人时
                if (type == 1) {
                    if (StringUtils.isEmpty(patient)) {
                        return error(-1, "请输入患者标识");
                    }
                    if (StringUtils.isEmpty(patientName)) {
                        return error(-1, "请输入患者姓名");
                    }
                    if (StringUtils.isEmpty(patientInclude)) {
                        return error(-1, "请输入患者是否加入讨论组");
                    }
                }
                talkGroup.setCode(talkGroupService.getCode());
                talkGroup.setName(name);
                talkGroup.setType(type);
                talkGroup.setCreator(doctor.getCode());
                talkGroup.setCreatorName(doctor.getName());
                talkGroup.setHospitalCode(doctor.getHospital());
                talkGroup.setHospitalName(doctor.getHosptialName());
                talkGroup.setPatient(patient);
                talkGroup.setPatientName(patientName);
                talkGroup.setCzrq(new Date());
                //病人加入讨论组
                if (!StringUtils.isEmpty(patientInclude) && patientInclude.equals("1")) {
                    WlyyTalkGroupMember patientMember = new WlyyTalkGroupMember();
                    patientMember.setMemberCode(patient);
                    patientMember.setMemberName(patientName);
                    patientMember.setGroupCode(talkGroup.getCode());
                    patientMember.setGroupName(name);
                    patientMember.setType(4);
                    patientMember.setStatus(1);
                    patientMember.setCzrq(new Date());
                    members.add(patientMember);
                }
                //当前医生加入讨论组
                WlyyTalkGroupMember doctorMember = new WlyyTalkGroupMember();
                doctorMember.setMemberCode(doctor.getCode());
                doctorMember.setMemberName(doctor.getName());
                doctorMember.setGroupCode(talkGroup.getCode());
                doctorMember.setGroupName(name);
                doctorMember.setType(doctor.getLevel());
                doctorMember.setStatus(1);
                doctorMember.setCzrq(new Date());
                members.add(doctorMember);
                //指定的讨论组另一医生成员
                WlyyTalkGroupMember doctorTalkMember = new WlyyTalkGroupMember();
                doctorTalkMember.setMemberCode(talkDoctor);
                doctorTalkMember.setMemberName(talkDoctorName);
                doctorTalkMember.setGroupCode(talkGroup.getCode());
                doctorTalkMember.setGroupName(name);
                doctorTalkMember.setType(doctorType);
                doctorTalkMember.setStatus(1);
                doctorTalkMember.setCzrq(new Date());
                members.add(doctorTalkMember);
                talkGroupService.saveTalkGroup(talkGroup, members);
                JSONObject jsonObject = new JSONObject(talkGroup);
                JSONArray membersJson = new JSONArray();
                JSONArray membersJson = new JSONArray();
				for(WlyyTalkGroupMember member : members){
					JSONObject memberJson = new JSONObject(member);
					if(member.getType() == 4){
						Patient p = patientService.findByCode(member.getMemberCode());
						if(p != null){
							memberJson.put("photo",p.getPhoto());
							memberJson.put("sex",p.getSex());
						}
					}else{
						Doctor d = doctorService.findDoctorByCode(member.getMemberCode());
						if(d != null){
							memberJson.put("photo",d.getPhoto());
							memberJson.put("sex",d.getSex());
						}
					}
					membersJson.put(memberJson);
				}
				jsonObject.put("members", membersJson);
				
				return write(200, "创建讨论组成功!","data",jsonObject);
			}else{
				return error(-1, "创建讨论组失败!");
			}
		
		}catch(Exception e){
			return error(-1, "创建讨论组失败!");
		}
	}
	/**
	 * 创建讨论组
	 *
	 * @param name 讨论组名称
	 * @param type 讨论组类型
	 * @param members 讨论组成员 [{"doctor":"xxx","doctorName":"xxx","doctorType":1}]
	 * @param patient 患者
	 * @param patientName 患者姓名
	 * @param patientInclude 患者是否加入
	 * @return
	 */
	@RequestMapping(value = "/create/members")
	@ResponseBody
	public String createTalkGroupMany(@RequestParam(required = true)String name,
									  @RequestParam(required = true)int type,
									  @RequestParam(required = true)String members,
									  @RequestParam(required = false)String patient,
									  @RequestParam(required = false)String patientName,
									  @RequestParam(required = false)String patientInclude){
		try{
			Doctor doctor = doctorService.findDoctorByCode(getUID());
			List<WlyyTalkGroupMember> talkMembers = new ArrayList<WlyyTalkGroupMember>();
			if(doctor != null){
				//讨论组建立
				WlyyTalkGroup talkGroup = new WlyyTalkGroup();
				if(StringUtils.isEmpty(name)){
					return error(-1,"请输入讨论组名称");
				}
				if(StringUtils.isEmpty(members)){
					return error(-1,"讨论组成员不能为空");
				}
				// 讨论组针对某一病人时
				if(type == 1){
					if(StringUtils.isEmpty(patient)){
						return error(-1,"请输入患者标识");
					}
					if(StringUtils.isEmpty(patientName)){
						return error(-1,"请输入患者姓名");
					}
					if(StringUtils.isEmpty(patientInclude)){
						return error(-1,"请输入患者是否加入讨论组");
					}
				}
				talkGroup.setCode(talkGroupService.getCode());
				talkGroup.setName(name);
				talkGroup.setType(type);
				talkGroup.setCreator(doctor.getCode());
				talkGroup.setCreatorName(doctor.getName());
				talkGroup.setHospitalCode(doctor.getHospital());
				talkGroup.setHospitalName(doctor.getHosptialName());
				talkGroup.setPatient(patient);
				talkGroup.setPatientName(patientName);
				talkGroup.setCzrq(new Date());
				//病人加入讨论组
				if(!StringUtils.isEmpty(patientInclude) && patientInclude.equals("1")){
					WlyyTalkGroupMember patientMember = new WlyyTalkGroupMember();
					patientMember.setMemberCode(patient);
					patientMember.setMemberName(patientName);
					patientMember.setGroupCode(talkGroup.getCode());
					patientMember.setGroupName(name);
					patientMember.setType(4);
					patientMember.setStatus(1);
					patientMember.setCzrq(new Date());
					talkMembers.add(patientMember);
				}
				//当前医生加入讨论组
				WlyyTalkGroupMember doctorMember = new WlyyTalkGroupMember();
				doctorMember.setMemberCode(doctor.getCode());
				doctorMember.setMemberName(doctor.getName());
				doctorMember.setGroupCode(talkGroup.getCode());
				doctorMember.setGroupName(name);
				doctorMember.setType(doctor.getLevel());
				doctorMember.setStatus(1);
				doctorMember.setCzrq(new Date());
				talkMembers.add(doctorMember);
				JSONArray membersJArray = new JSONArray(members);
				if(membersJArray != null){
					for(int i = 0; i < membersJArray.length(); i++){
						JSONObject object = membersJArray.getJSONObject(i);
						//指定的讨论组另一医生成员
						WlyyTalkGroupMember doctorTalkMember = new WlyyTalkGroupMember();
						doctorTalkMember.setMemberCode(object.getString("doctor"));
						doctorTalkMember.setMemberName(object.getString("doctorName"));
						doctorTalkMember.setGroupCode(talkGroup.getCode());
						doctorTalkMember.setGroupName(name);
						doctorTalkMember.setType(object.getInt("doctorType"));
						doctorTalkMember.setStatus(1);
						doctorTalkMember.setCzrq(new Date());
						talkMembers.add(doctorTalkMember);
					}
				}
				talkGroupService.saveTalkGroup(talkGroup, talkMembers);
				JSONObject jsonObject = new JSONObject(talkGroup);
				JSONArray membersJson = new JSONArray();
				for(WlyyTalkGroupMember member : talkMembers){
					JSONObject memberJson = new JSONObject(member);
					if(member.getType() == 4){
						Patient p = patientService.findByCode(member.getMemberCode());
						if(p != null){
							memberJson.put("photo",p.getPhoto());
							memberJson.put("sex",p.getSex());
						}
					}else{
						Doctor d = doctorService.findDoctorByCode(member.getMemberCode());
						if(d != null){
							memberJson.put("photo",d.getPhoto());
							memberJson.put("sex",d.getSex());
						}
					}
					membersJson.put(memberJson);
				}
				jsonObject.put("members", membersJson);
				return write(200, "创建讨论组成功!","data",jsonObject);
			}else{
				return error(-1, "创建讨论组失败!");
			}
		}catch (Exception e){
			e.printStackTrace();
			return error(-1,"创建讨论组失败");
		}
	}
	/**
	 * 添加讨论组成员
	 * 
	 * @param groupCode 讨论组标识
	 * @param groupName 讨论组名称
	 * @param doctor 添加医生
	 * @param doctorName 添加医生姓名
	 * @param doctorType 医生类型
	 * @return
	 */
	@RequestMapping(value = "addmember")
	@ResponseBody
	public String addTalkMember(
			@RequestParam(required = true)String groupCode,
			@RequestParam(required = true)String groupName,
			@RequestParam(required = true)String doctor,
			@RequestParam(required = true)String doctorName,int doctorType){
		try{
			WlyyTalkGroupMember member = new WlyyTalkGroupMember();
			
			member.setGroupCode(groupCode);
			member.setGroupName(groupName);
			member.setMemberCode(doctor);
			member.setMemberName(doctorName);
			member.setStatus(1);
			member.setCzrq(new Date());
			member.setType(doctorType);
			
			talkGroupService.saveTalkMember(member);
			JSONObject memberJson = new JSONObject(member);
			if(member.getType() == 4){
				Patient p = patientService.findByCode(member.getMemberCode());
				if(p != null){
					memberJson.put("photo",p.getPhoto());
					memberJson.put("sex",p.getSex());
				}
			}else{
				Doctor d = doctorService.findDoctorByCode(member.getMemberCode());
				if(d != null){
					memberJson.put("photo",d.getPhoto());
					memberJson.put("sex",d.getSex());
				}
			}
			
			return write(200, "添加讨论组成员成功!","data",memberJson);
		}catch(Exception e){
			return error(-1, "添加讨论组成员失败!");
		}
	}
	/**
	 * 添加成员
	 *
	 * @param groupCode 分组code
	 * @param members 讨论组成员[{"doctor":"xxx","doctorName":"xxx","doctorType":1}]
	 * @return
	 */
	@RequestMapping(value = "/addmembers")
	@ResponseBody
	public String addMembers(String groupCode,String groupName,String members){
		try{
			List<WlyyTalkGroupMember> talkMembers = new ArrayList<>();
			JSONArray membersJArray = new JSONArray(members);
			WlyyTalkGroup talkGroup = talkGroupService.findTalkGroup(groupCode);
			if(talkGroup == null){
				throw new Exception("讨论组不存在");
			}
			if(membersJArray != null){
				for(int i = 0; i < membersJArray.length(); i++){
					JSONObject object = membersJArray.getJSONObject(i);
					//指定的讨论组另一医生成员
					WlyyTalkGroupMember doctorTalkMember = new WlyyTalkGroupMember();
					doctorTalkMember.setMemberCode(object.getString("doctor"));
					doctorTalkMember.setMemberName(object.getString("doctorName"));
					doctorTalkMember.setGroupCode(groupCode);
					doctorTalkMember.setGroupName(talkGroup.getName());
					doctorTalkMember.setType(object.getInt("doctorType"));
					doctorTalkMember.setStatus(1);
					doctorTalkMember.setCzrq(new Date());
					talkMembers.add(doctorTalkMember);
				}
			}
			talkGroupService.saveMembers(talkMembers);
			JSONObject jsonObject = new JSONObject(talkGroup);
			JSONArray membersJson = new JSONArray();
			for(WlyyTalkGroupMember member : talkMembers){
				JSONObject memberJson = new JSONObject(member);
				if(member.getType() == 4){
					Patient p = patientService.findByCode(member.getMemberCode());
					if(p != null){
						memberJson.put("photo",p.getPhoto());
						memberJson.put("sex",p.getSex());
					}
				}else{
					Doctor d = doctorService.findDoctorByCode(member.getMemberCode());
					if(d != null){
						memberJson.put("photo",d.getPhoto());
						memberJson.put("sex",d.getSex());
					}
				}
				membersJson.put(memberJson);
			}
			jsonObject.put("members", membersJson);
			return write(200,"添加成员成功");
		}catch (Exception e){
			e.printStackTrace();
			return error(-1,"添加成员失败!");
		}
	}
                for (WlyyTalkGroupMember member : members) {
                    JSONObject memberJson = new JSONObject(member);
                    if (member.getType() == 4) {
                        Patient p = patientService.findByCode(member.getMemberCode());
                        if (p != null) {
                            memberJson.put("photo", p.getPhoto());
                            memberJson.put("sex", p.getSex());
                        }
                    } else {
                        Doctor d = doctorService.findDoctorByCode(member.getMemberCode());
                        if (d != null) {
                            memberJson.put("photo", d.getPhoto());
                            memberJson.put("sex", d.getSex());
                        }
                    }
                    membersJson.put(memberJson);
                }
                jsonObject.put("members", membersJson);
                return write(200, "创建讨论组成功!", "data", jsonObject);
            } else {
                return error(-1, "创建讨论组失败!");
            }
        } catch (Exception e) {
            return error(-1, "创建讨论组失败!");
        }
    }
    /**
     * 创建讨论组
     *
     * @param name           讨论组名称
     * @param type           讨论组类型
     * @param members        讨论组成员 [{"doctor":"xxx","doctorName":"xxx","doctorType":1}]
     * @param patient        患者
     * @param patientName    患者姓名
     * @param patientInclude 患者是否加入
     * @return
     */
    @RequestMapping(value = "/create/members")
    @ResponseBody
    public String createTalkGroupMany(@RequestParam(required = true) String name,
                                      @RequestParam(required = true) int type,
                                      @RequestParam(required = true) String members,
                                      @RequestParam(required = false) String patient,
                                      @RequestParam(required = false) String patientName,
                                      @RequestParam(required = false) String patientInclude) {
        try {
            Doctor doctor = doctorService.findDoctorByCode(getUID());
            List<WlyyTalkGroupMember> talkMembers = new ArrayList<WlyyTalkGroupMember>();
            if (doctor != null) {
                //讨论组建立
                WlyyTalkGroup talkGroup = new WlyyTalkGroup();
                if (StringUtils.isEmpty(name)) {
                    return error(-1, "请输入讨论组名称");
                }
                if (StringUtils.isEmpty(members)) {
                    return error(-1, "讨论组成员不能为空");
                }
                // 讨论组针对某一病人时
                if (type == 1) {
                    if (StringUtils.isEmpty(patient)) {
                        return error(-1, "请输入患者标识");
                    }
                    if (StringUtils.isEmpty(patientName)) {
                        return error(-1, "请输入患者姓名");
                    }
                    if (StringUtils.isEmpty(patientInclude)) {
                        return error(-1, "请输入患者是否加入讨论组");
                    }
                }
                talkGroup.setCode(talkGroupService.getCode());
                talkGroup.setName(name);
                talkGroup.setType(type);
                talkGroup.setCreator(doctor.getCode());
                talkGroup.setCreatorName(doctor.getName());
                talkGroup.setHospitalCode(doctor.getHospital());
                talkGroup.setHospitalName(doctor.getHosptialName());
                talkGroup.setPatient(patient);
                talkGroup.setPatientName(patientName);
                talkGroup.setCzrq(new Date());
                //病人加入讨论组
                if (!StringUtils.isEmpty(patientInclude) && patientInclude.equals("1")) {
                    WlyyTalkGroupMember patientMember = new WlyyTalkGroupMember();
                    patientMember.setMemberCode(patient);
                    patientMember.setMemberName(patientName);
                    patientMember.setGroupCode(talkGroup.getCode());
                    patientMember.setGroupName(name);
                    patientMember.setType(4);
                    patientMember.setStatus(1);
                    patientMember.setCzrq(new Date());
                    talkMembers.add(patientMember);
                }
                //当前医生加入讨论组
                WlyyTalkGroupMember doctorMember = new WlyyTalkGroupMember();
                doctorMember.setMemberCode(doctor.getCode());
                doctorMember.setMemberName(doctor.getName());
                doctorMember.setGroupCode(talkGroup.getCode());
                doctorMember.setGroupName(name);
                doctorMember.setType(doctor.getLevel());
                doctorMember.setStatus(1);
                doctorMember.setCzrq(new Date());
                talkMembers.add(doctorMember);
                JSONArray membersJArray = new JSONArray(members);
                if (membersJArray != null) {
                    for (int i = 0; i < membersJArray.length(); i++) {
                        JSONObject object = membersJArray.getJSONObject(i);
                        //指定的讨论组另一医生成员
                        WlyyTalkGroupMember doctorTalkMember = new WlyyTalkGroupMember();
                        doctorTalkMember.setMemberCode(object.getString("doctor"));
                        doctorTalkMember.setMemberName(object.getString("doctorName"));
                        doctorTalkMember.setGroupCode(talkGroup.getCode());
                        doctorTalkMember.setGroupName(name);
                        doctorTalkMember.setType(object.getInt("doctorType"));
                        doctorTalkMember.setStatus(1);
                        doctorTalkMember.setCzrq(new Date());
                        talkMembers.add(doctorTalkMember);
                    }
                }
                talkGroupService.saveTalkGroup(talkGroup, talkMembers);
                JSONObject jsonObject = new JSONObject(talkGroup);
                JSONArray membersJson = new JSONArray();
                for (WlyyTalkGroupMember member : talkMembers) {
                    JSONObject memberJson = new JSONObject(member);
                    if (member.getType() == 4) {
                        Patient p = patientService.findByCode(member.getMemberCode());
                        if (p != null) {
                            memberJson.put("photo", p.getPhoto());
                            memberJson.put("sex", p.getSex());
                        }
                    } else {
                        Doctor d = doctorService.findDoctorByCode(member.getMemberCode());
                        if (d != null) {
                            memberJson.put("photo", d.getPhoto());
                            memberJson.put("sex", d.getSex());
                        }
                    }
                    membersJson.put(memberJson);
                }
                jsonObject.put("members", membersJson);
                return write(200, "创建讨论组成功!", "data", jsonObject);
            } else {
                return error(-1, "创建讨论组失败!");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "创建讨论组失败");
        }
    }
    /**
     * 添加讨论组成员
     *
     * @param groupCode  讨论组标识
     * @param groupName  讨论组名称
     * @param doctor     添加医生
     * @param doctorName 添加医生姓名
     * @param doctorType 医生类型
     * @return
     */
    @RequestMapping(value = "addmember")
    @ResponseBody
    public String addTalkMember(
            @RequestParam(required = true) String groupCode,
            @RequestParam(required = true) String groupName,
            @RequestParam(required = true) String doctor,
            @RequestParam(required = true) String doctorName, int doctorType) {
        try {
            WlyyTalkGroupMember member = new WlyyTalkGroupMember();
            member.setGroupCode(groupCode);
            member.setGroupName(groupName);
            member.setMemberCode(doctor);
            member.setMemberName(doctorName);
            member.setStatus(1);
            member.setCzrq(new Date());
            member.setType(doctorType);
            talkGroupService.saveTalkMember(member);
            JSONObject memberJson = new JSONObject(member);
            if (member.getType() == 4) {
                Patient p = patientService.findByCode(member.getMemberCode());
                if (p != null) {
                    memberJson.put("photo", p.getPhoto());
                    memberJson.put("sex", p.getSex());
                }
            } else {
                Doctor d = doctorService.findDoctorByCode(member.getMemberCode());
                if (d != null) {
                    memberJson.put("photo", d.getPhoto());
                    memberJson.put("sex", d.getSex());
                }
            }
            return write(200, "添加讨论组成员成功!", "data", memberJson);
        } catch (Exception e) {
            return error(-1, "添加讨论组成员失败!");
        }
    }
    /**
     * 添加成员
     *
     * @param groupCode 分组code
     * @param members   讨论组成员[{"doctor":"xxx","doctorName":"xxx","doctorType":1}]
     * @return
     */
    @RequestMapping(value = "/addmembers")
    @ResponseBody
    public String addMembers(String groupCode, String groupName, String members) {
        try {
            List<WlyyTalkGroupMember> talkMembers = new ArrayList<>();
            JSONArray membersJArray = new JSONArray(members);
            WlyyTalkGroup talkGroup = talkGroupService.findTalkGroup(groupCode);
            if (talkGroup == null) {
                throw new Exception("讨论组不存在");
            }
            if (membersJArray != null) {
                for (int i = 0; i < membersJArray.length(); i++) {
                    JSONObject object = membersJArray.getJSONObject(i);
                    //指定的讨论组另一医生成员
                    WlyyTalkGroupMember doctorTalkMember = new WlyyTalkGroupMember();
                    doctorTalkMember.setMemberCode(object.getString("doctor"));
                    doctorTalkMember.setMemberName(object.getString("doctorName"));
                    doctorTalkMember.setGroupCode(groupCode);
                    doctorTalkMember.setGroupName(talkGroup.getName());
                    doctorTalkMember.setType(object.getInt("doctorType"));
                    doctorTalkMember.setStatus(1);
                    doctorTalkMember.setCzrq(new Date());
                    talkMembers.add(doctorTalkMember);
                }
            }
            talkGroupService.saveMembers(talkMembers);
            JSONObject jsonObject = new JSONObject(talkGroup);
            JSONArray membersJson = new JSONArray();
            for (WlyyTalkGroupMember member : talkMembers) {
                JSONObject memberJson = new JSONObject(member);
                if (member.getType() == 4) {
                    Patient p = patientService.findByCode(member.getMemberCode());
                    if (p != null) {
                        memberJson.put("photo", p.getPhoto());
                        memberJson.put("sex", p.getSex());
                    }
                } else {
                    Doctor d = doctorService.findDoctorByCode(member.getMemberCode());
                    if (d != null) {
                        memberJson.put("photo", d.getPhoto());
                        memberJson.put("sex", d.getSex());
                    }
                }
                membersJson.put(memberJson);
            }
            jsonObject.put("members", membersJson);
            return write(200, "添加成员成功");
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "添加成员失败!");
        }
    }
    /**
    /**
     * 移除讨论组成员
     * 移除讨论组成员
     * 
     * @param groupCode 讨论组标识
     *
     * @param groupCode  讨论组标识
     * @param memberCode 讨论组成员标识
     * @param memberCode 讨论组成员标识
     * @return
     * @return
     */
     */
	@RequestMapping(value = "removemember")
	@ResponseBody
	public String removeTalkMember(
			@RequestParam(required = true)String groupCode,
			@RequestParam(required = true)String memberCode){
		try{
			talkGroupService.deleteTalkMember(groupCode, memberCode);
			return write(200, "移除成员成功!");
		}catch(Exception e){
			return error(-1, "移除讨论组成员失败!");
		}
	}
	/**
	 * 移除成员
	 *
	 * @param groupCode
	 * @param members
	 * @return
	 */
	@RequestMapping(value = "/removemembers")
	@ResponseBody
	public String removeMembers(String groupCode,String members){
		try{
			String[] memberArray = members.split(",");
			for(String member : memberArray){
				talkGroupService.deleteTalkMember(groupCode, member);
			}
			return write(200,"移除成员成功");
		}catch (Exception e){
			e.printStackTrace();
			return error(-1,"移除成员失败!");
		}
	}
	/**
	 * 获取医生讨论组
	 * 
	 * @return
	 */
	@RequestMapping(value = "mytalkgroups")
	@ResponseBody
	public String getMyTalkGroup(
			@RequestParam(required = false)String doctorName,
			@RequestParam(required = false)String groupType){
		try{
			JSONArray jsonArray = new JSONArray();
			Set<String> typeSet = new HashSet<>();
			if(!StringUtils.isEmpty(groupType)) {
				for (String type : groupType.split(",")) {
					typeSet.add(type);
				}
			}
			List<WlyyTalkGroup> groups = new ArrayList<>();
			if(!StringUtils.isEmpty(doctorName)){
				groups = talkGroupService.searchTalkGroupsByDoctorName(getUID(),doctorName);
			}
			else{
				groups = talkGroupService.findDoctorTalkGroups(getUID());
			}
			if(typeSet.size() > 0 && groups != null){
				for(WlyyTalkGroup talk : groups){
					if(!StringUtils.isEmpty(String.valueOf(talk.getType())) && typeSet.contains(String.valueOf(talk.getType()))){
						jsonArray.put(new JSONObject(talk));
					}
				}
			}else if(groups != null){
				jsonArray = new JSONArray(groups);
			}
			return write(200, "获取医生讨论组成功!","data",jsonArray);
		}catch(Exception ex){
			return error(-1, "获取医生讨论组列表失败!");
		}
	}
	/**
	 * 查询讨论组签约量
	 *
	 * @param groups
	 * @return
	 */
	@RequestMapping(value = "/group_sign")
	@ResponseBody
	public String getMyTalkGroupSign(String groups){
		try{
			List<Map<String,Object>> data = talkGroupService.getTalkGroupsSing(groups.split(","));
			return write(200,"查询成功","data",new JSONArray(data));
		}catch (Exception e){
			return error(-1,"查询失败");
		}
	}
	/**
	 * 获取讨论组成员列表
	 * 
	 * @return
	 */
	@RequestMapping(value = "groupmembers")
	@ResponseBody
	public String getTalkGroupMembers(@RequestParam(required = true)String groupCode){
		try{
			JSONArray result = new JSONArray();
			List<WlyyTalkGroupMember> groupMembers = talkGroupService.findTalkGroupMembers(groupCode);
			if(groupMembers == null){
				groupMembers = new ArrayList<>();
			}
			for(WlyyTalkGroupMember member : groupMembers){
				JSONObject memberJson = new JSONObject(member);
				if(member.getType() == 4){
					Patient p = patientService.findByCode(member.getMemberCode());
					if(p != null){
						memberJson.put("photo",p.getPhoto());
						memberJson.put("sex",p.getSex());
					}
				}else{
    @RequestMapping(value = "removemember")
    @ResponseBody
    public String removeTalkMember(
            @RequestParam(required = true) String groupCode,
            @RequestParam(required = true) String memberCode) {
        try {
            talkGroupService.deleteTalkMember(groupCode, memberCode);
            return write(200, "移除成员成功!");
        } catch (Exception e) {
            return error(-1, "移除讨论组成员失败!");
        }
    }
    /**
     * 移除成员
     *
     * @param groupCode
     * @param members
     * @return
     */
    @RequestMapping(value = "/removemembers")
    @ResponseBody
    public String removeMembers(String groupCode, String members) {
        try {
            String[] memberArray = members.split(",");
            for (String member : memberArray) {
                talkGroupService.deleteTalkMember(groupCode, member);
            }
            return write(200, "移除成员成功");
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "移除成员失败!");
        }
    }
    /**
     * 获取医生讨论组
     *
     * @return
     */
    @RequestMapping(value = "mytalkgroups")
    @ResponseBody
    public String getMyTalkGroup(
            @RequestParam(required = false) String doctorName,
            @RequestParam(required = false) String groupType) {
        try {
            JSONArray jsonArray = new JSONArray();
            Set<String> typeSet = new HashSet<>();
            if (!StringUtils.isEmpty(groupType)) {
                for (String type : groupType.split(",")) {
                    typeSet.add(type);
                }
            }
            List<WlyyTalkGroup> groups = new ArrayList<>();
            if (!StringUtils.isEmpty(doctorName)) {
                groups = talkGroupService.searchTalkGroupsByDoctorName(getUID(), doctorName);
            } else {
                groups = talkGroupService.findDoctorTalkGroups(getUID());
            }
            if (typeSet.size() > 0 && groups != null) {
                for (WlyyTalkGroup talk : groups) {
                    if (!StringUtils.isEmpty(String.valueOf(talk.getType())) && typeSet.contains(String.valueOf(talk.getType()))) {
                        jsonArray.put(new JSONObject(talk));
                    }
                }
            } else if (groups != null) {
                jsonArray = new JSONArray(groups);
            }
            return write(200, "获取医生讨论组成功!", "data", jsonArray);
        } catch (Exception ex) {
            return error(-1, "获取医生讨论组列表失败!");
        }
    }
    /**
     * 查询讨论组签约量
     *
     * @param groups
     * @return
     */
    @RequestMapping(value = "/group_sign")
    @ResponseBody
    public String getMyTalkGroupSign(String groups) {
        try {
            List<Map<String, Object>> data = talkGroupService.getTalkGroupsSing(groups.split(","));
            return write(200, "查询成功", "data", new JSONArray(data));
        } catch (Exception e) {
            return error(-1, "查询失败");
        }
    }
    /**
     * 获取讨论组成员列表
     *
     * @return
     */
    @RequestMapping(value = "groupmembers")
    @ResponseBody
    public String getTalkGroupMembers(@RequestParam(required = true) String groupCode) {
        try {
            JSONArray result = new JSONArray();
            List<WlyyTalkGroupMember> groupMembers = talkGroupService.findTalkGroupMembers(groupCode);
            if (groupMembers == null) {
                groupMembers = new ArrayList<>();
            }
            for (WlyyTalkGroupMember member : groupMembers) {
                JSONObject memberJson = new JSONObject(member);
                if (member.getType() == 4) {
                    Patient p = patientService.findByCode(member.getMemberCode());
                    if (p != null) {
                        memberJson.put("photo", p.getPhoto());
                        memberJson.put("sex", p.getSex());
                    }
                } else {
                    Doctor doctor = doctorService.findDoctorByCode(member.getMemberCode());
                    Doctor doctor = doctorService.findDoctorByCode(member.getMemberCode());
					if(doctor != null){
						memberJson.put("photo",doctor.getPhoto());
						memberJson.put("sex",doctor.getSex());
					}
				}
				result.put(memberJson);
			}
			
			return write(200, "获取讨论组成员列表成功!","data",result);
		}catch(Exception ex){
			return error(-1, "获取讨论组成员列表失败!");
		}
	}
	/**
	 * 获取医生针对某个患者讨论组历史记录
	 * 
	 * @param patient
	 * @return
	 */
	@RequestMapping(value = "histories")
	@ResponseBody
    public String getTalkGroupHistory(@RequestParam(required = true)String patient){
    	try{
    		JSONArray groups = talkGroupService.getTalkGroupHistories(getUID(),patient);
    		return write(200, "获取讨论组历史记录成功!","data",groups);
    	}catch(Exception e){
    		return error(-1, "获取讨论组历史记录失败!");
    	}
                    if (doctor != null) {
                        memberJson.put("photo", doctor.getPhoto());
                        memberJson.put("sex", doctor.getSex());
                    }
                }
                result.put(memberJson);
            }
            return write(200, "获取讨论组成员列表成功!", "data", result);
        } catch (Exception ex) {
            return error(-1, "获取讨论组成员列表失败!");
        }
    }
    /**
     * 获取医生针对某个患者讨论组历史记录
     *
     * @param patient
     * @return
     */
    @RequestMapping(value = "histories")
    @ResponseBody
    public String getTalkGroupHistory(@RequestParam(required = true) String patient) {
        try {
            JSONArray groups = talkGroupService.getTalkGroupHistories(getUID(), patient);
            return write(200, "获取讨论组历史记录成功!", "data", groups);
        } catch (Exception e) {
            return error(-1, "获取讨论组历史记录失败!");
        }
    }
    /**
     * 查找与当前医生相关成员的讨论组
     *
     * @param member
     * @return
     */
    @RequestMapping(value = "related")
    @ResponseBody
    public String getTalkGroupRelated(@RequestParam(required = true) String member, @RequestParam(required = false) String groupType) {
        try {
            JSONArray jsonArray = new JSONArray();
            Set<String> typeSet = new HashSet<>();
            if (!StringUtils.isEmpty(groupType)) {
                for (String type : groupType.split(",")) {
                    typeSet.add(type);
                }
            }
            List<WlyyTalkGroup> groups = talkGroupService.getTalkGroupRelated(getUID(), member);
            if (typeSet.size() > 0 && groups != null) {
                for (WlyyTalkGroup talk : groups) {
                    if (!StringUtils.isEmpty(String.valueOf(talk.getType())) && typeSet.contains(String.valueOf(talk.getType()))) {
                        jsonArray.put(new JSONObject(talk));
                    }
                }
            } else if (groups != null) {
                jsonArray.put(new JSONArray(groups));
            }
            return write(200, "查询成功!", "data", jsonArray);
        } catch (Exception e) {
            return error(-1, "查询失败!");
        }
    }
    }
	/**
	 * 查找与当前医生相关成员的讨论组
	 *
	 * @param member
	 * @return
    /**
     * 查询医生讨论组数量
     *
     * @return
     */
     */
	@RequestMapping(value = "related")
	@ResponseBody
    public String getTalkGroupRelated(@RequestParam(required = true)String member,@RequestParam(required = false)String groupType){
    	try{
			JSONArray jsonArray = new JSONArray();
			Set<String> typeSet = new HashSet<>();
			if(!StringUtils.isEmpty(groupType)) {
				for (String type : groupType.split(",")) {
					typeSet.add(type);
				}
			}
			List<WlyyTalkGroup> groups = talkGroupService.getTalkGroupRelated(getUID(),member);
			if(typeSet.size() > 0 && groups != null){
				for(WlyyTalkGroup talk : groups){
					if(!StringUtils.isEmpty(String.valueOf(talk.getType())) && typeSet.contains(String.valueOf(talk.getType()))){
						jsonArray.put(new JSONObject(talk));
					}
				}
			}else if(groups != null){
				jsonArray.put(new JSONArray(groups));
			}
    		return write(200,"查询成功!","data",jsonArray);
		}catch (Exception e){
			return error(-1,"查询失败!");
		}
	}
	/**
	 * 查询医生讨论组数量
	 *
	 * @return
	 */
	@RequestMapping(value = "count")
	@ResponseBody
	public String getMyTalkGroupCount(){
		try{
			long  count = talkGroupService.getDoctorTalkGroupCount(getUID());
			return write(200,"查询成功!","data",count);
		}catch (Exception e){
			return error(-1,"查询失败!");
		}
	}
	/**
	 * 获取医生一对一聊天
	 *
	 * @param doctorName
	 * @return
	 */
	@RequestMapping(value = "/one_to_one_im")
	@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,"查询失败");
		}
	}
    @RequestMapping(value = "count")
    @ResponseBody
    public String getMyTalkGroupCount() {
        try {
            long count = talkGroupService.getDoctorTalkGroupCount(getUID());
            return write(200, "查询成功!", "data", count);
        } catch (Exception e) {
            return error(-1, "查询失败!");
        }
    }
    /**
     * 获取医生一对一聊天
     *
     * @param doctorName
     * @return
     */
    @RequestMapping(value = "/one_to_one_im")
    @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")
    @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, "查询失败");
        }
    }
}
}