ResponsibilityDepartmentServiceImpl.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package com.kcim.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.kcim.common.exception.CostException;
  6. import com.kcim.common.util.UserContext;
  7. import com.kcim.dao.mapper.ResponsibilityDepartmentMapper;
  8. import com.kcim.dao.model.Responsibility;
  9. import com.kcim.dao.model.ResponsibilityDepartment;
  10. import com.kcim.dao.model.dto.DepartDTO;
  11. import com.kcim.dao.model.dto.SysDepartment;
  12. import com.kcim.service.CenterService;
  13. import com.kcim.service.ResponsibilityDepartmentService;
  14. import com.kcim.service.ResponsibilityService;
  15. import com.kcim.vo.CenterDepartmentVO;
  16. import com.kcim.vo.ResponsibilityDepartIdVO;
  17. import lombok.extern.slf4j.Slf4j;
  18. import org.springframework.stereotype.Service;
  19. import org.springframework.transaction.annotation.Propagation;
  20. import org.springframework.transaction.annotation.Transactional;
  21. import org.springframework.util.CollectionUtils;
  22. import java.util.ArrayList;
  23. import java.util.List;
  24. import java.util.Objects;
  25. import java.util.Optional;
  26. import java.util.stream.Collectors;
  27. @Slf4j
  28. @Service("responsibilityDepartmentService")
  29. public class ResponsibilityDepartmentServiceImpl
  30. extends ServiceImpl<ResponsibilityDepartmentMapper, ResponsibilityDepartment> implements ResponsibilityDepartmentService {
  31. private ResponsibilityService responsibilityService;
  32. private CenterService centerService;
  33. public ResponsibilityDepartmentServiceImpl(ResponsibilityService responsibilityService, CenterService centerService) {
  34. this.responsibilityService = responsibilityService;
  35. this.centerService = centerService;
  36. }
  37. /**
  38. * 获取责任中心对照列表
  39. * @return
  40. */
  41. @Override
  42. public List<CenterDepartmentVO> getCenterDepart() {
  43. return responsibilityService.getParentSon();
  44. }
  45. /**
  46. * 保存或修改责任中心对照
  47. *
  48. * @param departDTO
  49. */
  50. @Override
  51. @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
  52. public void saveCenterDepart(DepartDTO departDTO) {
  53. Long responsibilityId = departDTO.getResponsibilityId();
  54. Long hospId = UserContext.getHospId();
  55. List<ResponsibilityDepartment> list = this.list(
  56. new LambdaQueryWrapper<ResponsibilityDepartment>().select(ResponsibilityDepartment::getId)
  57. .eq(ResponsibilityDepartment::getResponsibilityId, responsibilityId)
  58. .eq(ResponsibilityDepartment::getHospId, hospId)
  59. );
  60. if (CollUtil.isNotEmpty(list)) {
  61. this.removeByIds(list.stream().map(ResponsibilityDepartment::getId).collect(Collectors.toList()));
  62. }
  63. List<Long> departmentIds = departDTO.getDepartmentIds();
  64. if (CollUtil.isEmpty(departmentIds)) {
  65. return ;
  66. }
  67. List<Long> remove = departmentIds.stream().filter(Objects::isNull).collect(Collectors.toList());
  68. departmentIds.removeAll(remove);
  69. Responsibility byId = responsibilityService.getById(responsibilityId);
  70. if (Objects.isNull(byId)) {
  71. throw new CostException(500, "责任中心不存在或已被移除");
  72. }
  73. if (byId.getIsGatherCenter() == 1) {
  74. throw new CostException(500, "汇总中心不允许添加对照关系,请先修改");
  75. }
  76. List<SysDepartment> departmentByDepartmentIds = centerService.getDepartmentByDepartmentIds(departmentIds);
  77. List<ResponsibilityDepartment> data = departmentByDepartmentIds.stream().map(item -> {
  78. ResponsibilityDepartment centerDepart = new ResponsibilityDepartment();
  79. return centerDepart.setResponsibilityId(responsibilityId).setCreateTime(System.currentTimeMillis()).setHospId(hospId)
  80. .setDepartmentId(Long.valueOf(item.getId())).setDepartmentCode(item.getCode()).setResponsibilityCode(byId.getResponsibilityCode());
  81. }).collect(Collectors.toList());
  82. this.saveBatch(data);
  83. }
  84. /**
  85. * 获取责任中心科室对照信息
  86. * @return
  87. */
  88. @Override
  89. public List<ResponsibilityDepartIdVO> getResponsibilityDepart(){
  90. Long hospId = UserContext.getHospId();
  91. //获取责任中心科室对照信息
  92. List<ResponsibilityDepartIdVO> responsibilityDepartIdVOS = baseMapper.getResponsibility(hospId);
  93. if(CollectionUtils.isEmpty(responsibilityDepartIdVOS))
  94. {
  95. responsibilityDepartIdVOS=new ArrayList<>();
  96. return responsibilityDepartIdVOS;
  97. }
  98. //获取对照的科室字典
  99. List<SysDepartment> departmentByDepartmentIds =centerService.getDepartmentFilter(null);
  100. if(CollectionUtils.isEmpty(departmentByDepartmentIds))
  101. {
  102. return responsibilityDepartIdVOS;
  103. }
  104. //组装科室代码和科室名称
  105. responsibilityDepartIdVOS.stream().forEach(responsibilityDepartIdVO -> {
  106. Optional<SysDepartment> firstDepartment = departmentByDepartmentIds.stream().filter(sysDepartment ->Long.valueOf(sysDepartment.getId()).equals(responsibilityDepartIdVO.getDepartmentId())).findFirst();
  107. if(firstDepartment.isPresent()){
  108. responsibilityDepartIdVO.setDepartmentCode(firstDepartment.get().getCode());
  109. responsibilityDepartIdVO.setDepartmentName(firstDepartment.get().getName());
  110. }
  111. });
  112. //只取有对应科室数据的记录
  113. List<ResponsibilityDepartIdVO> activeResponsibilityDeparts = responsibilityDepartIdVOS.stream().filter(responsibilityDepartIdVO -> !Objects.isNull(responsibilityDepartIdVO.getDepartmentCode())).collect(Collectors.toList());
  114. return activeResponsibilityDeparts;
  115. }
  116. }