package com.lyms.talkonlineweb.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lyms.talkonlineweb.domain.*;
import com.lyms.talkonlineweb.result.BaseResponse;
import com.lyms.talkonlineweb.service.*;
import com.lyms.talkonlineweb.util.HXService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("chat")
@Log4j2
public class ChatGroupController {
@Autowired
private LymsChatgroupService lymsChatgroupService;
@Autowired
private LymsMessageService lymsMessageService;
@Autowired
private PatientInfoService patientInfoService;
@Autowired
private LymsDoctorService lymsDoctorService;
@Autowired
private LymsHdepartService lymsHdepartService;
@Autowired
private LymsDictService lymsDictService;
@Autowired
private HXService hxService;
/**
* 添加或删除聊天组
*
* @param group
* @return
*/
@PostMapping("saveChatGroup")
public BaseResponse saveChatGroup(LymsChatgroup group) {
BaseResponse baseResponse = new BaseResponse();
List<LymsChatgroup> gLst = lymsChatgroupService.list(Wrappers.query(group));
if (group.getOwnerk() == null) {
group.setOwnerk("test");
}
if (gLst.size() > 0) {
LymsChatgroup group2 = gLst.get(0);
group = group2;
} else {
log.info("创建环信组:{} from:{} target:{}", group.getOwnerk(), group.getFromp(), group.getTarget());
JSONObject rJson = hxService.addChatGroups(group.getFromp() + "," + group.getTarget(), group.getOwnerk(), new String[]{group.getFromp(), group.getTarget()});
log.info("rJson:" + rJson);
group.setHxgroupid(rJson.getJSONObject("data").getString("groupid"));
group.setDescription(group.getFromp() + "," + group.getTarget());
group.setGroupname(group.getFromp() + "," + group.getTarget());
lymsChatgroupService.saveOrUpdate(group);
}
baseResponse.setObject(group);
return baseResponse;
}
/**
* 保存消息记录
*
* @param message
* @return
*/
@PostMapping("saveMsg")
public BaseResponse saveMsg(LymsMessage message) {
BaseResponse baseResponse = new BaseResponse();
message.setSendtime(new Date());
boolean f = lymsMessageService.saveOrUpdate(message);
baseResponse.setErrorcode(f == true ? 0 : 1);
return baseResponse;
}
@GetMapping("getPatDoc")
public BaseResponse getPatDoc(LymsChatgroup chatgroup) {
log.info(">>>>>>>>>>chatgroup:" + chatgroup);
BaseResponse baseResponse = new BaseResponse();
Map<String, Object> rs = new HashMap<>();
chatgroup = lymsChatgroupService.getOne(Wrappers.query(chatgroup));
LymsDoctor doctor = new LymsDoctor();
doctor = lymsDoctorService.getOne(Wrappers.query(doctor).eq("dlogin", chatgroup.getTarget()));
PatientInfo patientInfo = new PatientInfo();
patientInfo.setDid(doctor.getDpid());
patientInfo.setIdno(chatgroup.getFromp());
List<PatientInfo> pLst = patientInfoService.list(Wrappers.query(patientInfo));
conDocCode(doctor);
rs.put("doctor", doctor);
rs.put("patient", pLst);
baseResponse.setObject(rs);
return baseResponse;
}
public void conDocCode(LymsDoctor d) {
Map param = new HashMap();
param.put("vtype", 4);
List<LymsDict> dLst = lymsDictService.listByMap(param);
param.clear();
param.put("did", d.getDpid());
List<LymsHdepart> departLst = lymsHdepartService.listByMap(param);
if (departLst.size() > 0) {
LymsHdepart depart = departLst.get(0);
d.setHname(depart.getHname());
d.setDdname(depart.getDname());
dLst.forEach(dd -> {
if (dd.getCode() == d.getLvl()) {
d.setLname(dd.getValue());
}
});
}
}
}