HosptailServiceImpl.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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.Hospital;
  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, Hospital> implements HosptailService {
  23. /**
  24. * 分页查询所有的医院信息
  25. *
  26. * @param page
  27. * @param pageSize
  28. * @return
  29. */
  30. @Override
  31. public PageUtils queryList(Integer page, Integer pageSize,Integer hospId ,String name) {
  32. Page<Hospital> hosptailPage = new Page<>(page, pageSize);
  33. Page<Hospital> pages = this.page(hosptailPage,new QueryWrapper<Hospital>()
  34. .lambda().eq(!StringUtils.isEmpty(hospId),Hospital::getId,hospId)
  35. .like(!StringUtils.isEmpty(name), Hospital::getName,name));
  36. List<Hospital> records = pages.getRecords();
  37. List<HosptailVO> hosptailVOList = BeanUtil.convertList(records, HosptailVO.class);
  38. PageUtils pageUtils = new PageUtils(pages);
  39. pageUtils.setList(hosptailVOList);
  40. return pageUtils;
  41. }
  42. /**
  43. * 添加医院信息
  44. *
  45. * @param hosptailDto
  46. */
  47. @Override
  48. public void saveHosptail(HosptailDto hosptailDto) {
  49. hosptailDto.setCreateTime(System.currentTimeMillis());
  50. // TODO 可能需要补充没有传递的数据
  51. Hospital hospital = BeanUtil.convertObj(hosptailDto, Hospital.class);
  52. hospital.setCreateTime(System.currentTimeMillis());
  53. baseMapper.insert(hospital);
  54. }
  55. /**
  56. * 修改医院信息
  57. *
  58. * @param hosptailDto
  59. */
  60. @Override
  61. @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
  62. public void updateByHosptail(HosptailDto hosptailDto) {
  63. Hospital hospital = baseMapper.selectOne(new QueryWrapper<Hospital>().lambda().
  64. eq(!StringUtils.isEmpty(hosptailDto.getId()), Hospital::getId, hosptailDto.getId()));
  65. if (Objects.isNull(hospital)) {
  66. throw new CostException("不存在相关医院信息");
  67. }
  68. baseMapper.deleteById(hospital.getId());
  69. Hospital hospitalRequest = BeanUtil.convertObj(hospital, Hospital.class);
  70. hospitalRequest.setId(null);
  71. baseMapper.insert(hospitalRequest);
  72. }
  73. /**
  74. * 通过医院标识获取院区列表
  75. * @param sign
  76. * @return
  77. */
  78. @Override
  79. public List<CommonVO> getHospArea(String sign) {
  80. Hospital one = this.getBySign(sign);
  81. // 获取下面所有院区
  82. List<Hospital> list = this.list(
  83. new LambdaQueryWrapper<Hospital>()
  84. .select(Hospital::getId)
  85. .eq(Hospital::getIsHospital, 1)
  86. .eq(Hospital::getParentId, one.getId())
  87. );
  88. // 如果不存在院区
  89. if (CollUtil.isEmpty(list)) {
  90. return Collections.emptyList();
  91. }
  92. return BeanUtil.convertList(list, CommonVO.class);
  93. }
  94. /**
  95. * 通过医院sign获取医院信息
  96. * @param hospSign 医院唯一标识
  97. * @return
  98. */
  99. @Override
  100. public Hospital getBySign(String hospSign) {
  101. Hospital one = this.getOne(
  102. new LambdaQueryWrapper<Hospital>()
  103. .select(Hospital::getId, Hospital::getName)
  104. .eq(Hospital::getIsHospital, 0)
  105. .eq(Hospital::getSign, hospSign)
  106. .last("limit 1")
  107. );
  108. if (Objects.isNull(one)) {
  109. throw new CostException("当前医院不存在");
  110. }
  111. return one;
  112. }
  113. }