package com.mindskip.xzs.service.impl;
|
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.mindskip.xzs.domain.Department;
|
import com.mindskip.xzs.domain.enums.DeptAdminEnum;
|
import com.mindskip.xzs.domain.vo.BaseSelect;
|
import com.mindskip.xzs.domain.vo.UpdateDeptAdminVO;
|
import com.mindskip.xzs.repository.BaseMapper;
|
import com.mindskip.xzs.repository.DepartmentMapper;
|
import com.mindskip.xzs.repository.UserDepartmentMapper;
|
import com.mindskip.xzs.repository.UserMapper;
|
import com.mindskip.xzs.service.DepartmentService;
|
import com.mindskip.xzs.utility.ModelMapperSingle;
|
import com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM;
|
import org.modelmapper.ModelMapper;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.CollectionUtils;
|
|
import java.util.List;
|
import java.util.Objects;
|
import java.util.stream.Collectors;
|
|
@Service
|
public class DepartmentServiceImpl extends BaseServiceImpl<Department> implements DepartmentService {
|
|
protected final static ModelMapper modelMapper = ModelMapperSingle.Instance();
|
|
private final DepartmentMapper departmentMapper;
|
private final UserDepartmentMapper userDepartmentMapper;
|
private final UserMapper userMapper;
|
|
public DepartmentServiceImpl(BaseMapper<Department> baseMapper, DepartmentMapper departmentMapper, UserDepartmentMapper userDepartmentMapper, UserMapper userMapper) {
|
super(baseMapper);
|
this.departmentMapper = departmentMapper;
|
this.userDepartmentMapper = userDepartmentMapper;
|
this.userMapper = userMapper;
|
}
|
|
@Override
|
public Integer add(String name) {
|
Department department = new Department();
|
department.setDeleted("0");
|
department.setName(name);
|
return departmentMapper.add(department);
|
}
|
|
@Override
|
public Integer remove(Integer id) {
|
Department department = new Department();
|
department.setId(id);
|
department.setDeleted("1");
|
return departmentMapper.update(department);
|
}
|
|
@Transactional(rollbackFor = Exception.class)
|
@Override
|
public Integer update(Department department) {
|
// userDepartmentMapper.removeByDepartmentId(department.getId());
|
Department entity = departmentMapper.getById(department.getId());
|
if (Objects.isNull(entity)) {
|
throw new RuntimeException("该部门不存在");
|
}
|
if (! CollectionUtils.isEmpty(department.getAdminId())) {
|
List<BaseSelect> deptUserList = userDepartmentMapper.getDeptUserList(entity.getId());
|
List<Integer> userIds = deptUserList.stream().map(BaseSelect::getId).collect(Collectors.toList());
|
if (! CollectionUtils.isEmpty(userIds)) {
|
// 先清除之前的管理员标识
|
userMapper.clearDeptAdmin(userIds, entity.getId());
|
}
|
// 标识部门管理员
|
userMapper.updateDeptAdmin(department.getAdminId(), DeptAdminEnum.YES.getValue(), entity.getId());
|
}
|
Integer update = departmentMapper.update(department);
|
return update;
|
}
|
|
@Override
|
public PageInfo<DepartmentResponseVM> gets(DepartmentResponseVM departmentResponseVM) {
|
return PageHelper.startPage(departmentResponseVM.getPageIndex(), departmentResponseVM.getPageSize(), "id desc").doSelectPageInfo(() ->
|
departmentMapper.page(departmentResponseVM)
|
);
|
}
|
|
@Override
|
public Department getById(Integer id) {
|
return departmentMapper.getById(id);
|
}
|
|
@Override
|
public List<Department> gets(List<Integer> deptId) {
|
return departmentMapper.gets(deptId);
|
}
|
|
@Override
|
public Department getName(String name) {
|
return departmentMapper.getName(name);
|
}
|
|
/**
|
* 获取部门用户下拉列表
|
* @param deptId
|
* @return
|
*/
|
@Override
|
public List<BaseSelect> getDeptUserList(Integer deptId) {
|
return userDepartmentMapper.getDeptUserList(deptId);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void updateAdmin(UpdateDeptAdminVO form) {
|
Department entity = departmentMapper.getById(form.getId());
|
if (Objects.isNull(entity)) {
|
throw new RuntimeException("该部门不存在");
|
}
|
if (! CollectionUtils.isEmpty(form.getAdminIds())) {
|
List<BaseSelect> deptUserList = userDepartmentMapper.getDeptUserList(entity.getId());
|
List<Integer> userIds = deptUserList.stream().map(BaseSelect::getId).collect(Collectors.toList());
|
if (! CollectionUtils.isEmpty(userIds)) {
|
// 先清除之前的管理员标识
|
userMapper.clearDeptAdmin(userIds, entity.getId());
|
}
|
// 标识部门管理员
|
userMapper.updateDeptAdmin(form.getAdminIds(), DeptAdminEnum.YES.getValue(), entity.getId());
|
}
|
// 修改被选择的用户为部门管理员
|
userMapper.updateUserDeptAdmin(form);
|
// 修改没被选择的用户并且不是别的部门管理员的用户角色为1
|
userMapper.cancelUserDeptAdmin(form);
|
}
|
}
|