diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/ChatGroupController.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/ChatGroupController.java index 5337fd2..62a531f 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/ChatGroupController.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/ChatGroupController.java @@ -19,6 +19,7 @@ import com.lyms.talkonlineweb.util.HXService; import com.lyms.talkonlineweb.util.StringUtil; import lombok.extern.log4j.Log4j2; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -80,8 +81,14 @@ public class ChatGroupController { LymsChatgroup group2 = gLst.get(0); group = group2; } else { - LymsPatient patient= lymsPatientService.getOne(new QueryWrapper().lambda().eq(LymsPatient::getIdno, group.getFromp())); - LymsDoctor doctor= lymsDoctorService.getOne(new QueryWrapper().lambda().eq(LymsDoctor::getDlogin, group.getTarget())); + LymsPatient patient= lymsPatientService.getOne(new QueryWrapper() + .lambda().eq(LymsPatient::getIdno, group.getFromp())); + LymsDoctor doctor= lymsDoctorService.getOne(new QueryWrapper() + .lambda().eq(LymsDoctor::getDlogin, group.getTarget())); + List adminDlogins=new ArrayList<>(); + adminDlogins.add(group.getFromp()); + List groupnames=new ArrayList<>(); + groupnames.add(patient.getPname()); //患者注册环信 if (StringUtil.isEmpty(patient.getHxid())) { JSONObject json = hxService.addUser(patient.getIdno(), Constant.COMMON_PASSWD, patient.getPname()); @@ -91,23 +98,44 @@ public class ChatGroupController { lymsPatientService.updateById(patient); } } - //医生注册环信 - if (StringUtil.isEmpty(doctor.getHxid())) { - JSONObject json = hxService.addUser(doctor.getDlogin(), Constant.COMMON_PASSWD, doctor.getDname()); - JSONArray rArr = json.getJSONArray("entities"); - if (rArr.size() > 0) { - doctor.setHxid(rArr.getJSONObject(0).getString("uuid")); - lymsDoctorService.updateById(doctor); + //查询值班医生 + List doctorAminList= lymsDoctorService.list(new QueryWrapper() + .lambda().eq(LymsDoctor::getDpid, doctor.getDpid()) + .eq(LymsDoctor::getAdminType, 1)); + //科室值班医生注册环信 + for (LymsDoctor lymsDoctor : doctorAminList) { + if(StringUtil.isEmpty(lymsDoctor.getHxid())) { + JSONObject json = hxService.addUser(lymsDoctor.getDlogin(), Constant.COMMON_PASSWD, lymsDoctor.getDname()); + JSONArray rArr = json.getJSONArray("entities"); + if (rArr.size() > 0) { + lymsDoctor.setHxid(rArr.getJSONObject(0).getString("uuid")); + lymsDoctorService.updateById(lymsDoctor); + } + } + adminDlogins.add(lymsDoctor.getDlogin()); + groupnames.add(lymsDoctor.getDname()); + } + if ( ! adminDlogins.contains(doctor.getDlogin())) { + //医生注册环信 + if (StringUtil.isEmpty(doctor.getHxid())) { + JSONObject json = hxService.addUser(doctor.getDlogin(), Constant.COMMON_PASSWD, doctor.getDname()); + JSONArray rArr = json.getJSONArray("entities"); + if (rArr.size() > 0) { + doctor.setHxid(rArr.getJSONObject(0).getString("uuid")); + lymsDoctorService.updateById(doctor); + adminDlogins.add(doctor.getDlogin()); + groupnames.add(doctor.getDname()); + } } } - log.info("创建环信组:{} from:{} target:{}", group.getOwnerk(), group.getFromp(), group.getTarget()); - JSONObject rJson = hxService.addChatGroups(group.getFromp() + "," + group.getTarget(), group.getOwnerk(), new String[]{group.getFromp(), group.getTarget()}); + + log.info("创建环信组:{} description:{}", group.getOwnerk(), StringUtils.join(adminDlogins.toArray(), ",")); + JSONObject rJson = hxService.addChatGroups(StringUtils.join(adminDlogins.toArray(), ","), group.getOwnerk(), (String[]) adminDlogins.toArray()); log.info("rJson:" + rJson); group.setHxgroupid(rJson.getJSONObject("data").getString("groupid")); - group.setDescription(group.getFromp() + "," + group.getTarget()); -// group.setGroupname(group.getFromp() + "," + group.getTarget()); + group.setDescription(StringUtils.join(adminDlogins.toArray(), ",")); //环信群组名称更改为姓名串-用于PC端问诊展示 - group.setGroupname(patient.getPname() + "," + doctor.getDdname()); + group.setGroupname(StringUtils.join(groupnames.toArray(), ",")); group.setCtime(new Date()); lymsChatgroupService.saveOrUpdate(group); @@ -331,20 +359,28 @@ public class ChatGroupController { * @param current 页数 * @param size 条数 * @param synthesisQuery 综合筛选条件 + * @param adminType 0:普通医生 1:科室管理员(用于问诊聊天) * @return */ @GetMapping("getDoctorPatient") @TokenRequired - public BaseResponse getDoctorPatient(Integer doctorId,Integer current, Integer size,String synthesisQuery){ + public BaseResponse getDoctorPatient(Integer doctorId,Integer current, Integer size,String synthesisQuery, + Integer did){ BaseResponse baseResponse =new BaseResponse(); - if(null==doctorId){ + if((null==doctorId && null==did)||(null!=doctorId && null!=did)){ baseResponse.setErrorcode(ErrorCodeConstants.PARAMETER_ERROR); baseResponse.setErrormsg("参数错误"); return baseResponse; } Page> page=new Page<>(current,size); QueryWrapper queryWrapper=new QueryWrapper<>(); - queryWrapper.eq("dtid", doctorId); + if(null!=did){ + //科室下的患者 + queryWrapper.eq("did", did); + }else { + //医生下的患者 + queryWrapper.eq("dtid", doctorId); + } if (StringUtil.isNotEmpty(synthesisQuery)){ queryWrapper.like("pname", synthesisQuery); } @@ -362,22 +398,4 @@ public class ChatGroupController { return baseResponse; } - /** - * 进入医生回访聊天 - * @param request - * @return - */ - @GetMapping("getDoctorCallback") - @TokenRequired - public BaseResponse getDoctorCallback(HttpServletRequest request){ - BaseResponse baseResponse =new BaseResponse(); - Map param=new HashMap<>(); - param.put("vtype",998); - List dLst=lymsDictService.listByMap(param); - if(dLst.size()>0){ - baseResponse.setObject(dLst.get(0)); - } - return baseResponse; - } - } diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/DoctorController.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/DoctorController.java index b4a31f9..486cda1 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/DoctorController.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/DoctorController.java @@ -50,6 +50,8 @@ public class DoctorController { @Autowired private AppgetdoctorlistInfoService appgetdoctorlistInfoService; + @Autowired + private LymsChatgroupService lymsChatgroupService; /** * 获取医生列表 @@ -315,4 +317,34 @@ public class DoctorController { baseResponse.setErrormsg(f==true?"成功":"失败"); return baseResponse; } + /** + * 查询科室值班医生 + * @param groupId 群组ID + * @return + */ + @GetMapping("getAdminDoctor") + @TokenRequired + public BaseResponse getAdminDoctor(Integer groupId){ + BaseResponse baseResponse=new BaseResponse(); + List doctorAminList= new ArrayList<>(); + try { + final LymsChatgroup chatgroup = lymsChatgroupService.getOne(new QueryWrapper() + .lambda().eq(LymsChatgroup::getHxgroupid, groupId)); + if(null!=chatgroup) { + final LymsDoctor lymsDoctor = lymsDoctorService.getOne(new QueryWrapper() + .lambda().eq(LymsDoctor::getDlogin, chatgroup.getTarget())); + if (null!=lymsDoctor) { + doctorAminList = lymsDoctorService.list(new QueryWrapper() + .lambda().eq(LymsDoctor::getDpid, lymsDoctor.getDpid()) + .eq(LymsDoctor::getAdminType, 1)); + } + + } + } catch (Exception e) { + e.printStackTrace(); + } + baseResponse.setObject(doctorAminList); + baseResponse.setErrormsg("成功"); + return baseResponse; + } } diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/TkRecordController.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/TkRecordController.java index 1eb5b2a..66eaeb7 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/TkRecordController.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/TkRecordController.java @@ -2,6 +2,7 @@ package com.lyms.talkonlineweb.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.lyms.talkonlineweb.annotation.TokenRequired; import com.lyms.talkonlineweb.domain.*; @@ -11,10 +12,12 @@ import com.lyms.talkonlineweb.util.Constant; import com.lyms.talkonlineweb.util.HXService; import com.lyms.talkonlineweb.util.StringUtil; import lombok.extern.log4j.Log4j2; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; @RestController @@ -80,6 +83,11 @@ public class TkRecordController { LymsChatgroup group =new LymsChatgroup(); LymsDoctor doctor=lymsDoctorService.getById(tkrecord.getDid()); LymsPatient patient=lymsPatientService.getById(tkrecord.getPid()); + group.setOwnerk("test"); + List adminDlogins=new ArrayList<>(); + adminDlogins.add(group.getFromp()); + List groupnames=new ArrayList<>(); + groupnames.add(patient.getPname()); //患者注册环信 if (StringUtil.isEmpty(patient.getHxid())) { JSONObject json = hxService.addUser(patient.getIdno(), Constant.COMMON_PASSWD, patient.getPname()); @@ -89,28 +97,45 @@ public class TkRecordController { lymsPatientService.updateById(patient); } } - //医生注册环信 - if (StringUtil.isEmpty(doctor.getHxid())) { - JSONObject json = hxService.addUser(doctor.getDlogin(), Constant.COMMON_PASSWD, doctor.getDname()); - JSONArray rArr = json.getJSONArray("entities"); - if (rArr.size() > 0) { - doctor.setHxid(rArr.getJSONObject(0).getString("uuid")); - lymsDoctorService.updateById(doctor); + //查询值班医生 + List doctorAminList= lymsDoctorService.list(new QueryWrapper() + .lambda().eq(LymsDoctor::getDpid, doctor.getDpid()) + .eq(LymsDoctor::getAdminType, 1)); + //科室值班医生注册环信 + for (LymsDoctor lymsDoctor : doctorAminList) { + if(StringUtil.isEmpty(lymsDoctor.getHxid())) { + JSONObject json = hxService.addUser(lymsDoctor.getDlogin(), Constant.COMMON_PASSWD, lymsDoctor.getDname()); + JSONArray rArr = json.getJSONArray("entities"); + if (rArr.size() > 0) { + lymsDoctor.setHxid(rArr.getJSONObject(0).getString("uuid")); + lymsDoctorService.updateById(lymsDoctor); + } + } + adminDlogins.add(lymsDoctor.getDlogin()); + groupnames.add(lymsDoctor.getDname()); + } + if ( ! adminDlogins.contains(doctor.getDlogin())) { + //医生注册环信 + if (StringUtil.isEmpty(doctor.getHxid())) { + JSONObject json = hxService.addUser(doctor.getDlogin(), Constant.COMMON_PASSWD, doctor.getDname()); + JSONArray rArr = json.getJSONArray("entities"); + if (rArr.size() > 0) { + doctor.setHxid(rArr.getJSONObject(0).getString("uuid")); + lymsDoctorService.updateById(doctor); + adminDlogins.add(doctor.getDlogin()); + groupnames.add(doctor.getDname()); + } } } - group.setFromp(patient.getIdno()); - group.setTarget(doctor.getDlogin()); - group.setOwnerk("test"); - log.info("创建环信组:{} from:{} target:{}", group.getOwnerk(), group.getFromp(), group.getTarget()); - JSONObject rJson = hxService.addChatGroups(group.getFromp() + "," + group.getTarget(), group.getOwnerk(), new String[]{group.getFromp(), group.getTarget()}); + + log.info("创建环信组:{} description:{}", group.getOwnerk(), StringUtils.join(adminDlogins.toArray(), ",")); + JSONObject rJson = hxService.addChatGroups(StringUtils.join(adminDlogins.toArray(), ","), group.getOwnerk(), (String[]) adminDlogins.toArray()); log.info("rJson:" + rJson); group.setHxgroupid(rJson.getJSONObject("data").getString("groupid")); - group.setDescription(group.getFromp() + "," + group.getTarget()); -// group.setGroupname(group.getFromp() + "," + group.getTarget()); - + group.setDescription(StringUtils.join(adminDlogins.toArray(), ",")); //环信群组名称更改为姓名串-用于PC端问诊展示 - group.setGroupname(patient.getPname() + "," + doctor.getDname()); + group.setGroupname(StringUtils.join(groupnames.toArray(), ",")); if(null==tkrecord.getType()) { lymsChatgroupService.saveOrUpdate(group); lymsTkrecordService.save(tkrecord); diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsDoctor.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsDoctor.java index 95da26e..dad9001 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsDoctor.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsDoctor.java @@ -164,6 +164,12 @@ public class LymsDoctor implements Serializable { */ @TableField(value = "specialty") private String specialty; + /** + * 问诊医生类型 + * 0:普通医生 1:值班医生(用于问诊聊天) + */ + @TableField(value = "admin_type") + private Integer adminType; @Override diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/mapper/LymsChatgroupMapper.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/mapper/LymsChatgroupMapper.java index f6e1742..49b6471 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/mapper/LymsChatgroupMapper.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/mapper/LymsChatgroupMapper.java @@ -34,6 +34,7 @@ public interface LymsChatgroupMapper extends BaseMapper { "p.enrolment_phone," , "pc.mobile," , "pc.pcid," , + "pc.did," , "pc.dtid," , "pc.dtname," , "i.iname, " , diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/util/DateUtil.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/util/DateUtil.java index 03543c5..3f7cdac 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/util/DateUtil.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/util/DateUtil.java @@ -37,6 +37,7 @@ public class DateUtil { public static SimpleDateFormat y_m = new SimpleDateFormat("yyyy年MM月"); public static SimpleDateFormat y_m_d1 = new SimpleDateFormat("yyyy年MM月dd日"); + public static SimpleDateFormat y_m_d2 = new SimpleDateFormat("yyyy年MM月dd日 HH点mm分ss秒"); public static SimpleDateFormat md = new SimpleDateFormat("MM-dd"); public static SimpleDateFormat m_d = new SimpleDateFormat("MM/dd"); public static SimpleDateFormat y_m_d_h_m_s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -64,7 +65,26 @@ public class DateUtil { public static String getYyyyMmDdHhMmSs(Date datetime) { return getDateTime(datetime, YYYY_MM_DD_HH_MM_SS); } - + public static String getyyyy_MM_dd1(Date d) { + if (d == null) { + return null; + } + try { + return y_m_d1.format(d); + } catch (Exception e) { + return null; + } + } + public static String getyyyy_MM_dd_HH_mm_ss(Date d) { + if (d == null) { + return null; + } + try { + return y_m_d2.format(d); + } catch (Exception e) { + return null; + } + } public static Date parseYMD(String s) { if (s == null) { return null; @@ -79,6 +99,34 @@ public class DateUtil { lock.unlock(); } } + public static Date parseYMDHMS(String s) { + if (s == null) { + return null; + } + lock.lock(); + try { + + return y_m_d_h_m_s.parse(s); + } catch (Exception e) { + return null; + } finally { + lock.unlock(); + } + } + public static Date parseYMDHM(String s) { + if (s == null) { + return null; + } + lock.lock(); + try { + + return y_m_d_h_m1.parse(s); + } catch (Exception e) { + return null; + } finally { + lock.unlock(); + } + } public static String getDateTime(Date date, String pattern) { if (date == null) {