package com.ruoyi.service.impl;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.domain.ZHealthBase;
import com.ruoyi.domain.ZHealthNow;
import com.ruoyi.domain.ZInfoUser;
import com.ruoyi.domain.dto.ZHealthBaseDto;
import com.ruoyi.domain.health.AllergyHistory;
import com.ruoyi.domain.health.BloodType;
import com.ruoyi.domain.health.GeneticDisease;
import com.ruoyi.mapper.ZHealthBaseMapper;
import com.ruoyi.service.ZHealthBaseService;
import com.ruoyi.service.ZInfoUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* 健康表基础信息 服务实现类
*
*
* @author ojq
* @since 2023-03-14
*/
@Service
public class ZHealthBaseServiceImpl extends ServiceImpl implements ZHealthBaseService {
@Autowired
ZInfoUserService zInfoUserService;
@Override
public ZHealthBaseDto selectData() {
SysUser user = SecurityUtils.getLoginUser().getUser();
Long userId = user.getUserId();
LambdaQueryWrapper lqw = new LambdaQueryWrapper<>();
lqw.eq(ZHealthBase::getUid,userId);
ZHealthBase zHealthBase = getOne(lqw);
if(zHealthBase==null)
{
//根据userId查询到infouser的uaid
ZInfoUser zInfoUser = zInfoUserService.getInfoBysysId(userId);
System.out.println("55555555555555555555");
//拿到所有的sysid
List fms = zInfoUserService.findByUaidToFaid(zInfoUser.getUaid()).stream().map(ZInfoUser::getSysId).collect(Collectors.toList());
System.out.println(fms.size());
for(Long id:fms)
{
LambdaQueryWrapper lqw1 = new LambdaQueryWrapper<>();
if(!id.equals(userId))
{
lqw1.eq(ZHealthBase::getUid, id);
zHealthBase = getOne(lqw1);
break;
}
}
}
//如果是第一次进来,之前没有这个用户的数据,抛异常让用户先插入数据
if(zHealthBase == null){
throw new RuntimeException("第一次进来,请先填写好数据");
}
//封装要返回的数据
ZHealthBaseDto returnData = new ZHealthBaseDto();
BeanUtils.copyProperties(zHealthBase,returnData);
// returnData.setName(zHealthBase.getName());
// returnData.setSex(zHealthBase.getSex());
// returnData.setEducationLevel(zHealthBase.getEducationLevel());
// returnData.setWork(zHealthBase.getWork());
// returnData.setPhone(zHealthBase.getPhone());
// returnData.setEmail(zHealthBase.getEmail());
// returnData.setMedicine(zHealthBase.getMedicine());
// returnData.setBaseDisease(zHealthBase.getBaseDisease());
//将json数组转换成对象
returnData.setBloodClass(JSON.parseObject(zHealthBase.getBlood(), BloodType.class));
returnData.setAllergyClass(JSON.parseObject(zHealthBase.getAllergy(), AllergyHistory.class));
returnData.setGeneticDiseaseClass(JSON.parseObject(zHealthBase.getGeneticDisease(), GeneticDisease.class));
return returnData;
}
@Override
public AjaxResult saveOrUpdateData(ZHealthBaseDto zHealthBaseDto) {
SysUser user = SecurityUtils.getLoginUser().getUser();
Long userId = user.getUserId();
LambdaQueryWrapper lqw = new LambdaQueryWrapper<>();
lqw.eq(ZHealthBase::getUid,userId);
ZHealthBase getResult = getOne(lqw);
ZHealthBase zHealthBase = new ZHealthBase();
BeanUtils.copyProperties(zHealthBaseDto,zHealthBase);
zHealthBase.setUid(userId);
zHealthBase.setBlood(JSON.toJSONString(zHealthBaseDto.getBloodClass()));
zHealthBase.setAllergy(JSON.toJSONString(zHealthBaseDto.getAllergyClass()));
zHealthBase.setGeneticDisease(JSON.toJSONString(zHealthBaseDto.getGeneticDiseaseClass()));
if(getResult == null){
//如果是第一次进来,那么是新增数据
save(zHealthBase);
}else {
//如果不是第一次,那就是修改数据了
zHealthBase.setId(getResult.getId());
updateById(zHealthBase);
}
return AjaxResult.success();
}
}