HosptailServiceImpl.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package com.imed.costaccount.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.imed.costaccount.common.exception.CostException;
  6. import com.imed.costaccount.common.util.PageUtils;
  7. import com.imed.costaccount.mapper.HosptailMapper;
  8. import com.imed.costaccount.model.Hosptail;
  9. import com.imed.costaccount.model.dto.HosptailDto;
  10. import com.imed.costaccount.model.vo.CommonVO;
  11. import com.imed.costaccount.model.vo.HosptailVO;
  12. import com.imed.costaccount.service.HosptailService;
  13. import com.imed.costaccount.utils.BeanUtil;
  14. import org.springframework.stereotype.Service;
  15. import java.util.*;
  16. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  17. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  18. import org.springframework.transaction.annotation.Propagation;
  19. import org.springframework.transaction.annotation.Transactional;
  20. import org.springframework.util.StringUtils;
  21. @Service("hosptailService")
  22. public class HosptailServiceImpl extends ServiceImpl<HosptailMapper, Hosptail> implements HosptailService {
  23. /**
  24. * 分页查询所有的医院信息
  25. *
  26. * @param page
  27. * @param pageSize
  28. * @return
  29. */
  30. @Override
  31. public PageUtils queryList(Integer page, Integer pageSize,String name) {
  32. Page<Hosptail> hosptailPage = new Page<>(page, pageSize);
  33. Page<Hosptail> pages = this.page(hosptailPage,new QueryWrapper<Hosptail>()
  34. .lambda().like(!StringUtils.isEmpty(name),Hosptail::getName,name));
  35. List<Hosptail> records = pages.getRecords();
  36. List<HosptailVO> hosptailVOList = BeanUtil.convertList(records, HosptailVO.class);
  37. PageUtils pageUtils = new PageUtils(pages);
  38. pageUtils.setList(hosptailVOList);
  39. return pageUtils;
  40. }
  41. /**
  42. * 添加医院信息
  43. *
  44. * @param hosptailDto
  45. */
  46. @Override
  47. public void saveHosptail(HosptailDto hosptailDto) {
  48. hosptailDto.setCreateTime(System.currentTimeMillis());
  49. // TODO 可能需要补充没有传递的数据
  50. Hosptail hosptail = BeanUtil.convertObj(hosptailDto, Hosptail.class);
  51. hosptail.setCreateTime(System.currentTimeMillis());
  52. baseMapper.insert(hosptail);
  53. }
  54. /**
  55. * 修改医院信息
  56. *
  57. * @param hosptailDto
  58. */
  59. @Override
  60. @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
  61. public void updateByHosptail(HosptailDto hosptailDto) {
  62. Hosptail hosptail = baseMapper.selectOne(new QueryWrapper<Hosptail>().lambda().
  63. eq(!StringUtils.isEmpty(hosptailDto.getId()), Hosptail::getId, hosptailDto.getId()));
  64. if (Objects.isNull(hosptail)) {
  65. throw new CostException("不存在相关医院信息");
  66. }
  67. baseMapper.deleteById(hosptail.getId());
  68. Hosptail hosptailRequest = BeanUtil.convertObj(hosptail, Hosptail.class);
  69. hosptailRequest.setId(null);
  70. baseMapper.insert(hosptailRequest);
  71. }
  72. /**
  73. * 通过医院标识获取院区列表
  74. * @param sign
  75. * @return
  76. */
  77. @Override
  78. public List<CommonVO> getHospArea(String sign) {
  79. Hosptail one = this.getBySign(sign);
  80. // 获取下面所有院区
  81. List<Hosptail> list = this.list(
  82. new LambdaQueryWrapper<Hosptail>()
  83. .select(Hosptail::getId)
  84. .eq(Hosptail::getIsHosptail, 1)
  85. .eq(Hosptail::getParentId, one.getId())
  86. );
  87. // 如果不存在院区
  88. if (CollUtil.isEmpty(list)) {
  89. return Collections.emptyList();
  90. }
  91. return BeanUtil.convertList(list, CommonVO.class);
  92. }
  93. /**
  94. * 通过医院sign获取医院信息
  95. * @param hospSign 医院唯一标识
  96. * @return
  97. */
  98. @Override
  99. public Hosptail getBySign(String hospSign) {
  100. Hosptail one = this.getOne(
  101. new LambdaQueryWrapper<Hosptail>()
  102. .select(Hosptail::getId,Hosptail::getName)
  103. .eq(Hosptail::getIsHosptail, 0)
  104. .eq(Hosptail::getSign, hospSign)
  105. .last("limit 1")
  106. );
  107. if (Objects.isNull(one)) {
  108. throw new CostException("当前医院不存在");
  109. }
  110. return one;
  111. }
  112. }