package com.lyms.talkonlineweb.controller;
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.HdepartInfoService;
import com.lyms.talkonlineweb.service.LymsDepartillService;
import com.lyms.talkonlineweb.service.LymsHdepartService;
import com.lyms.talkonlineweb.service.LymsIllnessService;
import com.lyms.talkonlineweb.util.Constant;
import com.lyms.talkonlineweb.util.JwtUtils;
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.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 科室管理
*/
@RestController
@RequestMapping("depart")
public class DepartController {
@Autowired
private LymsHdepartService lymsHdepartService;
@Autowired //科室所拥有的疾病
private LymsDepartillService lymsDepartillService;
@Autowired
private HdepartInfoService hdepartInfoService;
/**
* 获取科室列表
* @param depart
* @param current
* @param size
* @return
*/
@GetMapping("sltDepartLst")
public BaseResponse sltDepartLst(HdepartInfo depart, int current, int size){
BaseResponse baseResponse=new BaseResponse();
// Page<LymsHdepart> page=new Page<>(current,size);
// Page<LymsHdepart> departPage=lymsHdepartService.page(page, Wrappers.query(depart).orderByDesc("updated_time","createdtime"));
// addIll(departPage);
Page<HdepartInfo> page=new Page<>(current,size);
Page<HdepartInfo> departPage=hdepartInfoService.page(page, Wrappers.query(depart).orderByDesc("updated_time","createdtime"));
addIll(departPage);
baseResponse.setObject(departPage);
return baseResponse;
}
public void addIll(Page<HdepartInfo> departPage){
departPage.getRecords().forEach(e->{
Map param=new HashMap();
param.put("did",e.getDid());
List<LymsDepartill> iLst=lymsDepartillService.listByMap(param);
iLst.forEach(i->{
if(e.getIlls()==null){
e.setIlls("");
}
e.setIlls(e.getIlls()+i.getIid()+",");
});
});
}
/**
* 保存或更新科室信息
* @param depart
* @return
*/
@PostMapping("saveDepart")
public BaseResponse saveDepart(@RequestBody LymsHdepart depart, BindingResult result){
BaseResponse baseResponse=new BaseResponse();
baseResponse.setErrormsg("");
if(depart.getDid()==null){
depart.setCreatedtime(new Date());
LymsHdepart depart2=new LymsHdepart();
}else{
depart.setUpdatedTime(new Date());
}
if(result.hasErrors()){
baseResponse.setErrorcode(1);
result.getAllErrors().forEach(e->{
baseResponse.setErrormsg(baseResponse.getErrormsg()+e.getDefaultMessage());
});
return baseResponse;
}
boolean f=lymsHdepartService.saveOrUpdate(depart);
Map param=new HashMap();
param.put("did",depart.getDid());
lymsDepartillService.removeByMap(param);
String[] iArr={};
if(depart.getIlls()!=null){
iArr=depart.getIlls().split(",");
}
for (int i = 0; i < iArr.length; i++) {
LymsDepartill departill=new LymsDepartill();
departill.setDid(depart.getDid());
departill.setIid(Integer.parseInt(iArr[i]));
lymsDepartillService.save(departill);
}
baseResponse.setErrorcode(f==true?0:1);
return baseResponse;
}
/**
* 删除科室
* @param did
* @return
*/
@GetMapping("delDepart")
public BaseResponse delHosp(int did){
BaseResponse baseResponse=new BaseResponse();
boolean f=lymsHdepartService.removeById(did);
baseResponse.setErrorcode(f==true?0:1);
return baseResponse;
}
/**
* 科室人员或者护士登录
* @param depart
* @return
*/
@PostMapping("loginDepart")
public BaseResponse loginDepart(LymsHdepart depart){
BaseResponse baseResponse=new BaseResponse();
List<LymsHdepart> dLst=lymsHdepartService.list(Wrappers.query(depart));
// if (dLst.size()>0) {
// depart=dLst.get(0);
// depart.setDpasswd(null);
// String jwt = JwtUtils.createJWT("1", depart.getDusername(), Constant.JWT_TTL);
// Map<String,Object> map=new HashMap<>();
// map.put("depart",depart);
// map.put("token",jwt);
// baseResponse.setObject(map);
// }
return baseResponse;
}
}