package com.imed.costaccount.service.impl; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.imed.costaccount.mapper.ResponsibilityDepartmentMapper; import com.imed.costaccount.model.Responsibility; import com.imed.costaccount.model.ResponsibilityDepartment; import com.imed.costaccount.model.User; import com.imed.costaccount.model.dto.DepartDTO; import com.imed.costaccount.model.vo.CenterDepartmentVO; import com.imed.costaccount.model.vo.DepartVO; import com.imed.costaccount.service.ResponsibilityDepartmentService; import com.imed.costaccount.service.ResponsibilityService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @Slf4j @Service("responsibilityDepartmentService") public class ResponsibilityDepartmentServiceImpl extends ServiceImpl implements ResponsibilityDepartmentService { private ResponsibilityService responsibilityService; public ResponsibilityDepartmentServiceImpl(ResponsibilityService responsibilityService) { this.responsibilityService = responsibilityService; } /** * 获取责任中心对照列表 * * @param user 当前登录用户 * @return */ @Override public List getCenterDepart(User user) { List list = responsibilityService.getParentSon(user); for (CenterDepartmentVO centerDepartmentVO : list) { List child = centerDepartmentVO.getChild(); if (CollUtil.isEmpty(child)) { child = new ArrayList<>(); } for (CenterDepartmentVO departmentVO : child) { List departVOS = baseMapper.getDepartByCenterId(departmentVO.getResponsibilityId()); departmentVO.setDepartments(departVOS); } } return list; } /** * 保存或修改责任中心对照 * * @param departDTO * @param user */ @Override @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class) public void saveCenterDepart(DepartDTO departDTO, User user) { Integer responsibilityId = departDTO.getResponsibilityId(); Integer hospId = user.getHospId(); List list = this.list( new LambdaQueryWrapper().select(ResponsibilityDepartment::getId) .eq(ResponsibilityDepartment::getResponsibilityId, responsibilityId) .eq(ResponsibilityDepartment::getHospId, hospId) ); if (CollUtil.isNotEmpty(list)) { this.removeByIds(list.stream().map(ResponsibilityDepartment::getId).collect(Collectors.toList())); } List departmentIds = departDTO.getDepartmentIds(); if (CollUtil.isEmpty(departmentIds)) { return ; } List data = departmentIds.stream().map(item -> { ResponsibilityDepartment centerDepart = new ResponsibilityDepartment(); return centerDepart.setResponsibilityId(responsibilityId).setCreateTime(new Date().getTime()).setHospId(hospId) .setDepartmentId(item); }).collect(Collectors.toList()); this.saveBatch(data); } }