forked from gzzfw/backEnd/gz-dyh

liyj
2024-09-04 0271719bce3d6be197eab2e143e478dbf010b8a8
dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtDeptService.java
@@ -3,23 +3,24 @@
import cn.huge.base.common.exception.ServiceException;
import cn.huge.base.common.utils.DateUtils;
import cn.huge.base.common.utils.IdUtils;
import cn.huge.base.common.utils.ReturnFailUtils;
import cn.huge.module.client.api.impl.UtilsClientImpl;
import cn.huge.module.constant.BaseConsts;
import cn.huge.module.ctuser.dao.mapper.CtDeptMapper;
import cn.huge.module.ctuser.domain.po.CtDept;
import cn.huge.module.ctuser.domain.po.CtUser;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -43,6 +44,9 @@
    @Autowired
    private UtilsClientImpl utilsClient;
    @Autowired
    private CtUserService ctUserService;
    /**
    * 更新对象
@@ -115,26 +119,6 @@
    }
    /**
    * 新增或更新对象
    * @param ctDept 实体对象
    */
    public void saveCtDept(CtDept ctDept){
        try{
            Date nowDate = DateUtils.getNowDate();
            // 判断是否新增
            if (IdUtils.checkNewId(ctDept.getId())){
                ctDept.setId(utilsClient.getNewTimeId());
                ctDept.setCreateTime(nowDate);
            }
            ctDept.setUpdateTime(nowDate);
            this.saveOrUpdate(ctDept);
        }catch (Exception e){
            log.error("[CtDeptService.saveCtDept]调用失败,异常信息:"+e, e);
            throw new ServiceException("CtDeptService.saveCtDept", e);
        }
    }
    /**
     * 创建某一级部门下树形结构
     * @param ctDeptList 所有部门集合
     * @param firstId 某一级组织编号
@@ -181,4 +165,60 @@
        }
        childList.add(currentUnit);
    }
    /**
     * 新增或更新对象部门
     * @param ctDept 实体对象
     */
    public void saveCtDept(CtDept ctDept, String userId){
        try{
            // 获取当前登录用户
            CtUser loginCtUser = ctUserService.getById(userId);
            // 保存新增更新组织
            ctDept.setCustId(loginCtUser.getCustId());
            Date nowDate = DateUtils.getNowDate();
            // 判断是否新增
            if (IdUtils.checkNewId(ctDept.getId())){
                ctDept.setId(utilsClient.getNewTimeId());
                ctDept.setCreateTime(nowDate);
                // 新增上级部门
                if (StringUtils.isNotEmpty(ctDept.getDeptId())){
                    // 更新子级部门的父级编号为当前新增部门的编号
                    CtDept childCtDept = mapper.selectById(ctDept.getDeptId());
                    childCtDept.setParentId(ctDept.getId());
                    mapper.updateById(childCtDept);
                }else{
                    // 新增下级部门,如果没有指定上级编号,则默认为根级
                    if (StringUtils.isBlank(ctDept.getParentId())) {
                        ctDept.setParentId(BaseConsts.ROOT);
                    }
                }
            }
            ctDept.setUpdateTime(nowDate);
            ctDept.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
            // 部门下成员
            QueryWrapper<CtUser> ctUserQueryWrapper = new QueryWrapper<>();
            ctUserQueryWrapper.eq("dept_id", ctDept.getId());
            List<CtUser> matchUsers = ctUserService.list(ctUserQueryWrapper);
            for (CtUser ctUser : matchUsers){
                ctUser.setDeptId(null);
                ctUser.setDeptName(null);
                ctUserService.saveOrUpdate(ctUser);
            }
            List<CtUser> ctUsers = ctDept.getMatchUsers();
            for (CtUser ctUser : ctUsers){
                CtUser ctUser1 = ctUserService.getById(ctUser.getId());
                ctUser1.setDeptId(ctDept.getId());
                ctUser1.setDeptName(ctDept.getName());
                ctUserService.saveOrUpdate(ctUser1);
            }
            this.saveOrUpdate(ctDept);
        }catch (Exception e){
            log.error("service方法[CtDeptService.saveCtDept]调用异常:"+e, e);
            throw new ServiceException("CtDeptService.saveCtDept", e);
        }
    }
}