HospitalServiceImpl.java 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. package com.kcim.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import cn.hutool.core.date.DateUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  8. import com.kcim.common.exception.CostException;
  9. import com.kcim.common.util.PageUtils;
  10. import com.kcim.common.constants.NumberConstant;
  11. import com.kcim.dao.mapper.HospitalMapper;
  12. import com.kcim.dao.model.Hospital;
  13. import com.kcim.dao.model.dto.HospitalDto;
  14. import com.kcim.dao.model.dto.HospitalSaveDto;
  15. import com.kcim.vo.CommonVO;
  16. import com.kcim.vo.HospitalAllVO;
  17. import com.kcim.vo.HospitalVO;
  18. import com.kcim.service.HospitalService;
  19. import com.kcim.common.util.BeanUtil;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.transaction.annotation.Propagation;
  22. import org.springframework.transaction.annotation.Transactional;
  23. import org.springframework.util.StringUtils;
  24. import java.util.Collections;
  25. import java.util.List;
  26. import java.util.Objects;
  27. /**
  28. * @author 11290
  29. */
  30. @Service("hosptailService")
  31. public class HospitalServiceImpl extends ServiceImpl<HospitalMapper, Hospital> implements HospitalService {
  32. /**
  33. * 分页查询所有的医院信息
  34. *
  35. * @param current
  36. * @param pageSize
  37. * @return
  38. */
  39. @Override
  40. public PageUtils queryList(Integer current, Integer pageSize, Long hospId, String name) {
  41. Page<Hospital> hosptailPage = new Page<>(current, pageSize);
  42. Page<Hospital> pages = this.page(hosptailPage, new QueryWrapper<Hospital>().lambda()
  43. .like(!StringUtils.isEmpty(name), Hospital::getName, name).orderByDesc(Hospital::getCreateTime));
  44. List<Hospital> records = pages.getRecords();
  45. List<HospitalVO> hospitalVOList = BeanUtil.convertList(records, HospitalVO.class);
  46. hospitalVOList.forEach(i -> {
  47. if (NumberConstant.ZERO.equals(i.getIsHospital())) {
  48. i.setParentId(null);
  49. i.setParentName(null);
  50. }
  51. String format = DateUtil.format(DateUtil.date(i.getCreateTime()), "yyyy-MM-dd HH:mm:ss");
  52. i.setCreateDateTime(format);
  53. });
  54. PageUtils pageUtils = new PageUtils(pages);
  55. pageUtils.setList(hospitalVOList);
  56. return pageUtils;
  57. }
  58. /**
  59. * 添加医院信息
  60. *
  61. * @param hospitalSaveDto
  62. */
  63. @Override
  64. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
  65. public void saveHosptail(HospitalSaveDto hospitalSaveDto) {
  66. String sign = hospitalSaveDto.getSign();
  67. // 检验此时保存的是医院还是院区
  68. checkParam(hospitalSaveDto, sign);
  69. Hospital hospital = BeanUtil.convertObj(hospitalSaveDto, Hospital.class);
  70. hospital.setCreateTime(System.currentTimeMillis());
  71. baseMapper.insert(hospital);
  72. }
  73. // 校验参数
  74. private void checkParam(HospitalSaveDto hospitalSaveDto, String sign) {
  75. Integer isHospital = hospitalSaveDto.getIsHospital();
  76. // 新增医院
  77. if (isHospital == 0) {
  78. if (StringUtils.isEmpty(sign)) {
  79. throw new CostException(500, "新增医院请选择医院标识");
  80. }
  81. Hospital bySign = this.getBySignHospital(sign);
  82. if (Objects.nonNull(bySign)) {
  83. throw new CostException(500, "当前医院标识已存在,请重新生成");
  84. }
  85. } else {
  86. Long parentId = hospitalSaveDto.getParentId();
  87. // 校验参数
  88. if (parentId == 0) {
  89. throw new CostException(500, "新增院区请选择医院");
  90. }else {
  91. Hospital hospital = baseMapper.selectById(parentId);
  92. if (Objects.isNull(hospital)){
  93. throw new CostException(500, "选择的住院不存在");
  94. }else {
  95. hospitalSaveDto.setParentName(hospital.getName());
  96. }
  97. }
  98. }
  99. }
  100. public Hospital getBySignHospital(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. return one;
  109. }
  110. /**
  111. * 修改医院信息
  112. *
  113. * @param hospitalDto
  114. */
  115. @Override
  116. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
  117. public void updateByHosptail(HospitalDto hospitalDto) {
  118. Hospital hospital = baseMapper.selectOne(new QueryWrapper<Hospital>().lambda().
  119. eq(!StringUtils.isEmpty(hospitalDto.getId()), Hospital::getId, hospitalDto.getId()));
  120. if (Objects.isNull(hospital)) {
  121. throw new CostException("不存在相关医院信息");
  122. }
  123. if (NumberConstant.ONE.equals(hospitalDto.getIsHospital())){
  124. // 此时修改的是院区 需要传递parent_Id 和 parent__name
  125. if (hospitalDto.getParentId()<=0 || StringUtils.isEmpty(hospitalDto.getParentName())){
  126. throw new CostException(500,"修改院区的时候需要传递医院的Id和医院名称");
  127. }
  128. }
  129. Hospital hospitalRequest = BeanUtil.convertObj(hospitalDto, Hospital.class);
  130. baseMapper.updateById(hospitalRequest);
  131. // hospitalRequest.setId(null);
  132. // hospitalRequest.setCreateTime(System.currentTimeMillis());
  133. // hospitalRequest.setSign(hospital.getSign());
  134. // baseMapper.insert(hospitalRequest);
  135. // 修改和这个医院相关联的用户的数据
  136. }
  137. /**
  138. * 获取所有的医院信息
  139. *
  140. * @return
  141. */
  142. @Override
  143. public List<HospitalAllVO> getAll() {
  144. List<Hospital> hospitals = baseMapper.selectList(new QueryWrapper<Hospital>().lambda()
  145. .eq(Hospital::getIsHospital, NumberConstant.ZERO));
  146. List<HospitalAllVO> hospitalAllVOList = BeanUtil.convertList(hospitals, HospitalAllVO.class);
  147. return hospitalAllVOList;
  148. }
  149. /**
  150. * 通过医院标识获取院区列表
  151. *
  152. * @param sign
  153. * @return
  154. */
  155. @Override
  156. public List<CommonVO> getHospArea(String sign) {
  157. Hospital one = this.getBySign(sign);
  158. // 获取下面所有院区
  159. List<Hospital> list = this.list(
  160. new LambdaQueryWrapper<Hospital>()
  161. .select(Hospital::getId)
  162. .eq(Hospital::getIsHospital, 1)
  163. .eq(Hospital::getParentId, one.getId())
  164. );
  165. // 如果不存在院区
  166. if (CollUtil.isEmpty(list)) {
  167. return Collections.emptyList();
  168. }
  169. return BeanUtil.convertList(list, CommonVO.class);
  170. }
  171. /**
  172. * 通过医院sign获取医院信息
  173. *
  174. * @param hospSign 医院唯一标识
  175. * @return
  176. */
  177. @Override
  178. public Hospital getBySign(String hospSign) {
  179. Hospital one = this.getOne(
  180. new LambdaQueryWrapper<Hospital>()
  181. .select(Hospital::getId, Hospital::getName)
  182. // .eq(Hospital::getIsHospital, 0)
  183. .eq(Hospital::getSign, hospSign)
  184. .last("limit 1")
  185. );
  186. if (Objects.isNull(one)) {
  187. throw new CostException("当前医院不存在");
  188. }
  189. return one;
  190. }
  191. @Override
  192. public Hospital getByName(String str) {
  193. Hospital one = this.getOne(
  194. new LambdaQueryWrapper<Hospital>()
  195. // .select(Hospital::getId, Hospital::getName)
  196. .eq(Hospital::getName, str)
  197. .last("limit 1")
  198. );
  199. if (Objects.isNull(one)) {
  200. throw new CostException("当前医院名称为:" + str + "不存在");
  201. }
  202. return one;
  203. }
  204. /**
  205. * 批量珊瑚医院的数据
  206. *
  207. * @param idList 医院的Id集合
  208. */
  209. @Override
  210. @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
  211. public void deleteByIds(List<Integer> idList) {
  212. this.removeByIds(idList);
  213. }
  214. // /**
  215. // * 校验是否是本院下人员,并且返回对应的院区id
  216. // *
  217. // * @param hospId
  218. // * @param str
  219. // * @return
  220. // */
  221. // @Override
  222. // public Integer getByNameAndCheck(Long hospId, String str) {
  223. // // 得到这个hospId 相关的所有医院或院区id
  224. // Hospital byId = this.getById(hospId);
  225. // if (Objects.isNull(byId)) {
  226. // throw new CostException(500, "当前医院不存在");
  227. // }
  228. // Integer isHospital = byId.getIsHospital();
  229. // List<Integer>
  230. // // 是医院
  231. // if (isHospital == 0) {
  232. //
  233. // }
  234. // }
  235. }