祖籍列表id拼接


CREATE DEFINER=`root`@`%` FUNCTION `sys_organization_getAncestors`(deptId varchar(36)) RETURNS varchar(1000) CHARSET utf8
    DETERMINISTIC
BEGIN
    DECLARE parentDeptId varchar(36) default '';  -- 父部门id
    declare parentDeptName varchar(100) default ''; -- 父部门名称
    declare currentDeptName varchar(100) default ''; -- 当前部门名称
    declare retStr varchar(1000) default '';    --  返回字符串(部门1/部门1的子部门1/部门1的子部门2)
		declare deptName varchar(2000) default '';

		## 获取当前部门名称
    if deptId is not null and length(deptId) > 0 then
        set currentDeptName = (select ifnull(ancestors, '') from sys_organization where uuid = deptId);
    else
        return retStr;
    end if;

    WHILE deptId is not null and deptId <> '1'
        do
            SET parentDeptId = (SELECT parent_id FROM sys_organization WHERE uuid = deptId);
            IF parentDeptId is not null and parentDeptId <> '1'   THEN
                set parentDeptName = (select ancestors from sys_organization td where td.uuid = parentDeptId);

                if parentDeptName is not null then
                    set deptName = concat(parentDeptName,'/', deptName);
                end if;

                SET deptId = parentDeptId;
            ELSE
                SET deptId = parentDeptId;
            END IF;
        END WHILE;

    -- 将当前部门名称 拼接到最后
    set retStr = concat(deptName,currentDeptName);
    return retStr;
END
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值