jiangping
2024-12-27 5506edbe54883b31db3cc8e4a1d9d0795a18a3c9
server/service/src/main/java/com/doumee/service/business/impl/CompanyDepartmentServiceImpl.java
@@ -1,6 +1,5 @@
package com.doumee.service.business.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
@@ -9,9 +8,9 @@
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.CompanyDepartmentMapper;
import com.doumee.dao.business.dto.UpdateSortDTO;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.business.model.CompanyDepartment;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.system.SystemUserMapper;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.system.vo.DepartmentTree;
@@ -29,7 +28,7 @@
import java.util.Date;
import java.util.List;
import java.util.UUID;
import java.util.Objects;
/**
 * 企业信息表Service实现
@@ -43,11 +42,13 @@
    private CompanyDepartmentMapper companyDepartmentMapper;
    @Autowired
    private SystemUserMapper systemUserMapper;
    @Override
    public  List<CompanyDepartment> departTree(Integer type){
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        MPJLambdaWrapper<CompanyDepartment> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Company.class);
        queryWrapper.select("t2.realname",CompanyDepartment::getEditorName);
        queryWrapper.selectAll(CompanyDepartment.class);
        queryWrapper.select("t3.realname",CompanyDepartment::getEditorName);
        queryWrapper.select("t2.realname",CompanyDepartment::getHeadName);
        queryWrapper.select("t2.mobile",CompanyDepartment::getHeadPhone);
        queryWrapper.select("t1.name",CompanyDepartment::getParentName);
@@ -58,12 +59,76 @@
        queryWrapper.leftJoin(SystemUser.class,SystemUser::getId,CompanyDepartment::getEditor);
        queryWrapper.eq(CompanyDepartment::getIsdeleted,Constants.ZERO);
        queryWrapper.eq(type!=null,CompanyDepartment::getType,type);
        queryWrapper.orderByAsc(true,"t.sortnum");
        //如果是企业/商户 只查询自身组织下的数据
        if( !Constants.equalsInteger(type,Constants.ZERO)){
            queryWrapper.eq(CompanyDepartment::getCompanyId,loginUserInfo.getCompanyId());
        }else{
            queryWrapper.eq(CompanyDepartment::getType,type);
        }
        queryWrapper.last(" order by  t.sortnum asc  ");
        List<CompanyDepartment> companyList = companyDepartmentMapper.selectJoinList(CompanyDepartment.class,queryWrapper);
        DepartmentTree treeBuild = new DepartmentTree(companyList);
        companyList = treeBuild.buildTree();
        return companyList;
    }
    @Override
    public void updateSort(UpdateSortDTO dto) {
        CompanyDepartment companyDepartment = companyDepartmentMapper.selectById(dto.getId());
        if(Objects.isNull(companyDepartment)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        List<CompanyDepartment> companyDepartmentPool;
        if (companyDepartment.getParentId() == null) {
            companyDepartmentPool = companyDepartmentMapper.selectList(new QueryWrapper<CompanyDepartment>().lambda()
                    .eq(CompanyDepartment::getIsdeleted,Constants.ZERO)
                    .isNull(CompanyDepartment::getParentId)
                    .orderByAsc(CompanyDepartment::getSortnum)
            );
        } else {
            companyDepartmentPool = companyDepartmentMapper.selectList(new QueryWrapper<CompanyDepartment>().lambda()
                    .eq(CompanyDepartment::getIsdeleted,Constants.ZERO)
                    .eq(CompanyDepartment::getParentId,companyDepartment.getParentId())
                    .orderByAsc(CompanyDepartment::getSortnum)
            );
        }
        int currentMenuIndex = 0;
        for (int i = 0; i < companyDepartmentPool.size(); i++) {
            if (companyDepartmentPool.get(i).getId().equals(dto.getId())) {
                currentMenuIndex = i;
                break;
            }
        }
        // 上移
        if ("top".equals(dto.getDirection())) {
            if (currentMenuIndex - 1 < 0) {
                return;
            }
            CompanyDepartment preMenu = companyDepartmentPool.get(currentMenuIndex - 1);
            companyDepartmentPool.remove(currentMenuIndex - 1);
            companyDepartmentPool.add(currentMenuIndex, preMenu);
        }
        // 下移
        else {
            if (currentMenuIndex + 1 > companyDepartmentPool.size() - 1) {
                return;
            }
            CompanyDepartment nextMenu = companyDepartmentPool.remove(currentMenuIndex + 1);
            companyDepartmentPool.add(currentMenuIndex, nextMenu);
        }
        for (int i = 0; i < companyDepartmentPool.size(); i++) {
            companyDepartmentPool.get(i).setSortnum(i);
        }
        for (CompanyDepartment updCompanyDepartment:companyDepartmentPool) {
            companyDepartmentMapper.updateById(updCompanyDepartment);
        }
    }
    @Override
    public Integer create(CompanyDepartment company) {
@@ -71,7 +136,7 @@
        if(StringUtils.isBlank(company.getName())){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        if(company.getType()==null || !(company.getType() ==0 || company.getType() ==1)){
        if(company.getType()==null || !(company.getType() ==0 || company.getType() ==1 || company.getType() ==2)){
            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,组织类型不正确,请按要求填写~");
        }
        int type = Constants.ZERO;//默认平台组织
@@ -247,9 +312,8 @@
        //更新的companyPath
        String newName = model.getNamePath().replace(model.getName(),company.getName());
        companyDepartmentMapper.update(null,new UpdateWrapper<CompanyDepartment>().lambda()
                .setSql("company_name_path=REPLACE(name_path,'"+ model.getNamePath()+"','"+newName+"')")
                .setSql("name_path = REPLACE(name_path,'"+ model.getNamePath()+"','"+newName+"')")
                .likeRight(CompanyDepartment::getIdPath,model.getIdPath()));
    }
@@ -362,4 +426,6 @@
        QueryWrapper<CompanyDepartment> wrapper = new QueryWrapper<>(companyDepartment);
        return companyDepartmentMapper.selectCount(wrapper);
    }
}