From c7e8c830521973f823cd9ee84781970e9d0d40dd Mon Sep 17 00:00:00 2001 From: shiyang <316555390@qq.com> Date: Wed, 25 May 2022 11:00:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E8=87=AA=E5=8A=A8=E5=8F=91?= =?UTF-8?q?=E5=9B=9E=E8=AE=BF=E6=B6=88=E6=81=AF=E6=97=B6=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E8=81=8A=E5=A4=A9=E7=BB=84=EF=BC=88=E5=89=8D=E7=AB=AF=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E4=B8=8D=E5=88=B0=E8=81=8A=E5=A4=A9=E7=BB=84=E8=BF=99?= =?UTF-8?q?=E9=87=8C=E5=90=8E=E7=AB=AF=E8=87=AA=E5=B7=B1=E6=9F=A5=EF=BC=89?= =?UTF-8?q?,=E8=87=AA=E5=8A=A8=E5=9B=9E=E8=AE=BF=E5=8A=9F=E8=83=BDupdate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ChatGroupController.java | 128 ++++++++++++++++----- .../talkonlineweb/mapper/LymsPatientMapper.java | 4 +- .../lyms/talkonlineweb/task/PushChatInfoTask.java | 9 +- 3 files changed, 106 insertions(+), 35 deletions(-) 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 bec7c93..1d6e554 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/ChatGroupController.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/ChatGroupController.java @@ -317,55 +317,56 @@ public class ChatGroupController { log.info(res); JSONObject jsonObject= JSON.parseObject(res); JSONArray channel_infos=jsonObject.getJSONArray("channel_infos"); - if(channel_infos.size()>0){ + if(channel_infos.size()>0) { for (int i = 0; i < channel_infos.size(); i++) { - JSONObject row=channel_infos.getJSONObject(i); + JSONObject row = channel_infos.getJSONObject(i); - if(row.getJSONObject("meta").size()>0){ - JSONObject payload=row.getJSONObject("meta").getJSONObject("payload"); + if (row.getJSONObject("meta").size() > 0) { + JSONObject payload = row.getJSONObject("meta").getJSONObject("payload"); System.out.println(payload); - payload.put("unread_num",row.get("unread_num")); + payload.put("unread_num", row.get("unread_num")); - String to=payload.getString("to"); - LymsTkrecord tkrecord=new LymsTkrecord(); + String to = payload.getString("to"); + LymsTkrecord tkrecord = new LymsTkrecord(); tkrecord.setHxgroupid(to); - List rLst=lymsTkrecordService.list(Wrappers.query(tkrecord)); - payload.put("stat",0); - if(rLst.size()>0){ - payload.put("stat",rLst.get(0).getStat()); + List rLst = lymsTkrecordService.list(Wrappers.query(tkrecord)); + payload.put("stat", 0); + if (rLst.size() > 0) { + payload.put("stat", rLst.get(0).getStat()); } - LymsChatgroup chatgroup=new LymsChatgroup(); + LymsChatgroup chatgroup = new LymsChatgroup(); chatgroup.setHxgroupid(to); - List cLst=lymsChatgroupService.list(Wrappers.query(chatgroup)); - - if(cLst.size()>0){ - chatgroup=cLst.get(0); - Map param=new HashMap<>(); - param.put("idno",chatgroup.getFromp()); - List pLst=lymsPatientService.listByMap(param); - if(pLst.size()>0){ - payload.put("pat",pLst.get(0)); + List cLst = lymsChatgroupService.list(Wrappers.query(chatgroup)); + + if (cLst.size() > 0) { + chatgroup = cLst.get(0); + Map param = new HashMap<>(); + param.put("idno", chatgroup.getFromp()); + List pLst = lymsPatientService.listByMap(param); + if (pLst.size() > 0) { + payload.put("pat", pLst.get(0)); } param.clear(); - param.put("dlogin",chatgroup.getTarget()); - List dLst=appgetdoctorlistInfoService.listByMap(param); - if(dLst.size()>0){ - payload.put("doc",dLst.get(0)); + param.put("dlogin", chatgroup.getTarget()); + List dLst = appgetdoctorlistInfoService.listByMap(param); + if (dLst.size() > 0) { + payload.put("doc", dLst.get(0)); } - if(CollectionUtils.isEmpty(rLst)){ - if (1==cLst.get(0).getType()) { - payload.put("stat",cLst.get(0).getStat()); + if (CollectionUtils.isEmpty(rLst)) { + if (1 == cLst.get(0).getType()) { + payload.put("stat", cLst.get(0).getStat()); } } } - payload.put("timestamp",row.getJSONObject("meta").get("timestamp")); + payload.put("timestamp", row.getJSONObject("meta").get("timestamp")); rs.add(payload); } - } } + //系统自动发回访消息时获取聊天组(前端获取不到聊天组这里后端自己查) + getChatRecord(rs, jsonObject); } catch (IOException e) { e.printStackTrace(); @@ -682,4 +683,71 @@ public class ChatGroupController { } return baseResponse; } + + /** + * 获取聊天群组,组装数据 + * @param rs 最后的结果 + * @param jsonObject 参数集合 + */ + public void getChatRecord(JSONArray rs,JSONObject jsonObject){ + //登录账号 + String user_name=jsonObject.getJSONObject("user_name").toString(); + //1 环信管理员 2 医生 3 患者 + String type=jsonObject.getJSONObject("type").toString(); + LymsChatgroup queryChatgroup=new LymsChatgroup(); + switch (type){ + case "1": + queryChatgroup.setOwnerk(hxuser); + break; + case "2": + queryChatgroup.setTarget(user_name); + break; + case "3": + queryChatgroup.setFromp(user_name); + break; + } + List chatgroupList=lymsChatgroupService.list(Wrappers.query(queryChatgroup)); + for (LymsChatgroup lymsChatgroup : chatgroupList) { + //组装结果 + JSONObject reusltJsonObject = new JSONObject(); + reusltJsonObject.put("unread_num",0); + reusltJsonObject.put("stat",lymsChatgroup.getStat()); + //患者信息 + LambdaQueryWrapper patientQueryWrapper=new QueryWrapper().lambda(); + patientQueryWrapper.ge(LymsPatient::getIdno, lymsChatgroup.getFromp()); + LymsPatient patient = lymsPatientService.getOne(patientQueryWrapper); + if (null==patient) { + continue; + } + reusltJsonObject.put("pat",patient); + //聊天记录 + LambdaQueryWrapper messageQueryWrapper=new QueryWrapper().lambda(); + messageQueryWrapper.ge(LymsMessage::getTargetid, lymsChatgroup.getHxgroupid()); + messageQueryWrapper.orderByDesc(LymsMessage::getSendtime); + final List lymsMessageList = lymsMessageService.list(messageQueryWrapper); + Map map=new HashMap(); + map.put("msg",lymsMessageList.size()>0?lymsMessageList.get(0).getContent():""); + map.put("type","txt"); + reusltJsonObject.put("bodies",Arrays.asList(map)); + //医生信息 + map.clear(); + map.put("dlogin", lymsChatgroup.getTarget()); + List dLst = appgetdoctorlistInfoService.listByMap(map); + if (dLst.size()==0) { + continue; + } + reusltJsonObject.put("doc",dLst.get(0)); + reusltJsonObject.put("from",lymsChatgroup.getFromp()); + reusltJsonObject.put("to",lymsChatgroup.getHxgroupid()); + reusltJsonObject.put("type","groupchat"); + reusltJsonObject.put("timestamp",lymsMessageList.get(0).getSendtime()); + for (Object r : rs) { + JSONObject rjson= (JSONObject) JSON.toJSON(r); + if (! rjson.get("to").toString().equals(lymsChatgroup.getHxgroupid())) { + rs.add(reusltJsonObject); + } + } + } + + } } diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/mapper/LymsPatientMapper.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/mapper/LymsPatientMapper.java index 2cfdb54..0fbb78b 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/mapper/LymsPatientMapper.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/mapper/LymsPatientMapper.java @@ -54,8 +54,8 @@ public interface LymsPatientMapper extends BaseMapper { "pc.createdtime " + "FROM " + "lyms_patient p " + - "LEFT JOIN lyms_pcase pc ON pc.pid = p.id " + - "LEFT JOIN lyms_doctor dc ON dc.did=pc.dtid ") + "INNER JOIN lyms_pcase pc ON pc.pid = p.id " + + "INNER JOIN lyms_doctor dc ON dc.did=pc.dtid ") List> getPcInfoList(); } diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushChatInfoTask.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushChatInfoTask.java index 4e766e8..0f208d1 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushChatInfoTask.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushChatInfoTask.java @@ -75,7 +75,7 @@ public class PushChatInfoTask { * 第二十天:就诊医生 * 第三十天:值班医生 */ -// @Scheduled(cron = "0 0 19 * * ?") + @Scheduled(cron = "0 0 19 * * ?") public void pushChatInfo() { //用户下的病例信息。每个环信群组代表一个病例,一个病例下有多个疾病种类。 List> PcInfoList=lymsPatientService.getPcInfoList(); @@ -132,7 +132,7 @@ public class PushChatInfoTask { .in(LymsDoctor::getAdminType, Arrays.asList(1,2)) .orderByAsc(LymsDoctor::getAdminType)); //获取 就诊医生/值班医生/值班护士账号 - LymsDoctor doctor2=new LymsDoctor(); + LymsDoctor doctor2=null; if(adminType!=0) { for (LymsDoctor lymsDoctor : doctorAminList) { if (lymsDoctor.getAdminType() == adminType) { @@ -140,6 +140,9 @@ public class PushChatInfoTask { break; } } + if (null==doctor2){ + doctor2=doctor; + } }else { doctor2=doctor; } @@ -217,7 +220,7 @@ public class PushChatInfoTask { group.setOwnerk(hxuser); group.setFromp(patient.getIdno()); group.setHxgroupid(rJson.getJSONObject("data").getString("groupid")); - group.setTarget(doctor.getDlogin()); + group.setTarget(doctor2.getDlogin()); group.setType(1); group.setStat(0); group.setPcid((Integer)map.get("pcid")); -- 1.8.3.1