DELIMITER $$
USE `jira`$$
DROP FUNCTION IF EXISTS `cal_exception_func`$$
CREATE DEFINER=`jirauser`@`%` FUNCTION `cal_exception_func`(
originalCalTime VARCHAR(255),
actualTime VARCHAR(255),
operator VARCHAR(255),
sprintName VARCHAR(255),
taskStatus VARCHAR(255),
startTime VARCHAR(255),
completedTime VARCHAR(255),
issuetype VARCHAR(255),
bugType VARCHAR(255),
bugEnvir VARCHAR(255),
epicId VARCHAR(255)
) RETURNS TEXT CHARSET utf8 COLLATE utf8_bin
DETERMINISTIC
BEGIN
DECLARE v_exceptionResult TEXT;
DECLARE v_currentDate DATETIME;
SET v_currentDate = NOW();
SET v_exceptionResult = '';
-- 类型是故障才判断
IF issuetype = 10004 THEN
-- 缺少bug类型分类
IF bugType IS NULL THEN
SET v_exceptionResult = CONCAT(v_exceptionResult, '缺少bug类型分类,');
END IF;
-- 缺少bug环境分类
IF bugEnvir IS NULL THEN
SET v_exceptionResult = CONCAT(v_exceptionResult, '缺少bug环境分类,');
END IF;
END IF;
-- 缺少预计开始时间
IF startTime IS NULL OR startTime = '' THEN
SET v_exceptionResult = CONCAT(v_exceptionResult, '缺少预计开始日期,');
ELSE
IF startTime BETWEEN '2023-10-07 00:00:00' AND '2023-10-19 23:59:59' THEN
IF operator IS NULL OR operator= '' THEN
SET v_exceptionResult = CONCAT(v_exceptionResult, '未指派经办人,');
END IF;
END IF;
END IF;
-- 任务未关联冲刺,不是子任务才去判断
IF issuetype != 10003 THEN
IF sprintName IS NULL THEN
SET v_exceptionResult = CONCAT(v_exceptionResult, '未关联冲刺,');
END IF;
END IF;
-- 任务未关联需求
IF issuetype!=10001 AND issuetype!=10003 THEN
IF epicId IS NULL OR epicId ='' THEN
SET v_exceptionResult = CONCAT(v_exceptionResult, '未关联需求,');
END IF;
END IF;
-- 已完成任务未填实际工时
IF (taskStatus = '完成' OR taskStatus = 'Done') AND actualTime = 0 THEN
SET v_exceptionResult = CONCAT(v_exceptionResult, '已完成任务未填实际工时,');
END IF;
-- 没有按照预计时间完成
IF (taskStatus != '完成' AND taskStatus != 'Done') AND completedTime < v_currentDate THEN
SET v_exceptionResult = CONCAT(v_exceptionResult, '没有按时完成,');
END IF;
-- 没有按照预计时间开始
IF startTime < v_currentDate AND taskStatus = '新建' THEN
SET v_exceptionResult = CONCAT(v_exceptionResult, '没有按时开始,');
END IF;
RETURN v_exceptionResult;
END$$
DELIMITER ;
发表评论