龚焕茏
2024-05-07 49429bad1036c81c056faeadfa009c53ba777fad
src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java
@@ -1,11 +1,17 @@
package com.mindskip.xzs.service.impl;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.mindskip.xzs.domain.Department;
import com.mindskip.xzs.domain.UserDepartment;
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;
@@ -14,6 +20,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
@Service
public class DepartmentServiceImpl extends BaseServiceImpl<Department> implements DepartmentService {
@@ -22,11 +29,13 @@
    private final DepartmentMapper departmentMapper;
    private final UserDepartmentMapper userDepartmentMapper;
    private final UserMapper userMapper;
    public DepartmentServiceImpl(BaseMapper<Department> baseMapper, DepartmentMapper departmentMapper, UserDepartmentMapper userDepartmentMapper) {
    public DepartmentServiceImpl(BaseMapper<Department> baseMapper, DepartmentMapper departmentMapper, UserDepartmentMapper userDepartmentMapper, UserMapper userMapper) {
        super(baseMapper);
        this.departmentMapper = departmentMapper;
        this.userDepartmentMapper = userDepartmentMapper;
        this.userMapper = userMapper;
    }
    @Override
@@ -48,12 +57,29 @@
    @Transactional(rollbackFor = Exception.class)
    @Override
    public Integer update(Department department) {
        userDepartmentMapper.removeByDepartmentId(department.getId());
        return departmentMapper.update(department);
//        userDepartmentMapper.removeByDepartmentId(department.getId());
        Department entity = departmentMapper.getById(department.getId());
        if (Objects.isNull(entity)) {
            throw new RuntimeException("该部门不存在");
        }
        if (Objects.nonNull(department.getAdminId())) {
            Integer adminNum = departmentMapper.countByAdminId(department.getAdminId(), department.getId());
            if (adminNum > 0) {
                throw new RuntimeException("一个用户只能是一个单位的管理员");
            }
            if (! Objects.equals(entity.getAdminId(), department.getAdminId())) {
                // 取消原先的管理员标识
                userMapper.updateDeptAdmin(entity.getAdminId(), DeptAdminEnum.NO.getValue());
            }
            // 标识部门管理员
            userMapper.updateDeptAdmin(department.getAdminId(), DeptAdminEnum.YES.getValue());
        }
        Integer update = departmentMapper.update(department);
        return update;
    }
    @Override
    public PageInfo<Department> gets(DepartmentResponseVM departmentResponseVM) {
    public PageInfo<DepartmentResponseVM> gets(DepartmentResponseVM departmentResponseVM) {
        return PageHelper.startPage(departmentResponseVM.getPageIndex(), departmentResponseVM.getPageSize(), "id desc").doSelectPageInfo(() ->
                departmentMapper.page(departmentResponseVM)
        );
@@ -65,12 +91,47 @@
    }
    @Override
    public List<Department> gets() {
        return departmentMapper.gets();
    public List<Department> gets(Integer deptId) {
        if (deptId == null || deptId == -1) {
            deptId = null;
        }
        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
    public void updateAdmin(UpdateDeptAdminVO form) {
        Department entity = departmentMapper.getById(form.getId());
        if (Objects.isNull(form)) {
            throw new RuntimeException("该部门不存在");
        }
        if (Objects.nonNull(form.getAdminId())) {
            Integer adminNum = departmentMapper.countByAdminId(form.getAdminId(), form.getId());
            if (adminNum > 0) {
                throw new RuntimeException("一个用户只能是一个单位的管理员");
            }
            if (! Objects.equals(entity.getAdminId(), form.getAdminId())) {
                // 取消原先的管理员标识
                userMapper.updateDeptAdmin(entity.getAdminId(), DeptAdminEnum.NO.getValue());
            }
            // 标识部门管理员
            userMapper.updateDeptAdmin(form.getAdminId(), DeptAdminEnum.YES.getValue());
        }
        entity.setAdminId(form.getAdminId());
        departmentMapper.update(entity);
    }
}