一、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>0UNION
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>0UNION
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>0UNION
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>0UNION
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;