package com.imed.costaccount.service.impl; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.imed.costaccount.common.exception.CostException; import com.imed.costaccount.common.util.PageUtils; import com.imed.costaccount.mapper.HosptailMapper; import com.imed.costaccount.model.Hosptail; import com.imed.costaccount.model.dto.HosptailDto; import com.imed.costaccount.model.vo.CommonVO; import com.imed.costaccount.model.vo.HosptailVO; import com.imed.costaccount.service.HosptailService; import com.imed.costaccount.utils.BeanUtil; import org.springframework.stereotype.Service; import java.util.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; @Service("hosptailService") public class HosptailServiceImpl extends ServiceImpl implements HosptailService { /** * 分页查询所有的医院信息 * * @param page * @param pageSize * @return */ @Override public PageUtils queryList(Integer page, Integer pageSize,String name) { Page hosptailPage = new Page<>(page, pageSize); Page pages = this.page(hosptailPage,new QueryWrapper() .lambda().like(!StringUtils.isEmpty(name),Hosptail::getName,name)); List records = pages.getRecords(); List hosptailVOList = BeanUtil.convertList(records, HosptailVO.class); PageUtils pageUtils = new PageUtils(pages); pageUtils.setList(hosptailVOList); return pageUtils; } /** * 添加医院信息 * * @param hosptailDto */ @Override public void saveHosptail(HosptailDto hosptailDto) { hosptailDto.setCreateTime(System.currentTimeMillis()); // TODO 可能需要补充没有传递的数据 Hosptail hosptail = BeanUtil.convertObj(hosptailDto, Hosptail.class); hosptail.setCreateTime(System.currentTimeMillis()); baseMapper.insert(hosptail); } /** * 修改医院信息 * * @param hosptailDto */ @Override @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class) public void updateByHosptail(HosptailDto hosptailDto) { Hosptail hosptail = baseMapper.selectOne(new QueryWrapper().lambda(). eq(!StringUtils.isEmpty(hosptailDto.getId()), Hosptail::getId, hosptailDto.getId())); if (Objects.isNull(hosptail)) { throw new CostException("不存在相关医院信息"); } baseMapper.deleteById(hosptail.getId()); Hosptail hosptailRequest = BeanUtil.convertObj(hosptail, Hosptail.class); hosptailRequest.setId(null); baseMapper.insert(hosptailRequest); } /** * 通过医院标识获取院区列表 * @param sign * @return */ @Override public List getHospArea(String sign) { Hosptail one = this.getBySign(sign); // 获取下面所有院区 List list = this.list( new LambdaQueryWrapper() .select(Hosptail::getId) .eq(Hosptail::getIsHosptail, 1) .eq(Hosptail::getParentId, one.getId()) ); // 如果不存在院区 if (CollUtil.isEmpty(list)) { return Collections.emptyList(); } return BeanUtil.convertList(list, CommonVO.class); } /** * 通过医院sign获取医院信息 * @param hospSign 医院唯一标识 * @return */ @Override public Hosptail getBySign(String hospSign) { Hosptail one = this.getOne( new LambdaQueryWrapper() .select(Hosptail::getId,Hosptail::getName) .eq(Hosptail::getIsHosptail, 0) .eq(Hosptail::getSign, hospSign) .last("limit 1") ); if (Objects.isNull(one)) { throw new CostException("当前医院不存在"); } return one; } }