From b4274a13811bb20e9903faf9d7ea5c5724955046 Mon Sep 17 00:00:00 2001 From: shiyang <316555390@qq.com> Date: Mon, 23 May 2022 16:28:04 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=9B=9E=E8=AE=BF=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lyms/talkonlineweb/task/PushChatInfoTask.java | 266 +++++++-------------- 1 file changed, 85 insertions(+), 181 deletions(-) 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 bb3e1a3..db1bbf4 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushChatInfoTask.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushChatInfoTask.java @@ -77,7 +77,45 @@ public class PushChatInfoTask { for (Map map : PcInfoList) { try { - getPcInfoList( map); + //患者信息 + LymsPatient patient= lymsPatientService.getOne(new QueryWrapper() + .lambda().eq(LymsPatient::getIdno, map.get("idno").toString())); + //医生信息 + LymsDoctor doctor= lymsDoctorService.getOne(new QueryWrapper() + .lambda().eq(LymsDoctor::getDlogin, map.get("dlogin").toString())); + //回访记录 + final List returnVisitRecords = lymsReturnVisitRecordService.list(new QueryWrapper() + .lambda().eq(LymsReturnVisitRecord::getPcid, (Integer)map.get("pcid")) + .eq(LymsReturnVisitRecord::getType, 0)); + //计算(自动回复周期上传病例后- 1:第二天2:第五天3:第十天4:第二十天5:第三十天) + int day = DateUtil.daysBetween(DateUtil.parseYMD(map.get("createdtime").toString()),new Date()); + switch (returnVisitRecords.size()) { + case 0: + if (day==1) { + getEverydayInfo(map,patient,doctor,0,1); + } + break; + case 1: + if (day==4) { + getEverydayInfo(map,patient,doctor,2,2); + } + break; + case 2: + if (day==9) { + getEverydayInfo(map,patient,doctor,1,3); + } + break; + case 3: + if (day==19) { + getEverydayInfo(map,patient,doctor,0,4); + } + break; + case 4: + if (day==29) { + getEverydayInfo(map,patient,doctor,1,5); + } + break; + } } catch (Exception e) { e.printStackTrace(); } @@ -85,192 +123,58 @@ public class PushChatInfoTask { } } + /** + * 每天推送逻辑 + * @param map + * @param patient + * @param doctor + * @param adminType 0:就诊医生 1:值班医生 2:值班护士 + * @param ChatInfoType 自动回复周期上传病例后- 1:第二天2:第五天3:第十天4:第二十天5:第三十天 + */ @Transactional(rollbackFor = Exception.class) - public void getPcInfoList(Map map){ - //患者信息 - LymsPatient patient= lymsPatientService.getOne(new QueryWrapper() - .lambda().eq(LymsPatient::getIdno, map.get("idno").toString())); - //医生信息 - LymsDoctor doctor= lymsDoctorService.getOne(new QueryWrapper() - .lambda().eq(LymsDoctor::getDlogin, map.get("dlogin").toString())); + public void getEverydayInfo(Map map,LymsPatient patient,LymsDoctor doctor,int adminType,int ChatInfoType){ //值班医生/值班护士信息 List doctorAminList= lymsDoctorService.list(new QueryWrapper() .lambda().eq(LymsDoctor::getDpid, doctor.getDpid()) .in(LymsDoctor::getAdminType, Arrays.asList(1,2)) .orderByAsc(LymsDoctor::getAdminType)); - //回访记录 - final List returnVisitRecords = lymsReturnVisitRecordService.list(new QueryWrapper() - .lambda().eq(LymsReturnVisitRecord::getPcid, (Integer)map.get("pcid")) - .eq(LymsReturnVisitRecord::getType, 0)); - //计算(自动回复周期上传病例后- 1:第二天2:第五天3:第十天4:第二十天5:第三十天) - int day = DateUtil.daysBetween(DateUtil.parseYMD(map.get("createdtime").toString()),new Date()); - switch (returnVisitRecords.size()) { - case 0: - if (day==1) { - //环信聊天群组信息 - LymsChatgroup chatgroup = lymsChatgroupService.getOne(new QueryWrapper() - .lambda().eq(LymsChatgroup::getPcid, (Integer)map.get("pcid"))); - if(null==chatgroup){ - //创建聊天群组 - chatgroup=addChatGroup(map,patient,doctor); - } - //就诊医生回复 - final List lymsIllnessList = lymsIllnessService.list(new QueryWrapper() - .lambda().eq(LymsIllness::getPcid, (Integer) map.get("pcid"))); - - for (LymsIllness lymsIllness : lymsIllnessList) { - final LymsChatInfo chatInfo = lymsChatInfoService.getOne(new QueryWrapper() - .lambda().eq(LymsChatInfo::getIllid, lymsIllness.getIid()) - .eq(LymsChatInfo::getType, 1)); - //推送回访 - if (null!=chatInfo && StringUtil.isNotEmpty(chatgroup.getHxgroupid()) && null!=doctor) { - //推送回访消息和保存发送记录 - pushOrMessage(null,chatgroup,chatInfo,doctor); - }else { - throw new RuntimeException("参数不符合"); - } - } - //增加回访记录,修改环信群组状态,修改问诊记录状态 - addReturnVisitRecordOrUpdate(null,chatgroup ,patient,doctor); - } - break; - case 1: - if (day==4) { - //环信群组信息 - LymsChatgroup chatgroup = lymsChatgroupService.getOne(new QueryWrapper() - .lambda().eq(LymsChatgroup::getPcid, (Integer)map.get("pcid"))); - if(null==chatgroup){ - //创建聊天群组 - chatgroup=addChatGroup(map,patient,doctor); - } - //获取值班护士回复 - String dlogin=""; - for (LymsDoctor lymsDoctor : doctorAminList) { - if (lymsDoctor.getAdminType()==2) { - dlogin=lymsDoctor.getDlogin(); - return; - } - } - final List lymsIllnessList = lymsIllnessService.list(new QueryWrapper() - .lambda().eq(LymsIllness::getPcid, (Integer) map.get("pcid"))); - for (LymsIllness lymsIllness : lymsIllnessList) { - final LymsChatInfo chatInfo = lymsChatInfoService.getOne(new QueryWrapper() - .lambda().eq(LymsChatInfo::getIllid, lymsIllness.getIid()) - .eq(LymsChatInfo::getType, 2)); - //推送回访 - if (null!=chatInfo && StringUtil.isNotEmpty(chatgroup.getHxgroupid()) && null!=doctor) { - //推送回访消息和保存发送记录 - pushOrMessage(dlogin,chatgroup,chatInfo,doctor); - }else { - throw new RuntimeException("参数不符合"); - } - } - //增加回访记录,修改环信群组状态,修改问诊记录状态 - addReturnVisitRecordOrUpdate(dlogin,chatgroup ,patient,doctor); - } - break; - case 2: - if (day==9) { - //环信群组信息 - LymsChatgroup chatgroup = lymsChatgroupService.getOne(new QueryWrapper() - .lambda().eq(LymsChatgroup::getPcid, (Integer)map.get("pcid"))); - if(null==chatgroup){ - //创建聊天群组 - chatgroup=addChatGroup(map,patient,doctor); - } - //获取值班医生回复 - String dlogin=""; - for (LymsDoctor lymsDoctor : doctorAminList) { - if (lymsDoctor.getAdminType()==1) { - dlogin=lymsDoctor.getDlogin(); - return; - } - } - final List lymsIllnessList = lymsIllnessService.list(new QueryWrapper() - .lambda().eq(LymsIllness::getPcid, (Integer) map.get("pcid"))); - int i=0; - for (LymsIllness lymsIllness : lymsIllnessList) { - final LymsChatInfo chatInfo = lymsChatInfoService.getOne(new QueryWrapper() - .lambda().eq(LymsChatInfo::getIllid, lymsIllness.getIid()) - .eq(LymsChatInfo::getType, 3)); - //推送回访 - if (null!=chatInfo && StringUtil.isNotEmpty(chatgroup.getHxgroupid()) && null!=doctor) { - //推送回访消息和保存发送记录 - pushOrMessage(dlogin,chatgroup,chatInfo,doctor); - }else { - throw new RuntimeException("参数不符合"); - } - } - //增加回访记录,修改环信群组状态,修改问诊记录状态 - addReturnVisitRecordOrUpdate(dlogin,chatgroup ,patient,doctor); - } - break; - case 3: - if (day==19) { - //环信群组信息 - LymsChatgroup chatgroup = lymsChatgroupService.getOne(new QueryWrapper() - .lambda().eq(LymsChatgroup::getPcid, (Integer)map.get("pcid"))); - if(null==chatgroup){ - //创建聊天群组 - chatgroup=addChatGroup(map,patient,doctor); - } - //就诊医生回复 - final List lymsIllnessList = lymsIllnessService.list(new QueryWrapper() - .lambda().eq(LymsIllness::getPcid, (Integer) map.get("pcid"))); - int i=0; - for (LymsIllness lymsIllness : lymsIllnessList) { - final LymsChatInfo chatInfo = lymsChatInfoService.getOne(new QueryWrapper() - .lambda().eq(LymsChatInfo::getIllid, lymsIllness.getIid()) - .eq(LymsChatInfo::getType, 4)); - //推送回访 - if (null!=chatInfo && StringUtil.isNotEmpty(chatgroup.getHxgroupid()) && null!=doctor) { - //推送回访消息和保存发送记录 - pushOrMessage(null,chatgroup,chatInfo,doctor); - }else { - throw new RuntimeException("参数不符合"); - } - } - //增加回访记录,修改环信群组状态,修改问诊记录状态 - addReturnVisitRecordOrUpdate(null,chatgroup ,patient,doctor); - } - break; - case 4: - if (day==29) { - //环信群组信息 - LymsChatgroup chatgroup = lymsChatgroupService.getOne(new QueryWrapper() - .lambda().eq(LymsChatgroup::getPcid, (Integer)map.get("pcid"))); - if(null==chatgroup){ - //创建聊天群组 - chatgroup=addChatGroup(map,patient,doctor); - } - //获取值班医生回复 - String dlogin=""; - for (LymsDoctor lymsDoctor : doctorAminList) { - if (lymsDoctor.getAdminType()==1) { - dlogin=lymsDoctor.getDlogin(); - return; - } - } - final List lymsIllnessList = lymsIllnessService.list(new QueryWrapper() - .lambda().eq(LymsIllness::getPcid, (Integer) map.get("pcid"))); - int i=0; - for (LymsIllness lymsIllness : lymsIllnessList) { - final LymsChatInfo chatInfo = lymsChatInfoService.getOne(new QueryWrapper() - .lambda().eq(LymsChatInfo::getIllid, lymsIllness.getIid()) - .eq(LymsChatInfo::getType, 5)); - ///推送回访 - if (null!=chatInfo && StringUtil.isNotEmpty(chatgroup.getHxgroupid()) && null!=doctor) { - //推送回访消息和保存发送记录 - pushOrMessage(dlogin,chatgroup,chatInfo,doctor); - }else { - throw new RuntimeException("参数不符合"); - } - } - //增加回访记录,修改环信群组状态,修改问诊记录状态 - addReturnVisitRecordOrUpdate(dlogin,chatgroup ,patient,doctor); + //环信群组信息 + LymsChatgroup chatgroup = lymsChatgroupService.getOne(new QueryWrapper() + .lambda().eq(LymsChatgroup::getPcid, (Integer)map.get("pcid"))); + if(null==chatgroup){ + //创建聊天群组 + chatgroup=addChatGroup(map,patient,doctor); + } + //获取 就诊医生/值班医生/值班护士账号 + String dlogin=""; + if(adminType!=0) { + for (LymsDoctor lymsDoctor : doctorAminList) { + if (lymsDoctor.getAdminType() == adminType) { + dlogin = lymsDoctor.getDlogin(); + break; } - break; + } + }else { + dlogin=doctor.getDlogin(); + } + //病例下的疾病 + final List lymsIllnessList = lymsIllnessService.list(new QueryWrapper() + .lambda().eq(LymsIllness::getPcid, (Integer) map.get("pcid"))); + for (LymsIllness lymsIllness : lymsIllnessList) { + //要推送的疾病对应的话术 + final LymsChatInfo chatInfo = lymsChatInfoService.getOne(new QueryWrapper() + .lambda().eq(LymsChatInfo::getIllid, lymsIllness.getIid()) + .eq(LymsChatInfo::getType, ChatInfoType)); + ///推送回访 + if (null!=chatInfo && StringUtil.isNotEmpty(chatgroup.getHxgroupid()) && null!=doctor) { + //推送回访消息和保存发送记录 + pushOrMessage(dlogin,chatgroup,chatInfo,doctor); + }else { + throw new RuntimeException("参数不符合"); + } } + //增加回访记录,修改环信群组状态,修改问诊记录状态 + addReturnVisitRecordOrUpdate(dlogin,chatgroup ,patient,doctor); } /** @@ -369,7 +273,7 @@ public class PushChatInfoTask { //保存发送消息记录 LymsMessage message=new LymsMessage(); message.setContent(chatInfo.getConten()); - message.setFromid(StringUtil.isEmpty(dlogin)? doctor.getDlogin():dlogin); + message.setFromid(dlogin); message.setTargetid(chatgroup.getHxgroupid()); message.setMtype("TEXT"); message.setSendtime(new Date()); @@ -394,7 +298,7 @@ public class PushChatInfoTask { public void addReturnVisitRecordOrUpdate(String dlogin,LymsChatgroup chatgroup ,LymsPatient patient,LymsDoctor doctor) { //增加回访记录 LymsReturnVisitRecord returnVisitRecord=new LymsReturnVisitRecord(); - returnVisitRecord.setDlogin(StringUtil.isEmpty(dlogin)? doctor.getDlogin():dlogin); + returnVisitRecord.setDlogin(dlogin); returnVisitRecord.setDpid(doctor.getDpid()); returnVisitRecord.setIdno(patient.getIdno()); returnVisitRecord.setType(0); -- 1.8.3.1