From 00901f8a900e72d797a57acd5b3a3669f2c0130c Mon Sep 17 00:00:00 2001 From: shiyang <316555390@qq.com> Date: Mon, 16 May 2022 19:33:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=BB=E7=94=9F=E5=9B=9E=E8=AE=BF=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ChatGroupController.java | 90 +++++++++++++++++++++- .../talkonlineweb/controller/CommonController.java | 9 +++ .../talkonlineweb/controller/DepartController.java | 2 +- .../controller/TkRecordController.java | 54 +++++++------ .../lyms/talkonlineweb/domain/LymsChatgroup.java | 14 ++++ .../lyms/talkonlineweb/domain/LymsTkrecord.java | 7 ++ .../talkonlineweb/mapper/LymsChatgroupMapper.java | 32 +++++++- .../service/LymsChatgroupService.java | 4 + .../service/impl/LymsChatgroupServiceImpl.java | 8 ++ .../java/com/lyms/talkonlineweb/util/DateUtil.java | 47 +++++++++++ 10 files changed, 236 insertions(+), 31 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 a9d6885..1e6cdbc 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/ChatGroupController.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/ChatGroupController.java @@ -5,13 +5,17 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.lyms.talkonlineweb.annotation.TokenRequired; +import com.lyms.talkonlineweb.constants.ErrorCodeConstants; import com.lyms.talkonlineweb.domain.*; import com.lyms.talkonlineweb.result.BaseResponse; import com.lyms.talkonlineweb.service.*; +import com.lyms.talkonlineweb.util.DateUtil; 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.springframework.beans.BeanUtils; @@ -120,12 +124,14 @@ public class ChatGroupController { log.info(">>>>>>>>>>chatgroup:" + chatgroup); BaseResponse baseResponse = new BaseResponse(); Map rs = new HashMap<>(); - + //不作为条件查询 + Integer type=chatgroup.getType(); + chatgroup.setType(null); // chatgroup = lymsChatgroupService.getOne(Wrappers.query(chatgroup)); List gLst = lymsChatgroupService.list(Wrappers.query(chatgroup).orderByDesc("id")); if (gLst.size()>0){ - chatgroup=gLst.get(0); + chatgroup = gLst.get(0); } LymsDoctor doctor = new LymsDoctor(); doctor = lymsDoctorService.getOne(Wrappers.query(doctor).eq("dlogin", chatgroup.getTarget())); @@ -137,7 +143,24 @@ public class ChatGroupController { List> tmpList = lymsChatgroupService.getPinfoBySesson(null, doctor.getDid().toString(), chatgroup.getHxgroupid()); if (tmpList.size() > 0) { - rs.put("sess",tmpList.get(0)); + if(null==type) { + rs.put("sess", tmpList.get(0)); + }else { + //修改为恢复聊天状态 + LymsTkrecord tkrecord=new LymsTkrecord(); + tkrecord.setId((Integer) tmpList.get(0).get("rid")); + tkrecord.setStat(0); + lymsTkrecordService.updateById(tkrecord); + tmpList.get(0).put("stat", 0); + rs.put("sess", tmpList.get(0)); + } + }else { + //防止重复创建组 + if(null!=type && 1==type && CollectionUtils.isNotEmpty(gLst)){ + Map map=new HashMap<>(); + map.put("stat", 0); + rs.put("sess", tmpList.add(map)); + } } rs.put("doctor", doctor); @@ -194,6 +217,7 @@ public class ChatGroupController { /** * 根据环信传入的会话,获取用户信息 * @param request + * @param type 医生回访停止回话用 * @return */ @PostMapping("getSessionListInfo") @@ -226,7 +250,6 @@ public class ChatGroupController { if(rLst.size()>0){ payload.put("stat",rLst.get(0).getStat()); } - LymsChatgroup chatgroup=new LymsChatgroup(); chatgroup.setHxgroupid(to); List cLst=lymsChatgroupService.list(Wrappers.query(chatgroup)); @@ -245,6 +268,11 @@ public class ChatGroupController { 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()); + } + } } payload.put("timestamp",row.getJSONObject("meta").get("timestamp")); @@ -278,5 +306,59 @@ public class ChatGroupController { } return baseResponse; } + /** + * 医生端获取自己的患者列表 + * @param doctorId + * @param current 页数 + * @param size 条数 + * @param synthesisQuery 综合筛选条件 + * @return + */ + @GetMapping("getDoctorPatient") + @TokenRequired + public BaseResponse getDoctorPatient(Integer doctorId,Integer current, Integer size,String synthesisQuery){ + BaseResponse baseResponse =new BaseResponse(); + if(null==doctorId){ + baseResponse.setErrorcode(ErrorCodeConstants.PARAMETER_ERROR); + baseResponse.setErrormsg("参数错误"); + return baseResponse; + } + Page> page=new Page<>(current,size); + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("dtid", doctorId); + if (StringUtil.isNotEmpty(synthesisQuery)){ + queryWrapper.like("pname", synthesisQuery); + } + List> list=lymsChatgroupService.getDoctorPatient(page,queryWrapper); + for (Map map : list) { + if(map.get("sex")!=null) { + map.put("sex",(int)map.get("sex")==1?"男":"女"); + } + if(map.get("birth")!=null){ + map.put("birth", DateUtil.getAge(DateUtil.parseYMD(map.get("birth").toString()))); + } + } + page.setRecords(list); + baseResponse.setObject(page); + 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/CommonController.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/CommonController.java index 9b20e0e..1f5bb05 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/CommonController.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/CommonController.java @@ -1,5 +1,6 @@ package com.lyms.talkonlineweb.controller; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.fasterxml.jackson.databind.ser.Serializers; import com.lyms.talkonlineweb.annotation.TokenRequired; @@ -64,6 +65,14 @@ public class CommonController { boolean f=lymsTkrecordService.saveOrUpdate(tkrecord); baseResponse.setErrorcode(f==true?0:1); + }else { + if (CollectionUtils.isNotEmpty(gLst) && gLst.get(0).getType()==1) { + LymsChatgroup lymsChatgroup= new LymsChatgroup(); + lymsChatgroup.setId(gLst.get(0).getId()); + lymsChatgroup.setStat(1); + lymsChatgroupService.updateById(lymsChatgroup); + baseResponse.setErrorcode(0); + } } if(baseResponse.getErrorcode()==1){ baseResponse.setErrormsg("该问诊已结束!"); diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/DepartController.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/DepartController.java index 54c8405..6641d67 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/DepartController.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/DepartController.java @@ -55,7 +55,7 @@ public class DepartController { // Page departPage=lymsHdepartService.page(page, Wrappers.query(depart).orderByDesc("updated_time","createdtime")); // addIll(departPage); Page page=new Page<>(current,size); - Page departPage=hdepartInfoService.page(page, Wrappers.query(depart).orderByDesc("updated_time","createdtime")); + Page departPage=hdepartInfoService.page(page, Wrappers.query(depart).orderByDesc("createdtime")); addIll(departPage); baseResponse.setObject(departPage); 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 f758264..0b9900c 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/TkRecordController.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/TkRecordController.java @@ -46,34 +46,34 @@ public class TkRecordController { public BaseResponse saveTkRecord(@RequestBody @Validated LymsTkrecord tkrecord){ BaseResponse baseResponse=new BaseResponse(); try { - - LymsTcard tcard=new LymsTcard(); - tcard.setPid(tkrecord.getPid()); - tcard.setPcid(tkrecord.getPcid()); + if(null==tkrecord.getType()) { + LymsTcard tcard = new LymsTcard(); + 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")); + 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{ - tkrecord.setCid(xLst.get(0).getId()); - tkrecord.setFid((byte) 1); + 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 { + 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()); @@ -91,9 +91,13 @@ public class TkRecordController { //环信群组名称更改为姓名串-用于PC端问诊展示 group.setGroupname(patient.getPname() + "," + doctor.getDname()); - - lymsChatgroupService.saveOrUpdate(group); - lymsTkrecordService.save(tkrecord); + if(null==tkrecord.getType()) { + lymsChatgroupService.saveOrUpdate(group); + lymsTkrecordService.save(tkrecord); + }else { + group.setType(1); + lymsChatgroupService.saveOrUpdate(group); + } baseResponse.setObject(group); baseResponse.setErrormsg("成功"); diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsChatgroup.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsChatgroup.java index c763d82..8266c67 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsChatgroup.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsChatgroup.java @@ -62,6 +62,20 @@ public class LymsChatgroup implements Serializable { */ @TableField(value = "ctime") private Date ctime; + /** + * 发起聊天医生回访状态 + * 0:未回访 + * 1:已回访 + */ + @TableField(value = "type") + private Integer type; + /** + * 发回访状态 + * 0:未结束 + * 1:已结束 + */ + @TableField(value = "stat") + private Integer stat; @TableField(exist = false) private static final long serialVersionUID = 1L; diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsTkrecord.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsTkrecord.java index e207daa..578859e 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsTkrecord.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsTkrecord.java @@ -89,4 +89,11 @@ public class LymsTkrecord implements Serializable { */ @TableField(value="hxgroupid") private String hxgroupid; + + /** + * 发起聊天状态 + * 1:医生回访 + */ + @TableField(exist = false) + private Integer type; } \ No newline at end of file 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 7b2cc7e..f6e1742 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/mapper/LymsChatgroupMapper.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/mapper/LymsChatgroupMapper.java @@ -1,22 +1,52 @@ package com.lyms.talkonlineweb.mapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.lyms.talkonlineweb.domain.LymsChatgroup; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.sql.Wrapper; import java.util.List; import java.util.Map; /** * @Entity com.lyms.talkonlineweb.domain.LymsChatgroup */ +@Mapper public interface LymsChatgroupMapper extends BaseMapper { - @Select("SELECT p.`id`, `pname`, `idno`, `ppasswd`, p.`sex`, `birth`, IFNULL(p.`headimg`,'') headimg, `ccnt`, `islogin`, `openid`, p.`hxid`, `pid`, `pcid`, r.`did`, `cid`, `fid`, r.`stat` " + + @Select("SELECT p.`id`, `pname`, `idno`, `ppasswd`, p.`sex`, `birth`, IFNULL(p.`headimg`,'') headimg, `ccnt`, `islogin`, `openid`, p.`hxid`, `pid`, `pcid`, r.id as `rid`,r.`did`, `cid`, `fid`, r.`stat` " + "FROM lyms_patient p,lyms_tkrecord r,lyms_chatgroup cg,lyms_doctor d " + "WHERE p.`id`=r.`pid` AND p.`idno`=cg.`fromp` AND r.`did`=d.`did` AND cg.`target`=d.`dlogin` AND r.`did`=#{did} AND cg.`hxgroupid`=#{groupid} ORDER BY r.`createdtime` DESC") List> getPinfoBySesson(@Param("froms") String froms,@Param("did") String did,@Param("groupid") String groupid); + + @Select({""}) +// "WHERE " + +// "dtid=#{doctorId}") + List> getDoctorPatient(Page> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper); } diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/LymsChatgroupService.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/LymsChatgroupService.java index 8b65021..e7081c9 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/LymsChatgroupService.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/LymsChatgroupService.java @@ -1,5 +1,7 @@ package com.lyms.talkonlineweb.service; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.lyms.talkonlineweb.domain.LymsChatgroup; import com.baomidou.mybatisplus.extension.service.IService; @@ -18,4 +20,6 @@ public interface LymsChatgroupService extends IService { * @return */ List> getPinfoBySesson(String froms, String did,String groupid); + + List> getDoctorPatient(Page> page, QueryWrapper queryWrapper); } diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsChatgroupServiceImpl.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsChatgroupServiceImpl.java index dbc1a38..5d1dbe5 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsChatgroupServiceImpl.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsChatgroupServiceImpl.java @@ -1,5 +1,7 @@ package com.lyms.talkonlineweb.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.lyms.talkonlineweb.domain.LymsChatgroup; import com.lyms.talkonlineweb.service.LymsChatgroupService; @@ -7,6 +9,7 @@ import com.lyms.talkonlineweb.mapper.LymsChatgroupMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.sql.Wrapper; import java.util.List; import java.util.Map; @@ -24,6 +27,11 @@ public class LymsChatgroupServiceImpl extends ServiceImpl> getPinfoBySesson(String froms, String did,String groupid) { return lymsChatgroupMapper.getPinfoBySesson(froms,did,groupid); } + + @Override + public List> getDoctorPatient(Page> page, QueryWrapper queryWrapper) { + return lymsChatgroupMapper.getDoctorPatient(page, queryWrapper); + } } 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 935838d..03543c5 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/util/DateUtil.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/util/DateUtil.java @@ -65,6 +65,21 @@ public class DateUtil { return getDateTime(datetime, YYYY_MM_DD_HH_MM_SS); } + public static Date parseYMD(String s) { + if (s == null) { + return null; + } + lock.lock(); + try { + + return y_m_d.parse(s); + } catch (Exception e) { + return null; + } finally { + lock.unlock(); + } + } + public static String getDateTime(Date date, String pattern) { if (date == null) { return ""; @@ -136,4 +151,36 @@ public class DateUtil { lock.unlock(); } } + public static Integer getAge(Date birth) { + if (null == birth) { + return null; + } + java.util.Calendar calendar = Calendar.getInstance(); + Date date = new Date(); + calendar.setTime(date); + + Calendar c1 = Calendar.getInstance(); + Calendar c2 = Calendar.getInstance(); + c1.setTime(date); + c2.setTime(birth); + int year1 = c1.get(Calendar.YEAR); + int year2 = c2.get(Calendar.YEAR); + + int mouth1 = c1.get(Calendar.MONTH);//0当前 + int mouth2 = c2.get(Calendar.MONTH);//4 + int i = 0; + + if (mouth2 == mouth1) { + int days1 = c1.get(Calendar.DAY_OF_MONTH);//当前10 + int days2 = c2.get(Calendar.DAY_OF_MONTH);//1 + if (days1 < days2) { + i = i - 1; + } else if (days1 > days2) { + } + } else if (mouth2 > mouth1) { + i = i - 1; + } + + return (Math.abs(year1 - year2) + i); + } } -- 1.8.3.1