请输入
菜单

根据用户字段自动共享

下载

一、demo脚本

DROP PROCEDURE IF EXISTS `taikai_autoshare_by_userfileds`;
delimiter ||
CREATE  PROCEDURE `taikai_autoshare_by_userfileds`(
)
BEGIN

    -- 删除多余的共享人
    DELETE FROM ld_tabshare 
    WHERE viewuserremark='根据人员字段自动共享'
        AND crmid IN (
            SELECT
                crmid
            FROM (
                SELECT
                    a.ticketid AS crmid,
                    b.cf_5318 AS shareto        -- 内勤人员
                FROM ld_troubletickets a    -- 服务工单
                LEFT JOIN ld_ticketcf b ON b.ticketid=a.ticketid
                WHERE a.deleted=0
                    AND a.approvestatus<>'已拒绝'
                    AND b.cf_5318>0
                UNION
                SELECT
                    a.ticketid AS crmid,
                    b.cf_5317 AS shareto            -- 售后大区负责人
                FROM ld_troubletickets a        -- 服务工单
                LEFT JOIN ld_ticketcf b ON b.ticketid=a.ticketid
                WHERE a.deleted=0
                    AND a.approvestatus<>'已拒绝'
                    AND b.cf_5317>0
                UNION
                SELECT
                    a.ticketid AS crmid,
                    b.cf_5484 AS shareto            -- 指定服务人员
                FROM ld_troubletickets a        -- 服务工单
                LEFT JOIN ld_ticketcf b ON b.ticketid=a.ticketid
                WHERE a.deleted=0
                    AND a.approvestatus<>'已拒绝'
                    AND b.cf_5484>0

                UNION
                SELECT
                    a.customform23id AS crmid,
                    b.cf_5383 AS shareto        -- 内勤人员
                FROM ld_customform23 a        -- 服务费用申请
                LEFT JOIN ld_customform23scf b ON b.customform23id=a.customform23id
                WHERE a.deleted=0
                    AND a.approvestatus<>'已拒绝'
                    AND b.cf_5383>0

                UNION
                SELECT
                    a.customform07id AS crmid,
                    b.cf_5442 AS shareto        -- 指定内勤人员
                FROM ld_customform07 a        -- 服务反馈单
                LEFT JOIN ld_customform07scf b ON b.customform07id=a.customform07id
                WHERE a.deleted=0
                    AND a.approvestatus<>'已拒绝'
                    AND b.cf_5442>0
                UNION
                SELECT
                    a.customform07id AS crmid,
                    b.cf_5444 AS shareto        -- 技术部接收人
                FROM ld_customform07 a        -- 服务反馈单
                LEFT JOIN ld_customform07scf b ON b.customform07id=a.customform07id
                WHERE a.deleted=0
                    AND a.approvestatus<>'已拒绝'
                    AND b.cf_5444>0
                UNION
                SELECT
                    a.customform07id AS crmid,
                    b.cf_5449 AS shareto        -- 如需核价,请指定核价人员
                FROM ld_customform07 a        -- 服务反馈单
                LEFT JOIN ld_customform07scf b ON b.customform07id=a.customform07id
                WHERE a.deleted=0
                    AND a.approvestatus<>'已拒绝'
                    AND b.cf_5449>0
                UNION
                SELECT
                    a.customform07id AS crmid,
                    b.cf_5456 AS shareto        -- 如需排产/合同变更,请通知业务员 
                FROM ld_customform07 a        -- 服务反馈单
                LEFT JOIN ld_customform07scf b ON b.customform07id=a.customform07id
                WHERE a.deleted=0
                    AND a.approvestatus<>'已拒绝'
                    AND b.cf_5456>0
                UNION
                SELECT
                    a.customform07id AS crmid,
                    b.cf_5451 AS shareto        -- 采购部接收人
                FROM ld_customform07 a        -- 服务反馈单
                LEFT JOIN ld_customform07scf b ON b.customform07id=a.customform07id
                WHERE a.deleted=0
                    AND a.approvestatus<>'已拒绝'
                    AND b.cf_5451>0
            ) a
        )
        AND viewuserid NOT IN (
            SELECT
                shareto
            FROM (
                SELECT
                    a.ticketid AS crmid,
                    b.cf_5318 AS shareto        -- 内勤人员
                FROM ld_troubletickets a    -- 服务工单
                LEFT JOIN ld_ticketcf b ON b.ticketid=a.ticketid
                WHERE a.deleted=0
                    AND a.approvestatus<>'已拒绝'
                    AND b.cf_5318>0
                UNION
                SELECT
                    a.ticketid AS crmid,
                    b.cf_5317 AS shareto            -- 售后大区负责人
                FROM ld_troubletickets a        -- 服务工单
                LEFT JOIN ld_ticketcf b ON b.ticketid=a.ticketid
                WHERE a.deleted=0
                    AND a.approvestatus<>'已拒绝'
                    AND b.cf_5317>0
                UNION
                SELECT
                    a.ticketid AS crmid,
                    b.cf_5484 AS shareto            -- 指定服务人员
                FROM ld_troubletickets a        -- 服务工单
                LEFT JOIN ld_ticketcf b ON b.ticketid=a.ticketid
                WHERE a.deleted=0
                    AND a.approvestatus<>'已拒绝'
                    AND b.cf_5484>0

                UNION
                SELECT
                    a.customform23id AS crmid,
                    b.cf_5383 AS shareto        -- 内勤人员
                FROM ld_customform23 a        -- 服务费用申请
                LEFT JOIN ld_customform23scf b ON b.customform23id=a.customform23id
                WHERE a.deleted=0
                    AND a.approvestatus<>'已拒绝'
                    AND b.cf_5383>0

                UNION
                SELECT
                    a.customform07id AS crmid,
                    b.cf_5442 AS shareto        -- 指定内勤人员
                FROM ld_customform07 a        -- 服务反馈单
                LEFT JOIN ld_customform07scf b ON b.customform07id=a.customform07id
                WHERE a.deleted=0
                    AND a.approvestatus<>'已拒绝'
                    AND b.cf_5442>0
                UNION
                SELECT
                    a.customform07id AS crmid,
                    b.cf_5444 AS shareto        -- 技术部接收人
                FROM ld_customform07 a        -- 服务反馈单
                LEFT JOIN ld_customform07scf b ON b.customform07id=a.customform07id
                WHERE a.deleted=0
                    AND a.approvestatus<>'已拒绝'
                    AND b.cf_5444>0
                UNION
                SELECT
                    a.customform07id AS crmid,
                    b.cf_5449 AS shareto        -- 如需核价,请指定核价人员
                FROM ld_customform07 a        -- 服务反馈单
                LEFT JOIN ld_customform07scf b ON b.customform07id=a.customform07id
                WHERE a.deleted=0
                    AND a.approvestatus<>'已拒绝'
                    AND b.cf_5449>0
                UNION
                SELECT
                    a.customform07id AS crmid,
                    b.cf_5456 AS shareto        -- 如需排产/合同变更,请通知业务员 
                FROM ld_customform07 a        -- 服务反馈单
                LEFT JOIN ld_customform07scf b ON b.customform07id=a.customform07id
                WHERE a.deleted=0
                    AND a.approvestatus<>'已拒绝'
                    AND b.cf_5456>0
                UNION
                SELECT
                    a.customform07id AS crmid,
                    b.cf_5451 AS shareto        -- 采购部接收人
                FROM ld_customform07 a        -- 服务反馈单
                LEFT JOIN ld_customform07scf b ON b.customform07id=a.customform07id
                WHERE a.deleted=0
                    AND a.approvestatus<>'已拒绝'
                    AND b.cf_5451>0
            ) a
        );

    -- 自动共享
    INSERT INTO ld_tabshare(crmid,viewuserid,Shareuserid,createdtime,viewuserremark)
    SELECT
        crmid,
        shareto,
        1,
        NOW(),
        '根据人员字段自动共享'
    FROM (
        SELECT
            a.ticketid AS crmid,
            b.cf_5318 AS shareto        -- 内勤人员
        FROM ld_troubletickets a    -- 服务工单
        LEFT JOIN ld_ticketcf b ON b.ticketid=a.ticketid
        WHERE a.deleted=0
            AND a.approvestatus<>'已拒绝'
            AND b.cf_5318>0
            AND NOT EXISTS (SELECT 1 FROM ld_tabshare WHERE crmid=a.ticketid AND viewuserid=b.cf_5318)
        UNION
        SELECT
            a.ticketid AS crmid,
            b.cf_5317 AS shareto            -- 售后大区负责人
        FROM ld_troubletickets a        -- 服务工单
        LEFT JOIN ld_ticketcf b ON b.ticketid=a.ticketid
        WHERE a.deleted=0
            AND a.approvestatus<>'已拒绝'
            AND b.cf_5317>0
            AND NOT EXISTS (SELECT 1 FROM ld_tabshare WHERE crmid=a.ticketid AND viewuserid=b.cf_5317)
        UNION
        SELECT
            a.ticketid AS crmid,
            b.cf_5484 AS shareto            -- 指定服务人员
        FROM ld_troubletickets a        -- 服务工单
        LEFT JOIN ld_ticketcf b ON b.ticketid=a.ticketid
        WHERE a.deleted=0
            AND a.approvestatus<>'已拒绝'
            AND b.cf_5484>0
            AND NOT EXISTS (SELECT 1 FROM ld_tabshare WHERE crmid=a.ticketid AND viewuserid=b.cf_5484)

        UNION
        SELECT
            a.customform23id AS crmid,
            b.cf_5383 AS shareto        -- 内勤人员
        FROM ld_customform23 a        -- 服务费用申请
        LEFT JOIN ld_customform23scf b ON b.customform23id=a.customform23id
        WHERE a.deleted=0
            AND a.approvestatus<>'已拒绝'
            AND b.cf_5383>0
            AND NOT EXISTS (SELECT 1 FROM ld_tabshare WHERE crmid=a.customform23id AND viewuserid=b.cf_5383)

        UNION
        SELECT
            a.customform07id AS crmid,
            b.cf_5442 AS shareto        -- 指定内勤人员
        FROM ld_customform07 a        -- 服务反馈单
        LEFT JOIN ld_customform07scf b ON b.customform07id=a.customform07id
        WHERE a.deleted=0
            AND a.approvestatus<>'已拒绝'
            AND b.cf_5442>0
            AND NOT EXISTS (SELECT 1 FROM ld_tabshare WHERE crmid=a.customform07id AND viewuserid=b.cf_5442)
        UNION
        SELECT
            a.customform07id AS crmid,
            b.cf_5444 AS shareto        -- 技术部接收人
        FROM ld_customform07 a        -- 服务反馈单
        LEFT JOIN ld_customform07scf b ON b.customform07id=a.customform07id
        WHERE a.deleted=0
            AND a.approvestatus<>'已拒绝'
            AND b.cf_5444>0
            AND NOT EXISTS (SELECT 1 FROM ld_tabshare WHERE crmid=a.customform07id AND viewuserid=b.cf_5444)
        UNION
        SELECT
            a.customform07id AS crmid,
            b.cf_5449 AS shareto        -- 如需核价,请指定核价人员
        FROM ld_customform07 a        -- 服务反馈单
        LEFT JOIN ld_customform07scf b ON b.customform07id=a.customform07id
        WHERE a.deleted=0
            AND a.approvestatus<>'已拒绝'
            AND b.cf_5449>0
            AND NOT EXISTS (SELECT 1 FROM ld_tabshare WHERE crmid=a.customform07id AND viewuserid=b.cf_5449)
        UNION
        SELECT
            a.customform07id AS crmid,
            b.cf_5456 AS shareto        -- 如需排产/合同变更,请通知业务员 
        FROM ld_customform07 a        -- 服务反馈单
        LEFT JOIN ld_customform07scf b ON b.customform07id=a.customform07id
        WHERE a.deleted=0
            AND a.approvestatus<>'已拒绝'
            AND b.cf_5456>0
            AND NOT EXISTS (SELECT 1 FROM ld_tabshare WHERE crmid=a.customform07id AND viewuserid=b.cf_5456)
        UNION
        SELECT
            a.customform07id AS crmid,
            b.cf_5451 AS shareto        -- 采购部接收人
        FROM ld_customform07 a        -- 服务反馈单
        LEFT JOIN ld_customform07scf b ON b.customform07id=a.customform07id
        WHERE a.deleted=0
            AND a.approvestatus<>'已拒绝'
            AND b.cf_5451>0
            AND NOT EXISTS (SELECT 1 FROM ld_tabshare WHERE crmid=a.customform07id AND viewuserid=b.cf_5451)
    ) a
    ORDER BY crmid,shareto;


END ||
delimiter;


CALL taikai_autoshare_by_userfileds();


DROP EVENT IF EXISTS `taikai_autoshare_by_userfileds_event`;
CREATE EVENT `taikai_autoshare_by_userfileds_event` ON SCHEDULE EVERY 20 SECOND STARTS '2020-07-31 22:00:00' ON COMPLETION NOT PRESERVE ENABLE DO 
CALL taikai_autoshare_by_userfileds();
delimiter;

根据用户字段自动共享.sql

最近修改: 2025-02-08