ResponsibilityDepartmentServiceImpl.java 3.6 KB

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