package com.lyms.talkonlineweb.controller; 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.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.Constant; import com.lyms.talkonlineweb.util.HXService; import com.lyms.talkonlineweb.util.JwtUtils; import com.lyms.talkonlineweb.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.*; /** * 医生管理 */ @RestController @RequestMapping("doctor") public class DoctorController { @Autowired private LymsDoctorService lymsDoctorService; @Autowired private LymsHdepartService lymsHdepartService; @Autowired private LymsHospitalService lymsHospitalService; @Autowired private LymsDictService lymsDictService; @Autowired private LymsLogsCrudService lymsLogsCrudService; @Autowired private HXService hxService; @Autowired private AppgetdoctorlistInfoService appgetdoctorlistInfoService; /** * 获取医生列表 * @param doctor * @param current * @param size * @return */ @GetMapping("sltDoctorLst") public BaseResponse sltDoctorLst(LymsDoctor doctor, int current, int size){ BaseResponse baseResponse=new BaseResponse(); Page page=new Page<>(current,size); Page doctorPagePage=lymsDoctorService.page(page, Wrappers.query(doctor).orderByDesc("updated_time","createdtime")); conDocCode(doctorPagePage); baseResponse.setObject(doctorPagePage); return baseResponse; } public void conDocCode(Page doctorPagePage){ Map param=new HashMap(); param.put("vtype",4); List dLst=lymsDictService.listByMap(param); doctorPagePage.getRecords().forEach(d->{ param.clear(); param.put("did",d.getDpid()); List 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()); } }); } }); } /** * 保存或更新医生信息 * @param doctor * @return */ @PostMapping("saveDoctor") public BaseResponse saveDoctor(@Validated LymsDoctor doctor, BindingResult result){ BaseResponse baseResponse=new BaseResponse(); baseResponse.setErrormsg(""); //操作记录标识 Integer did=0; if(doctor.getDid()==null){ doctor.setCreatedtime(new Date()); LymsDoctor depart2=new LymsDoctor(); depart2.setDlogin(doctor.getDlogin()); List dLst=lymsDoctorService.list(Wrappers.query(depart2)); if (dLst.size()>0) { baseResponse.setErrormsg("不能创建重复账号"); baseResponse.setErrorcode(1); return baseResponse; } LymsHdepart hdepart=lymsHdepartService.getById(doctor.getDpid()); if(doctor.getHxid()==null ){ JSONObject json=hxService.addUser(doctor.getDlogin(),Constant.COMMON_PASSWD,doctor.getDname()+","+hdepart.getDname()+","+hdepart.getHname()); JSONArray rArr=json.getJSONArray("entities"); if(rArr.size()>0){ doctor.setHxid(rArr.getJSONObject(0).getString("uuid")); } // lymsDoctorService.saveOrUpdate(doctor); } }else{ did=1; doctor.setUpdatedTime(new Date()); } if(result.hasErrors()){ baseResponse.setErrorcode(1); result.getAllErrors().forEach(e->{ baseResponse.setErrormsg(baseResponse.getErrormsg()+e.getDefaultMessage()); }); return baseResponse; } boolean f=lymsDoctorService.saveOrUpdate(doctor); lymsLogsCrud(doctor,did); baseResponse.setErrorcode(f==true?0:1); return baseResponse; } /** * 删除医生 * @param did * @return */ @GetMapping("delDoctor") public BaseResponse delDoctor(int did){ BaseResponse baseResponse=new BaseResponse(); //操作记保存参数 LymsDoctor doctor=lymsDoctorService.getById(did); boolean f=lymsDoctorService.removeById(did); //保存操作记录 lymsLogsCrud(doctor,null); baseResponse.setErrorcode(f==true?0:1); return baseResponse; } /** * 医生登录 * @param doctor * @return */ @PostMapping("loginDoctor") public BaseResponse loginDoctor(@RequestBody LymsDoctor doctor){ BaseResponse baseResponse=new BaseResponse(); List dLst=lymsDoctorService.list(Wrappers.query(doctor)); baseResponse.setErrorcode(1); if (dLst.size()>0) { doctor=dLst.get(0); doctor.setDpasswd(null); baseResponse.setObject(doctor); String jwt = JwtUtils.createJWT("1", doctor.getDlogin(), Constant.JWT_TTL); Map map=new HashMap<>(); map.put("doctor",doctor); map.put("token",jwt); baseResponse.setErrorcode(0); baseResponse.setObject(map); } return baseResponse; } /** * 统计医生信息 * @return */ @GetMapping("statDoctor") public BaseResponse statDoctor(){ BaseResponse baseResponse=new BaseResponse(); Map stat=lymsDoctorService.statDoctor(); baseResponse.setObject(stat); return baseResponse; } /** * 操作记录 * @param doctor * @param did */ public void lymsLogsCrud(LymsDoctor doctor,Integer did){ LymsLogsCrud lymsLogsCrud=new LymsLogsCrud(); if(null!=did){ lymsLogsCrud.setCrudtype(did==1?"编辑科室":"新增科室"); }else { lymsLogsCrud.setCrudtype("删除科室"); } lymsLogsCrud.setCreatedbyname(doctor.getCreatedbyname()); lymsLogsCrud.setUpdatedbyname(doctor.getUpdatedbyname()); lymsLogsCrud.setHname(doctor.getHname()); lymsLogsCrud.setHdname(doctor.getDname()); lymsLogsCrud.setCreatdata(new Date()); lymsLogsCrud.setCreatdata(new Date()); lymsLogsCrud.setType(2); lymsLogsCrudService.save(lymsLogsCrud); } /** * 查询单个医生的信息 * @param doctor * @return */ @GetMapping("queryDoctor") public BaseResponse delDoctor(LymsDoctor doctor){ BaseResponse baseResponse=new BaseResponse(); LymsDoctor doctor2=lymsDoctorService.getOne(Wrappers.query(doctor)); LymsHdepart hdepart=lymsHdepartService.getById(doctor2.getDpid()); doctor2.setDdname(hdepart.getDname()); doctor2.setHname(hdepart.getHname()); Map param=new HashMap(); param.put("vtype",4); param.put("code",doctor2.getLvl()); List dLst=lymsDictService.listByMap(param); if (dLst.size()>0){ doctor2.setLname(dLst.get(0).getValue()); } baseResponse.setObject(doctor2); return baseResponse; } /** * 小程序用户端-根据医院id获取医生信息 * @param hid * @param current * @param size * @return */ @GetMapping("appGetDoctorList") public BaseResponse appGetDoctorList(AppgetdoctorlistInfo appgetdoctorlistInfo, int current, int size){ BaseResponse baseResponse=new BaseResponse(); LambdaQueryWrapper queryWrapper = new QueryWrapper().lambda(); queryWrapper.setEntity(appgetdoctorlistInfo); if(StringUtil.isNotEmpty(appgetdoctorlistInfo.getSearchinfo())){ queryWrapper.like(AppgetdoctorlistInfo::getDname, appgetdoctorlistInfo.getSearchinfo()) .or().like(AppgetdoctorlistInfo::getDpname,appgetdoctorlistInfo.getSearchinfo()) .or().like(AppgetdoctorlistInfo::getLvlname, appgetdoctorlistInfo.getSearchinfo()); } Page page=new Page<>(current,size); Page appgetdoctorlistInfoPage=appgetdoctorlistInfoService.page(page,queryWrapper); baseResponse.setObject(appgetdoctorlistInfoPage); return baseResponse; } }