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 97bad67..95859e6 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/ChatGroupController.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/ChatGroupController.java @@ -620,5 +620,61 @@ public class ChatGroupController { } return baseResponse; } - + /** + * 添加自动回复信息-查重 + * @param type 自动回复类型 + * @param illid 疾病id + * @param id 修改时用 + * @return true 可以使用,false已经存在 + */ + @GetMapping("getChatInfoRepetition") + @TokenRequired + public BaseResponse getChatInfoRepetition(Integer type, Integer illid, @RequestParam(required = false) Integer id){ + BaseResponse baseResponse=new BaseResponse(); + try { + Map map= new HashMap<>(); + map.put("type", true);map.put("illid", true); + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("type", type); + queryWrapper.eq("illid", illid); + if(null!=id){//修改的时候判断是否重复 + QueryWrapper queryWrapper2=new QueryWrapper<>(); + queryWrapper2.eq("id", id); + LymsChatInfo chatInfo2=lymsChatInfoService.getOne(queryWrapper2); + List chatInfoList=lymsChatInfoService.list(queryWrapper); + if(CollectionUtils.isNotEmpty(chatInfoList)){ + if(null!=type && !chatInfo2.getType().equals(type)){ + for (LymsChatInfo chatInfo : chatInfoList) { + if(chatInfo.getType().equals(type)){ + map.put("type", false); + } + } + } + if(null!=illid && !chatInfo2.getIllid().equals(illid)){ + for (LymsChatInfo chatInfo : chatInfoList) { + if(chatInfo.getIllid().equals(illid)){ + map.put("illid", false); + } + } + } + } + baseResponse.setObject(map); + }else { + LymsChatInfo chatInfo=lymsChatInfoService.getOne(queryWrapper); + if(null!=type && chatInfo.getType().equals(type)){ + map.put("type", false); + } + if(null!=illid && illid.equals(chatInfo.getIllid())){ + map.put("illid", false); + } + baseResponse.setObject(map); + } + baseResponse.setErrormsg("成功"); + } catch (Exception e) { + baseResponse.setErrorcode(1); + baseResponse.setErrormsg("失败"); + e.printStackTrace(); + } + return baseResponse; + } } diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/RegionsController.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/RegionsController.java index 7965273..7895b35 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/RegionsController.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/RegionsController.java @@ -164,6 +164,7 @@ public class RegionsController { } baseResponse.setErrormsg("成功"); } catch (Exception e) { + baseResponse.setErrorcode(1); baseResponse.setErrormsg("失败"); e.printStackTrace(); } diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsChatInfo.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsChatInfo.java index e93c1c3..afce972 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsChatInfo.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsChatInfo.java @@ -37,7 +37,7 @@ public class LymsChatInfo implements Serializable { * 疾病id */ @TableField(value = "illid") - private String illid; + private Integer illid; /** * 创建时间 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 1a30602..9956dd8 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushChatInfoTask.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/task/PushChatInfoTask.java @@ -66,355 +66,185 @@ public class PushChatInfoTask { * 每天19点执行回访信息系统回复 */ @Scheduled(cron = "0 0 19 * * ?") - @Transactional(rollbackFor = Exception.class) public void pushChatInfo() { List> PcInfoList=lymsPatientService.getPcInfoList(); for (Map map : PcInfoList) { + try { - LymsChatgroup chatgroup = lymsChatgroupService.getOne(new QueryWrapper() - .lambda().eq(LymsChatgroup::getPcid, (Integer)map.get("pcid"))); - 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())); - if(null==chatgroup){ - //创建聊天群组 - chatgroup=addChatGroup(map,patient,doctor); - } + getPcInfoList( map); + } catch (Exception e) { + e.printStackTrace(); + } + + } + } + + @Transactional(rollbackFor = Exception.class) + public void getPcInfoList(Map map){ + LymsChatgroup chatgroup = lymsChatgroupService.getOne(new QueryWrapper() + .lambda().eq(LymsChatgroup::getPcid, (Integer)map.get("pcid"))); + 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())); + if(null==chatgroup){ + //创建聊天群组 + chatgroup=addChatGroup(map,patient,doctor); + } + + if (null!=chatgroup) { + final List returnVisitRecords = lymsReturnVisitRecordService.list(new QueryWrapper() + .lambda().eq(LymsReturnVisitRecord::getPcid, (Integer)map.get("pcid"))); + List doctorAminList= lymsDoctorService.list(new QueryWrapper() + .lambda().eq(LymsDoctor::getDpid, doctor.getDpid()) + .in(LymsDoctor::getAdminType, Arrays.asList(1,2)) + .orderByAsc(LymsDoctor::getAdminType)); + int day = DateUtil.daysBetween(DateUtil.parseYMD(map.get("createdtime").toString()),new Date()); + switch (returnVisitRecords.size()) { + case 0: + if (day==2) { + //就诊医生回复 + final List lymsIllnessList = lymsIllnessService.list(new QueryWrapper() + .lambda().eq(LymsIllness::getPcid, (Integer) map.get("pcid"))); - if (null!=chatgroup) { - final List returnVisitRecords = lymsReturnVisitRecordService.list(new QueryWrapper() - .lambda().eq(LymsReturnVisitRecord::getPcid, (Integer)map.get("pcid"))); - List doctorAminList= lymsDoctorService.list(new QueryWrapper() - .lambda().eq(LymsDoctor::getDpid, doctor.getDpid()) - .in(LymsDoctor::getAdminType, Arrays.asList(1,2)) - .orderByAsc(LymsDoctor::getAdminType)); - int day = DateUtil.daysBetween(DateUtil.parseYMD(map.get("createdtime").toString()),new Date()); - switch (returnVisitRecords.size()) { - case 0: - if (day==2) { - 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, 1)); - //推送回访 - if (null!=chatInfo && StringUtil.isNotEmpty(chatgroup.getHxgroupid()) && null!=doctor) { - JSONObject jsonObject = hxService.sendGroupMsg(new String[]{chatgroup.getHxgroupid()}, chatInfo.getConten(), doctor.getDlogin()); - if (null!=jsonObject) { - i++; - //保存发送消息记录 - LymsMessage message=new LymsMessage(); - message.setContent(chatInfo.getConten()); - message.setFromid(doctor.getDlogin()); - message.setTargetid(chatgroup.getHxgroupid()); - message.setMtype("TEXT"); - message.setSendtime(new Date()); - message.setType(1); - lymsMessageService.save(message); - } - } - } - if (i!=0) { - //增加回访记录 - LymsReturnVisitRecord returnVisitRecord=new LymsReturnVisitRecord(); - returnVisitRecord.setDlogin(doctor.getDlogin());//第二天,就诊医生自动回复 - returnVisitRecord.setDpid(doctor.getDpid()); - returnVisitRecord.setIdno(patient.getIdno()); - returnVisitRecord.setType(0); - returnVisitRecord.setHxgroupid(chatgroup.getHxgroupid()); - lymsReturnVisitRecordService.save(returnVisitRecord); - chatgroup.setStat(0); - final boolean b = lymsChatgroupService.updateById(chatgroup); - if (!b) { - throw new RuntimeException("回滚状态,执行失败,请联系管理员"); - } - //修改同一群组记录的状态 - final List tkrecordList = lymsTkrecordService.list(new QueryWrapper() - .lambda().eq(LymsTkrecord::getHxgroupid, chatgroup.getHxgroupid())); - for (LymsTkrecord lymsTkrecord : tkrecordList) { - try { - lymsTkrecord.setStat(0); - final boolean saveOrUpdate = lymsTkrecordService.updateById(lymsTkrecord); - if (!saveOrUpdate) { - throw new RuntimeException("回滚状态,执行失败,请联系管理员"); - } - } catch (RuntimeException e) { - e.printStackTrace(); - throw new RuntimeException("回滚状态,执行失败,请联系管理员"); - } - } - } + 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("参数不符合"); } - break; - case 1: - if (day==5) { - //获取值班护士 - 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"))); - int i=0; - 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) { - JSONObject jsonObject = hxService.sendGroupMsg(new String[]{chatgroup.getHxgroupid()}, chatInfo.getConten(), StringUtil.isEmpty(dlogin)? doctor.getDlogin():dlogin); - if (null!=jsonObject) { - i++; - //保存发送消息记录 - LymsMessage message=new LymsMessage(); - message.setContent(chatInfo.getConten()); - message.setFromid(StringUtil.isEmpty(dlogin)? doctor.getDlogin():dlogin); - message.setTargetid(chatgroup.getHxgroupid()); - message.setMtype("TEXT"); - message.setSendtime(new Date()); - message.setType(1); - lymsMessageService.save(message); - } - } - } - if (i!=0) { - //增加回访记录 - LymsReturnVisitRecord returnVisitRecord=new LymsReturnVisitRecord(); - returnVisitRecord.setDlogin(StringUtil.isEmpty(dlogin)? doctor.getDlogin():dlogin);//第五天,值班护士自动回复 - returnVisitRecord.setDpid(doctor.getDpid()); - returnVisitRecord.setIdno(patient.getIdno()); - returnVisitRecord.setType(0); - returnVisitRecord.setHxgroupid(chatgroup.getHxgroupid()); - lymsReturnVisitRecordService.save(returnVisitRecord); - chatgroup.setStat(0); - final boolean b = lymsChatgroupService.updateById(chatgroup); - if (!b) { - throw new RuntimeException("回滚状态,执行失败,请联系管理员"); - } - //修改同一群组记录的状态 - final List tkrecordList = lymsTkrecordService.list(new QueryWrapper() - .lambda().eq(LymsTkrecord::getHxgroupid, chatgroup.getHxgroupid())); - for (LymsTkrecord lymsTkrecord : tkrecordList) { - try { - lymsTkrecord.setStat(0); - final boolean saveOrUpdate = lymsTkrecordService.updateById(lymsTkrecord); - if (!saveOrUpdate) { - throw new RuntimeException("回滚状态,执行失败,请联系管理员"); - } - } catch (RuntimeException e) { - e.printStackTrace(); - throw new RuntimeException("回滚状态,执行失败,请联系管理员"); - } - } - } + } + //增加回访记录,修改环信群组状态,修改问诊记录状态 + addReturnVisitRecordOrUpdate(null,chatgroup ,patient,doctor); + } + break; + case 1: + if (day==5) { + //获取值班护士回复 + String dlogin=""; + for (LymsDoctor lymsDoctor : doctorAminList) { + if (lymsDoctor.getAdminType()==2) { + dlogin=lymsDoctor.getDlogin(); + return; } - break; - case 2: - if (day==10) { - //获取值班医生 - 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) { - JSONObject jsonObject = hxService.sendGroupMsg(new String[]{chatgroup.getHxgroupid()}, chatInfo.getConten(), StringUtil.isEmpty(dlogin)? doctor.getDlogin():dlogin); - if (null!=jsonObject) { - i++; - //保存发送消息记录 - LymsMessage message=new LymsMessage(); - message.setContent(chatInfo.getConten()); - message.setFromid(StringUtil.isEmpty(dlogin)? doctor.getDlogin():dlogin); - message.setTargetid(chatgroup.getHxgroupid()); - message.setMtype("TEXT"); - message.setSendtime(new Date()); - message.setType(1); - lymsMessageService.save(message); - } - } - } - if (i!=0) { - //增加回访记录 - LymsReturnVisitRecord returnVisitRecord=new LymsReturnVisitRecord(); - returnVisitRecord.setDlogin(StringUtil.isEmpty(dlogin)? doctor.getDlogin():dlogin);//第十天,值班医生自动回复 - returnVisitRecord.setDpid(doctor.getDpid()); - returnVisitRecord.setIdno(patient.getIdno()); - returnVisitRecord.setType(0); - returnVisitRecord.setHxgroupid(chatgroup.getHxgroupid()); - lymsReturnVisitRecordService.save(returnVisitRecord); - chatgroup.setStat(0); - final boolean b = lymsChatgroupService.updateById(chatgroup); - if (!b) { - throw new RuntimeException("回滚状态,执行失败,请联系管理员"); - } - //修改同一群组记录的状态 - final List tkrecordList = lymsTkrecordService.list(new QueryWrapper() - .lambda().eq(LymsTkrecord::getHxgroupid, chatgroup.getHxgroupid())); - for (LymsTkrecord lymsTkrecord : tkrecordList) { - try { - lymsTkrecord.setStat(0); - final boolean saveOrUpdate = lymsTkrecordService.updateById(lymsTkrecord); - if (!saveOrUpdate) { - throw new RuntimeException("回滚状态,执行失败,请联系管理员"); - } - } catch (RuntimeException e) { - e.printStackTrace(); - throw new RuntimeException("回滚状态,执行失败,请联系管理员"); - } - } - } + } + 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("参数不符合"); } - break; - case 3: - if (day==20) { - 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) { - JSONObject jsonObject = hxService.sendGroupMsg(new String[]{chatgroup.getHxgroupid()}, chatInfo.getConten(), doctor.getDlogin()); - if (null!=jsonObject) { - i++; - //保存发送消息记录 - LymsMessage message=new LymsMessage(); - message.setContent(chatInfo.getConten()); - message.setFromid(doctor.getDlogin()); - message.setTargetid(chatgroup.getHxgroupid()); - message.setMtype("TEXT"); - message.setSendtime(new Date()); - message.setType(1); - lymsMessageService.save(message); - } - } - } - if (i!=0) { - //增加回访记录 - LymsReturnVisitRecord returnVisitRecord=new LymsReturnVisitRecord(); - returnVisitRecord.setDlogin(doctor.getDlogin());//第二十天,就诊医生自动回复 - returnVisitRecord.setDpid(doctor.getDpid()); - returnVisitRecord.setIdno(patient.getIdno()); - returnVisitRecord.setType(0); - returnVisitRecord.setHxgroupid(chatgroup.getHxgroupid()); - lymsReturnVisitRecordService.save(returnVisitRecord); - chatgroup.setStat(0); - final boolean b = lymsChatgroupService.updateById(chatgroup); - if (!b) { - throw new RuntimeException("回滚状态,执行失败,请联系管理员"); - } - //修改同一群组记录的状态 - final List tkrecordList = lymsTkrecordService.list(new QueryWrapper() - .lambda().eq(LymsTkrecord::getHxgroupid, chatgroup.getHxgroupid())); - for (LymsTkrecord lymsTkrecord : tkrecordList) { - try { - lymsTkrecord.setStat(0); - final boolean saveOrUpdate = lymsTkrecordService.updateById(lymsTkrecord); - if (!saveOrUpdate) { - throw new RuntimeException("回滚状态,执行失败,请联系管理员"); - } - } catch (RuntimeException e) { - e.printStackTrace(); - throw new RuntimeException("回滚状态,执行失败,请联系管理员"); - } - } - } + } + //增加回访记录,修改环信群组状态,修改问诊记录状态 + addReturnVisitRecordOrUpdate(dlogin,chatgroup ,patient,doctor); + } + break; + case 2: + if (day==10) { + //获取值班医生回复 + String dlogin=""; + for (LymsDoctor lymsDoctor : doctorAminList) { + if (lymsDoctor.getAdminType()==1) { + dlogin=lymsDoctor.getDlogin(); + return; } - break; - case 4: - if (day==30) { - //获取值班医生 - 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) { - JSONObject jsonObject = hxService.sendGroupMsg(new String[]{chatgroup.getHxgroupid()}, chatInfo.getConten(), StringUtil.isEmpty(dlogin)? doctor.getDlogin():dlogin); - if (null!=jsonObject) { - i++; - //保存发送消息记录 - LymsMessage message=new LymsMessage(); - message.setContent(chatInfo.getConten()); - message.setFromid(StringUtil.isEmpty(dlogin)? doctor.getDlogin():dlogin); - message.setTargetid(chatgroup.getHxgroupid()); - message.setMtype("TEXT"); - message.setSendtime(new Date()); - message.setType(1); - lymsMessageService.save(message); - } - } - } - if (i!=0) { - //增加回访记录 - LymsReturnVisitRecord returnVisitRecord=new LymsReturnVisitRecord(); - returnVisitRecord.setDlogin(StringUtil.isEmpty(dlogin)? doctor.getDlogin():dlogin);//第三十天,值班医生自动回复 - returnVisitRecord.setDpid(doctor.getDpid()); - returnVisitRecord.setIdno(patient.getIdno()); - returnVisitRecord.setType(0); - returnVisitRecord.setHxgroupid(chatgroup.getHxgroupid()); - lymsReturnVisitRecordService.save(returnVisitRecord); - chatgroup.setStat(0); - final boolean b = lymsChatgroupService.updateById(chatgroup); - if (!b) { - throw new RuntimeException("回滚状态,执行失败,请联系管理员"); - } - //修改同一群组记录的状态 - final List tkrecordList = lymsTkrecordService.list(new QueryWrapper() - .lambda().eq(LymsTkrecord::getHxgroupid, chatgroup.getHxgroupid())); - for (LymsTkrecord lymsTkrecord : tkrecordList) { - try { - lymsTkrecord.setStat(0); - final boolean saveOrUpdate = lymsTkrecordService.updateById(lymsTkrecord); - if (!saveOrUpdate) { - throw new RuntimeException("回滚状态,执行失败,请联系管理员"); - } - } catch (RuntimeException e) { - e.printStackTrace(); - throw new RuntimeException("回滚状态,执行失败,请联系管理员"); - } - } - } + } + 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("参数不符合"); } - break; + } + //增加回访记录,修改环信群组状态,修改问诊记录状态 + addReturnVisitRecordOrUpdate(dlogin,chatgroup ,patient,doctor); } - } - } catch (Exception e) { - e.printStackTrace(); - throw new RuntimeException("回滚状态,执行失败,请联系管理员"); + break; + case 3: + if (day==20) { + //就诊医生回复 + 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==30) { + //获取值班医生回复 + 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); + } + break; } } } - public LymsChatgroup addChatGroup(Map map,LymsPatient patient,LymsDoctor doctor) { + + /** + * 创建环信群组 + * @param map + * @param patient + * @param doctor + * @return + */ + @Transactional(rollbackFor = Exception.class) + public LymsChatgroup addChatGroup(Map map,LymsPatient patient,LymsDoctor doctor){ List adminDlogins=new ArrayList<>(); adminDlogins.add(patient.getIdno()); List groupnames=new ArrayList<>(); @@ -425,7 +255,12 @@ public class PushChatInfoTask { JSONArray rArr = json.getJSONArray("entities"); if (rArr.size() > 0) { patient.setHxid(rArr.getJSONObject(0).getString("uuid")); - lymsPatientService.updateById(patient); + final boolean b = lymsPatientService.updateById(patient); + if (!b) { + throw new RuntimeException("回滚状态,执行失败,请联系管理员"); + } + }else { + throw new RuntimeException("回滚状态,执行失败,请联系管理员"); } } //查询值班医生/值班护士 @@ -440,7 +275,10 @@ public class PushChatInfoTask { JSONArray rArr = json.getJSONArray("entities"); if (rArr.size() > 0) { lymsDoctor.setHxid(rArr.getJSONObject(0).getString("uuid")); - lymsDoctorService.updateById(lymsDoctor); + final boolean b = lymsDoctorService.updateById(lymsDoctor); + if (!b) { + throw new RuntimeException("回滚状态,执行失败,请联系管理员"); + } } } adminDlogins.add(lymsDoctor.getDlogin()); @@ -453,7 +291,10 @@ public class PushChatInfoTask { JSONArray rArr = json.getJSONArray("entities"); if (rArr.size() > 0) { doctor.setHxid(rArr.getJSONObject(0).getString("uuid")); - lymsDoctorService.updateById(doctor); + final boolean b = lymsDoctorService.updateById(doctor); + if (!b) { + throw new RuntimeException("回滚状态,执行失败,请联系管理员"); + } } } adminDlogins.add(doctor.getDlogin()); @@ -470,8 +311,77 @@ public class PushChatInfoTask { group.setType(1); group.setStat(0); group.setPcid((Integer)map.get("pcid")); - lymsChatgroupService.save(group); + final boolean save = lymsChatgroupService.save(group); + if (!save) { + throw new RuntimeException("回滚状态,执行失败,请联系管理员"); + } return group; } + + /** + * 推送回访消息和保存发送记录 + * @param dlogin 发送医生 + * @param chatgroup + * @param chatInfo + * @param doctor + */ + @Transactional(rollbackFor = Exception.class) + public void pushOrMessage(String dlogin,LymsChatgroup chatgroup,LymsChatInfo chatInfo,LymsDoctor doctor) { + JSONObject jsonObject = hxService.sendGroupMsg(new String[]{chatgroup.getHxgroupid()}, chatInfo.getConten(), StringUtil.isEmpty(dlogin)? doctor.getDlogin():dlogin); + if (null!=jsonObject) { + //保存发送消息记录 + LymsMessage message=new LymsMessage(); + message.setContent(chatInfo.getConten()); + message.setFromid(StringUtil.isEmpty(dlogin)? doctor.getDlogin():dlogin); + message.setTargetid(chatgroup.getHxgroupid()); + message.setMtype("TEXT"); + message.setSendtime(new Date()); + message.setType(1); + final boolean save = lymsMessageService.save(message); + if (! save) { + throw new RuntimeException("回滚状态,执行失败,请联系管理员"); + } + }else { + throw new RuntimeException("回滚状态,执行失败,请联系管理员"); + } + } + + /** + * 增加回访记录,修改环信群组状态,修改问诊记录状态 + * @param dlogin + * @param chatgroup + * @param patient + * @param doctor + */ + @Transactional(rollbackFor = Exception.class) + public void addReturnVisitRecordOrUpdate(String dlogin,LymsChatgroup chatgroup ,LymsPatient patient,LymsDoctor doctor) { + //增加回访记录 + LymsReturnVisitRecord returnVisitRecord=new LymsReturnVisitRecord(); + returnVisitRecord.setDlogin(StringUtil.isEmpty(dlogin)? doctor.getDlogin():dlogin); + returnVisitRecord.setDpid(doctor.getDpid()); + returnVisitRecord.setIdno(patient.getIdno()); + returnVisitRecord.setType(0); + returnVisitRecord.setHxgroupid(chatgroup.getHxgroupid()); + final boolean save = lymsReturnVisitRecordService.save(returnVisitRecord); + if (!save) { + throw new RuntimeException("回滚状态,执行失败,请联系管理员"); + } + chatgroup.setType(1); + chatgroup.setStat(0); + final boolean b = lymsChatgroupService.updateById(chatgroup); + if (!b) { + throw new RuntimeException("回滚状态,执行失败,请联系管理员"); + } + //修改同一群组记录的状态 + final List tkrecordList = lymsTkrecordService.list(new QueryWrapper() + .lambda().eq(LymsTkrecord::getHxgroupid, chatgroup.getHxgroupid())); + for (LymsTkrecord lymsTkrecord : tkrecordList) { + lymsTkrecord.setStat(0); + final boolean saveOrUpdate = lymsTkrecordService.updateById(lymsTkrecord); + if (!saveOrUpdate) { + throw new RuntimeException("回滚状态,执行失败,请联系管理员"); + } + } + } } diff --git a/talkonlineweb/src/main/resources/mapper/LymsChatInfoMapper.xml b/talkonlineweb/src/main/resources/mapper/LymsChatInfoMapper.xml index dc55f33..f8b3b6e 100644 --- a/talkonlineweb/src/main/resources/mapper/LymsChatInfoMapper.xml +++ b/talkonlineweb/src/main/resources/mapper/LymsChatInfoMapper.xml @@ -8,7 +8,7 @@ - +