From 561c9723cd7e57b6a241d6a96535c484e14ca7b0 Mon Sep 17 00:00:00 2001 From: cfl Date: Thu, 17 Aug 2023 11:51:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E9=97=AE=E8=AF=8A=E5=8D=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=8E=AF=E4=BF=A1=E6=9F=A5=E8=AF=A2=E7=94=A8=E6=88=B7404?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E8=BF=94=E5=9B=9Enull?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TkRecordController.java | 166 ++++++++++++--------- .../lyms/talkonlineweb/mapper/LymsTcardMapper.java | 3 + .../talkonlineweb/service/LymsTcardService.java | 8 + .../service/impl/LymsTcardServiceImpl.java | 6 + .../com/lyms/talkonlineweb/util/HXService.java | 13 +- .../src/main/resources/mapper/LymsTcardMapper.xml | 21 +++ 6 files changed, 143 insertions(+), 74 deletions(-) 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 5d0f9dd..a9fb01e 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/TkRecordController.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/TkRecordController.java @@ -62,43 +62,52 @@ public class TkRecordController { tcard.setPid(tkrecord.getPid()); tcard.setPcid(tkrecord.getPcid()); // 获取问诊卡按照先从医院购买的问诊卡消费 - List rLst = lymsTcardService.list(Wrappers.query(tcard).notInSql("id", "SELECT r.cid FROM lyms_tkrecord r").orderByDesc("fid")); - -// 小程序购买的问诊卡 - tcard.setPcid(null); - tcard.setFid(1); - List xLst = lymsTcardService.list(Wrappers.query(tcard).notInSql("id", "SELECT r.cid FROM lyms_tkrecord r").orderByDesc("fid")); - - if (rLst.size() > 0 || xLst.size() > 0) { - if (rLst.size() > 0) { - tkrecord.setCid(rLst.get(0).getId()); - tkrecord.setFid((byte) 2); - } else { + //List rLst = lymsTcardService.list(Wrappers.query(tcard).notInSql("id", "SELECT r.cid FROM lyms_tkrecord r").orderByDesc("fid")); + List rLst = lymsTcardService.queryUnused(tcard); + if (rLst.size() > 0) { + tkrecord.setCid(rLst.get(0).getId()); + tkrecord.setFid((byte) 2); + }else{ + //小程序购买的问诊卡 + tcard.setPcid(null); + tcard.setFid(1); + List xLst = lymsTcardService.queryUnused(tcard);//lymsTcardService.list(Wrappers.query(tcard).notInSql("id", "SELECT r.cid FROM lyms_tkrecord r").orderByDesc("fid")); + if (xLst.size() > 0) { tkrecord.setCid(xLst.get(0).getId()); tkrecord.setFid((byte) 1); + }else{ + baseResponse.setErrorcode(1); + baseResponse.setErrormsg("已经没有了问诊卡"); + return baseResponse; } - - } else { - baseResponse.setErrorcode(1); - baseResponse.setErrormsg("已经没有了问诊卡"); - return baseResponse; } + } LymsChatgroup group =new LymsChatgroup(); - LymsDoctor doctor=lymsDoctorService.getById(tkrecord.getDid()); - LymsPatient patient=lymsPatientService.getById(tkrecord.getPid()); + List gLst = lymsChatgroupService.list(new QueryWrapper() .lambda().eq(LymsChatgroup::getPcid, tkrecord.getPcid())); //之前有这个病例的问诊就不用新创建组 - if (0==gLst.size()) { - group.setOwnerk(hxuser); - List adminDlogins=new ArrayList<>(); - adminDlogins.add(patient.getIdno()); - List groupnames=new ArrayList<>(); - groupnames.add(patient.getPname()); - //患者注册环信 - if (StringUtil.isEmpty(patient.getHxid())) { + if(gLst.size() > 0){ + group=gLst.get(0); + tkrecord.setHxgroupid(group.getHxgroupid()); + lymsTkrecordService.save(tkrecord); + baseResponse.setObject(group); + baseResponse.setErrormsg("成功"); + return baseResponse; + } + + LymsDoctor doctor=lymsDoctorService.getById(tkrecord.getDid()); + LymsPatient patient=lymsPatientService.getById(tkrecord.getPid()); + + //患者注册环信 + if (StringUtil.isEmpty(patient.getHxid())) { + JSONObject hxUserJSON = hxService.getUser(patient.getIdno()); + if(hxUserJSON != null && hxUserJSON.getJSONArray("entities") != null && hxUserJSON.getJSONArray("entities").size() > 0){ + patient.setHxid(hxUserJSON.getJSONArray("entities").getJSONObject(0).getString("uuid")); + lymsPatientService.updateById(patient); + }else{ JSONObject json = hxService.addUser(patient.getIdno(), Constant.COMMON_PASSWD, patient.getPname()); JSONArray rArr = json.getJSONArray("entities"); if (rArr.size() > 0) { @@ -106,14 +115,27 @@ public class TkRecordController { lymsPatientService.updateById(patient); } } - //查询值班医生/值班护士 - List doctorAminList= lymsDoctorService.list(new QueryWrapper() - .lambda().eq(LymsDoctor::getDpid, doctor.getDpid()) - .in(LymsDoctor::getAdminType, Arrays.asList(1,2)) - .orderByAsc(LymsDoctor::getAdminType)); - //科室值班医生注册环信 - for (LymsDoctor lymsDoctor : doctorAminList) { - if(StringUtil.isEmpty(lymsDoctor.getHxid())) { + + } + + group.setOwnerk(hxuser); + List adminDlogins=new ArrayList<>(); + adminDlogins.add(patient.getIdno()); + List groupnames=new ArrayList<>(); + groupnames.add(patient.getPname()); + //查询值班医生/值班护士 + List doctorAminList= lymsDoctorService.list(new QueryWrapper() + .lambda().eq(LymsDoctor::getDpid, doctor.getDpid()) + .in(LymsDoctor::getAdminType, Arrays.asList(1,2)) + .orderByAsc(LymsDoctor::getAdminType)); + //科室值班医生注册环信 + for (LymsDoctor lymsDoctor : doctorAminList) { + if (StringUtil.isEmpty(lymsDoctor.getHxid())) { + JSONObject hxDockerUserJSON = hxService.getUser(lymsDoctor.getDlogin()); + if (hxDockerUserJSON != null && hxDockerUserJSON.getJSONArray("entities") != null && hxDockerUserJSON.getJSONArray("entities").size() > 0) { + lymsDoctor.setHxid(hxDockerUserJSON.getJSONArray("entities").getJSONObject(0).getString("uuid")); + lymsDoctorService.updateById(lymsDoctor); + } else { JSONObject json = hxService.addUser(lymsDoctor.getDlogin(), Constant.COMMON_PASSWD, lymsDoctor.getDname()); JSONArray rArr = json.getJSONArray("entities"); if (rArr.size() > 0) { @@ -124,9 +146,16 @@ public class TkRecordController { adminDlogins.add(lymsDoctor.getDlogin()); groupnames.add(lymsDoctor.getDname()); } - if ( ! adminDlogins.contains(doctor.getDlogin())) { - //医生注册环信 - if (StringUtil.isEmpty(doctor.getHxid())) { + } + + if ( ! adminDlogins.contains(doctor.getDlogin())) { + //医生注册环信 + if (StringUtil.isEmpty(doctor.getHxid())) { + JSONObject hxDockerJSON = hxService.getUser(doctor.getDlogin()); + if (hxDockerJSON != null && hxDockerJSON.getJSONArray("entities") != null && hxDockerJSON.getJSONArray("entities").size() > 0) { + doctor.setHxid(hxDockerJSON.getJSONArray("entities").getJSONObject(0).getString("uuid")); + lymsDoctorService.updateById(doctor); + }else { JSONObject json = hxService.addUser(doctor.getDlogin(), Constant.COMMON_PASSWD, doctor.getDname()); JSONArray rArr = json.getJSONArray("entities"); if (rArr.size() > 0) { @@ -134,51 +163,46 @@ public class TkRecordController { lymsDoctorService.updateById(doctor); } } - adminDlogins.add(doctor.getDlogin()); - groupnames.add(doctor.getDname()); } + adminDlogins.add(doctor.getDlogin()); + groupnames.add(doctor.getDname()); + } - log.info("创建环信组:{} description:{}", group.getOwnerk(), StringUtils.join(adminDlogins.toArray(), ",")); - JSONObject rJson = hxService.addChatGroups(StringUtils.join(adminDlogins.toArray(), ","), group.getOwnerk(), adminDlogins.toArray(new String[adminDlogins.size()])); - log.info("rJson:" + rJson); - group.setHxgroupid(rJson.getJSONObject("data").getString("groupid")); - group.setDescription(StringUtils.join(adminDlogins.toArray(), ",")); - //环信群组名称更改为姓名串-用于PC端问诊展示 - group.setGroupname(StringUtils.join(groupnames.toArray(), ",")); - group.setFromp(patient.getIdno()); - group.setTarget(doctor.getDlogin()); - group.setPcid(tkrecord.getPcid()); - group.setHdepartId(doctor.getDpid()); - if(null==tkrecord.getType()) { - lymsChatgroupService.saveOrUpdate(group); - tkrecord.setHxgroupid(group.getHxgroupid()); - lymsTkrecordService.save(tkrecord); - }else { - group.setType(1); - lymsChatgroupService.saveOrUpdate(group); - LymsReturnVisitRecord returnVisitRecord=new LymsReturnVisitRecord(); - returnVisitRecord.setDlogin(tkrecord.getRetDlogin());//前端传的当前登录医生账号 - returnVisitRecord.setDpid(doctor.getDpid()); - returnVisitRecord.setIdno(patient.getIdno()); - returnVisitRecord.setType(1); - returnVisitRecord.setPcid(tkrecord.getPcid()); - returnVisitRecord.setHxgroupid(group.getHxgroupid()); - lymsReturnVisitRecordService.save(returnVisitRecord); - } - }else { - group=gLst.get(0); + log.info("创建环信组:{} description:{}", group.getOwnerk(), StringUtils.join(adminDlogins.toArray(), ",")); + JSONObject rJson = hxService.addChatGroups(StringUtils.join(adminDlogins.toArray(), ","), group.getOwnerk(), adminDlogins.toArray(new String[adminDlogins.size()])); + log.info("rJson:" + rJson); + group.setHxgroupid(rJson.getJSONObject("data").getString("groupid")); + group.setDescription(StringUtils.join(adminDlogins.toArray(), ",")); + //环信群组名称更改为姓名串-用于PC端问诊展示 + group.setGroupname(StringUtils.join(groupnames.toArray(), ",")); + group.setFromp(patient.getIdno()); + group.setTarget(doctor.getDlogin()); + group.setPcid(tkrecord.getPcid()); + group.setHdepartId(doctor.getDpid()); + if(null==tkrecord.getType()) { + lymsChatgroupService.saveOrUpdate(group); tkrecord.setHxgroupid(group.getHxgroupid()); lymsTkrecordService.save(tkrecord); + }else { + group.setType(1); + lymsChatgroupService.saveOrUpdate(group); + LymsReturnVisitRecord returnVisitRecord=new LymsReturnVisitRecord(); + returnVisitRecord.setDlogin(tkrecord.getRetDlogin());//前端传的当前登录医生账号 + returnVisitRecord.setDpid(doctor.getDpid()); + returnVisitRecord.setIdno(patient.getIdno()); + returnVisitRecord.setType(1); + returnVisitRecord.setPcid(tkrecord.getPcid()); + returnVisitRecord.setHxgroupid(group.getHxgroupid()); + lymsReturnVisitRecordService.save(returnVisitRecord); } baseResponse.setObject(group); - baseResponse.setErrormsg("成功"); } catch (Exception e) { baseResponse.setErrorcode(1); baseResponse.setErrormsg("失败"); - e.printStackTrace(); + log.error("保存问诊记录异常",e); } return baseResponse; diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/mapper/LymsTcardMapper.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/mapper/LymsTcardMapper.java index 89fb2b1..534ad05 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/mapper/LymsTcardMapper.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/mapper/LymsTcardMapper.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; import java.util.Map; /** @@ -14,6 +15,8 @@ public interface LymsTcardMapper extends BaseMapper { @Select("SELECT IFNULL(a.ccnt,0) ccnt,IFNULL(b.cnt,0) cnt FROM (SELECT SUM(ccnt) ccnt FROM lyms_patient ${pSql} ) a,(SELECT SUM(cnt) cnt FROM lyms_tcard ${cSql} ) b") Map cardStat(@Param("pSql") String pSql,@Param("cSql") String cSql); + + List queryUnused(LymsTcard lymsTcard); } diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/LymsTcardService.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/LymsTcardService.java index c615e6a..0399da7 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/LymsTcardService.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/LymsTcardService.java @@ -3,6 +3,7 @@ package com.lyms.talkonlineweb.service; import com.lyms.talkonlineweb.domain.LymsTcard; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; import java.util.Map; /** @@ -11,4 +12,11 @@ import java.util.Map; public interface LymsTcardService extends IService { Map cardStat(String pSql, String cSql); + + /** + * 查询未使用的问诊卡 + * @param lymsTcard + * @return + */ + List queryUnused(LymsTcard lymsTcard); } diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsTcardServiceImpl.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsTcardServiceImpl.java index 1036c9f..81adac2 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsTcardServiceImpl.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsTcardServiceImpl.java @@ -7,6 +7,7 @@ import com.lyms.talkonlineweb.mapper.LymsTcardMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Map; /** @@ -22,6 +23,11 @@ public class LymsTcardServiceImpl extends ServiceImpl cardStat(String pSql, String cSql) { return lymsTcardMapper.cardStat(pSql,cSql); } + + @Override + public List queryUnused(LymsTcard lymsTcard) { + return lymsTcardMapper.queryUnused(lymsTcard); + } } diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/util/HXService.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/util/HXService.java index 8a23d2e..60b020a 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/util/HXService.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/util/HXService.java @@ -86,9 +86,16 @@ public class HXService { HttpHeaders headers=new HttpHeaders(); headers.add("Authorization","Bearer "+token); HttpEntity param=new HttpEntity(headers); - resp=restTemplate.exchange(getUrl()+"users/"+username, HttpMethod.GET,param,String.class); - if (resp.getStatusCodeValue()==200){ - user= JSON.parseObject(resp.getBody()); + ResponseEntity getUserResponse = null; + try{ + getUserResponse=restTemplate.exchange(getUrl()+"users/"+username, HttpMethod.GET,param,String.class); + }catch (Exception e){ + log.error("调用环信查询接口异常",e); + return null; + } + + if (getUserResponse.getStatusCodeValue()==200){ + user= JSON.parseObject(getUserResponse.getBody()); } return user; } diff --git a/talkonlineweb/src/main/resources/mapper/LymsTcardMapper.xml b/talkonlineweb/src/main/resources/mapper/LymsTcardMapper.xml index 71f413b..9ea90a7 100644 --- a/talkonlineweb/src/main/resources/mapper/LymsTcardMapper.xml +++ b/talkonlineweb/src/main/resources/mapper/LymsTcardMapper.xml @@ -21,4 +21,25 @@ cnt,price,createdby, createdtime,updatedby,updated_time + + -- 1.8.3.1