ResponsibilityDepartmentServiceImpl.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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.service.impl.ServiceImpl;
  5. import com.imed.costaccount.common.exception.CostException;
  6. import com.imed.costaccount.mapper.ResponsibilityDepartmentMapper;
  7. import com.imed.costaccount.model.Responsibility;
  8. import com.imed.costaccount.model.ResponsibilityDepartment;
  9. import com.imed.costaccount.model.User;
  10. import com.imed.costaccount.model.dto.DepartDTO;
  11. import com.imed.costaccount.model.vo.CenterDepartmentVO;
  12. import com.imed.costaccount.model.vo.DepartVO;
  13. import com.imed.costaccount.service.ResponsibilityDepartmentService;
  14. import com.imed.costaccount.service.ResponsibilityService;
  15. import lombok.extern.slf4j.Slf4j;
  16. import org.springframework.stereotype.Service;
  17. import org.springframework.transaction.annotation.Propagation;
  18. import org.springframework.transaction.annotation.Transactional;
  19. import java.util.ArrayList;
  20. import java.util.List;
  21. import java.util.Objects;
  22. import java.util.stream.Collectors;
  23. @Slf4j
  24. @Service("responsibilityDepartmentService")
  25. public class ResponsibilityDepartmentServiceImpl
  26. extends ServiceImpl<ResponsibilityDepartmentMapper, ResponsibilityDepartment> implements ResponsibilityDepartmentService {
  27. private ResponsibilityService responsibilityService;
  28. public ResponsibilityDepartmentServiceImpl(ResponsibilityService responsibilityService) {
  29. this.responsibilityService = responsibilityService;
  30. }
  31. /**
  32. * 获取责任中心对照列表
  33. *
  34. * @param user 当前登录用户
  35. * @return
  36. */
  37. @Override
  38. public List<CenterDepartmentVO> getCenterDepart(User user) {
  39. List<CenterDepartmentVO> list = responsibilityService.getParentSon(user);
  40. for (CenterDepartmentVO centerDepartmentVO : list) {
  41. if (centerDepartmentVO.getIsGatherCenter() == 2) {
  42. centerDepartmentVO.setDepartments(baseMapper.getDepartByCenterId(centerDepartmentVO.getResponsibilityId()));
  43. }
  44. List<CenterDepartmentVO> child = centerDepartmentVO.getChild();
  45. if (CollUtil.isEmpty(child)) {
  46. child = new ArrayList<>();
  47. }
  48. for (CenterDepartmentVO departmentVO : child) {
  49. List<DepartVO> departVOS = baseMapper.getDepartByCenterId(departmentVO.getResponsibilityId());
  50. departmentVO.setDepartments(departVOS);
  51. }
  52. }
  53. return list;
  54. }
  55. /**
  56. * 保存或修改责任中心对照
  57. *
  58. * @param departDTO
  59. * @param user
  60. */
  61. @Override
  62. @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
  63. public void saveCenterDepart(DepartDTO departDTO, User user) {
  64. Long responsibilityId = departDTO.getResponsibilityId();
  65. Long hospId = user.getHospId();
  66. List<ResponsibilityDepartment> list = this.list(
  67. new LambdaQueryWrapper<ResponsibilityDepartment>().select(ResponsibilityDepartment::getId)
  68. .eq(ResponsibilityDepartment::getResponsibilityId, responsibilityId)
  69. .eq(ResponsibilityDepartment::getHospId, hospId)
  70. );
  71. if (CollUtil.isNotEmpty(list)) {
  72. this.removeByIds(list.stream().map(ResponsibilityDepartment::getId).collect(Collectors.toList()));
  73. }
  74. List<Long> departmentIds = departDTO.getDepartmentIds();
  75. if (CollUtil.isEmpty(departmentIds)) {
  76. return ;
  77. }
  78. Responsibility byId = responsibilityService.getById(responsibilityId);
  79. if (Objects.isNull(byId)) {
  80. throw new CostException(500, "责任中心不存在或已被移除");
  81. }
  82. if (byId.getIsGatherCenter() == 1) {
  83. throw new CostException(500, "汇总中心不允许添加对照关系,请先修改");
  84. }
  85. List<ResponsibilityDepartment> data = departmentIds.stream().map(item -> {
  86. ResponsibilityDepartment centerDepart = new ResponsibilityDepartment();
  87. return centerDepart.setResponsibilityId(responsibilityId).setCreateTime(System.currentTimeMillis()).setHospId(hospId)
  88. .setDepartmentId(item);
  89. }).collect(Collectors.toList());
  90. this.saveBatch(data);
  91. }
  92. }