审单人员效率 PPP 模型的目的
审单人员效率 PPP 模型的主要目的是通过系统化的计算和分析,评估审单人员的工作效率,并为管理决策提供数据支持。具体包括以下几个方面:
1. 量化审单人员的工作效率
- 目的: 通过审单数量、工时、折算率等指标,量化审单人员的工作效率。
- 实现方式:
- 计算每个审单人员的审单量(
vol_o
)。 - 根据标准工时表(
t_dash_ppp_checker_std_v
)折算审单数量(vol_c
)。 - 结合有效工作时间和审单数量,计算审单效率(
效率 = 折合单量 / 有效人天
)。
- 计算每个审单人员的审单量(
- 价值: 提供客观的效率评估依据,避免人工评估的主观性。
2. 提供工时管理与优化的依据
- 目的: 通过分析审单人员的工时使用情况,识别工时浪费或效率低下的环节。
- 实现方式:
- 记录每个审单的时间段、工时、中断时间(
time_break
)。 - 计算每个审单的实际工时和标准工时,分析工时的利用率。
- 记录每个审单的时间段、工时、中断时间(
- 价值: 帮助管理者优化审单流程,减少无效工时,提高整体工作效率。
3. 支持绩效评估与激励机制
- 目的: 为审单人员的绩效考核提供数据支持,激励高效工作。
- 实现方式:
- 根据审单效率、折算率、审单数量等指标,计算审单人员的评分(
score
)和排名(rank
)。 - 结合外部提供的用时比例,调整评分权重,确保公平性。
- 根据审单效率、折算率、审单数量等指标,计算审单人员的评分(
- 价值: 激励审单人员提升工作效率,形成良性竞争,推动团队整体绩效提升。
4. 提供管理决策支持
- 目的: 通过效率数据的汇总和分析,帮助管理者制定更科学的业务策略。
- 实现方式:
- 按月、按业务类型、按人员分组,统计审单量、折合单量、效率等数据。
- 分析不同业务类型的审单效率差异,识别瓶颈环节。
- 价值: 为管理者提供数据驱动的决策依据,优化资源配置,提升业务效率。
5. 实现流程标准化与透明化
- 目的: 通过标准化的计算流程,确保效率评估的透明性和一致性。
- 实现方式:
- 定义清晰的计算逻辑,包括工时计算、标准工时折算、效率评估等。
- 使用存储过程(
Procedure
)和视图(View
)自动化计算,减少人工干预。
- 价值: 提高效率评估的准确性,减少争议,增强团队信任。
总结
审单人员效率 PPP 模型的核心目的是通过数据驱动的方式,量化审单人员的工作效率,优化工时管理,支持绩效评估,并为管理者提供科学的决策依据。同时,模型的标准化流程确保了评估的透明性和一致性,帮助团队实现效率提升和流程优化。
模型介绍
- 数据流:
- 原始审单数据(
t_dash_ppp_voucher_2022
) → 工时计算(t_dash_ppp_wl_v_s
) → 标椎工时计算(t_dash_ppp_checker_std_v
) → 效率计算(t_dash_ppp_productivity_v
) → 最终评分(t_dash_ppp_score_final
)。
- 原始审单数据(
- 最终输出:
- 通过
view
整合t_dash_ppp_productivity_v
和t_dash_ppp_employee
表,计算每个人员的审单量、折合单量和效率。
- 通过
1. 数据来源表
t_dash_ppp_voucher_2022
- 用途: 存储审单的原始数据。
- 字段:
用户名
(VARCHAR): 审单人员。凭证号码
(VARCHAR): 审单的凭证编号。录入日期
(DATE): 审单录入的日期。时间
(VARCHAR): 审单结束的时间。TCode
(VARCHAR): 单据类型。全名
(VARCHAR): 审单人员的全名。
2. 中间处理表
t_dash_ppp_wl_v_s
- 用途: 存储审单的详细信息,包括每个审单的时间段、工时等。
- 字段:
ID
: 自增主键。BUSINESS_ID
: 凭证号码 + 全名的组合。TIME_END
: 审单结束时间。TASK_DEF_ID
: 单据类型。BUSINESS_TYPE
: 单据类型的业务分类。EMP
: 审单人员的编号和姓名。- 其他字段: 与工时相关的计算字段(如
time_used
、time_break
等)。
t_dash_ppp_checker_std_v
- 用途: 存储每个审单类型的标椎工时。
- 字段:
ppp_month
: 审单月份。business_type
: 单据业务类型。task_def_id
: 单据类型。time_break
: 是否有时间中断。std_time
: 标准工时。ttl_time
: 总工时。ttl_cnt
: 审单数量。ex_rate
: 折算率。
t_dash_ppp_productivity_v
- 用途: 存储每个审单人员的效率数据。
- 字段:
ppp_type
: 审单类型。ppp_date
: 审单日期。pernr
: 审单人员编号。business_type
: 单据业务类型。ppp_month
: 审单月份。vol_o
: 审单数量。time_used
: 审单工时。vol_b
: 中断的审单数量。vol_c
: 折算后的审单数量。
3. 计算逻辑
3.1 计算每个人员的审单时间
- Procedure:
ppp10
- 功能: 计算每个人员在每个审单上的工时,并更新到
t_dash_ppp_wl_v_s
表中。 - 逻辑:
- 遍历
t_dash_ppp_wl_v_s
表中的数据。 - 计算每个审单的工时(以秒为单位),并判断是否有时间中断(超过 45 分钟的间隔)。
- 更新
time_from
、time_used
、time_break
等字段。
- 遍历
3.2 计算标椎工时
- Procedure:
ppp20
- 功能: 计算每个审单类型的标椎工时,并存儲到
t_dash_ppp_checker_std_v
表中。 - 逻辑:
- 按天分组,计算每个审单类型的平均工时。
- 如果标椎工时大于 0,计算折算率
ex_rate
。
3.3 计算审单效率
- Procedure:
ppp30
- 功能: 计算每个人员的审单效率,并存儲到
t_dash_ppp_productivity_v
表中。 - 逻辑:
- 按天分组,计算每个人员的审单数量(
vol_o
)和审单工时(time_used
)。 - 根据标椎工时表
t_dash_ppp_checker_std_v
,计算折算后的审单数量(vol_c
)。
- 按天分组,计算每个人员的审单数量(
3.4 计算最终效率与评分
- Procedure:
ppp40
- 功能: 根据审单数量和工时,计算每个人员的效率评分。
- 逻辑:
- 根据外部提供的用时比例,计算每个人员的审单数量(
vol_c_per_day
)。 - 根据审单数量和工时,计算评分和排名。
- 根据外部提供的用时比例,计算每个人员的审单数量(
4. 最终输出的 View
字段说明
Field | Type | 说明 |
---|---|---|
组 | varchar(10) | 审单人员的分组(如部门或团队)。 |
人 | varchar(20) | 审单人员的编号和姓名。 |
绩效月 | varchar(6) | 审单的月份(如 202309)。 |
审单量 | decimal(40,5) | 审单数量(vol_o )。 |
折合单量 | decimal(40,5) | 折算后的审单数量(vol_c )。 |
有效人天 | decimal(44,9) | 审单人员的有效工作天数。 |
效率 | decimal(53,9) | 审单效率(vol_c / 有效人天 )。 |
Store-Procedure 说明
**ppp01
的内容说明**
ppp01
是一个存储过程,主要用于将审单的原始数据从 t_dash_ppp_voucher_2022
表中提取并插入到中间处理表 T_DASH_PPP_WL_V_S
中。它是整个审单效率计算流程的第一步,目的是为后续的工时计算、标准工时折算和效率评估提供基础数据。
存储过程的功能
-
数据来源:
- 从
t_dash_ppp_voucher_2022
表中提取审单的原始数据。 - 数据包括审单的用户名、凭证号码、录入日期、时间、单据类型(
TCode
)、全名等信息。
- 从
-
目标表:
- 将处理后的数据插入到
T_DASH_PPP_WL_V_S
表中。 - 目标表存储了审单的详细信息,包括审单的唯一标识(
BUSINESS_ID
)、审单结束时间(TIME_END
)、单据类型(TASK_DEF_ID
)、业务分类(BUSINESS_TYPE
)、审单人员信息(EMP
)等。
- 将处理后的数据插入到
-
数据处理逻辑:
- 将
用户名
和凭证号码
拼接为BUSINESS_ID
。 - 将
录入日期
和时间
拼接为TIME_END
。 - 将
TCode
直接映射为BUSINESS_TYPE
。 - 将
用户名
和全名
拼接为EMP
。
- 将
-
时间范围过滤:
- 只处理录入日期在指定时间范围内的数据(通过输入参数
d0
和d1
控制)。
- 只处理录入日期在指定时间范围内的数据(通过输入参数
存储过程的输入参数
d0
(DATE): 时间范围的起始日期。d1
(DATE): 时间范围的结束日期。
存储过程的实现逻辑
以下是存储过程的主要逻辑分解:
1. 插入数据到目标表
- 使用
INSERT INTO ... SELECT
语句,从t_dash_ppp_voucher_2022
表中提取数据并插入到T_DASH_PPP_WL_V_S
表中。 - 拼接字段生成目标表的字段值:
BUSINESS_ID
: 拼接用户名
和凭证号码
。TIME_END
: 拼接录入日期
和时间
,格式化为YYYY-MM-DD HH:MM:SS
。TASK_DEF_ID
: 直接使用TCode
的值。BUSINESS_TYPE
: 直接使用TCode
的值。EMP
: 拼接PERNR
和全名
。
2. 时间范围过滤
- 只处理录入日期在
d0
和d1
之间的数据。
存储过程的代码
以下是存储过程的关键代码段及其功能说明:
sql
CREATE PROCEDURE `ofssc`.`ppp01`(IN `d0` date, IN `d1` date)
BEGIN
-- 插入数据到 T_DASH_PPP_WL_V_S 表
INSERT INTO T_DASH_PPP_WL_V_S (
BUSINESS_ID,
TIME_END,
TASK_DEF_ID,
BUSINESS_TYPE,
EMP
)
SELECT
CONCAT(V.凭证号码, E.PERNR) AS BUSINESS_ID, -- 拼接凭证号码和员工编号
CONCAT(DATE_FORMAT(V.录入日期, '%y-%m-%d'), ' ', V.时间) AS TIME_END, -- 拼接录入日期和时间
V.TCode AS TASK_DEF_ID, -- 使用 TCode 作为 TASK_DEF_ID
V.TCode AS BUSINESS_TYPE, -- 使用 TCode 作为 BUSINESS_TYPE
CONCAT(E.PERNR, '-', V.全名) AS EMP -- 拼接员工编号和全名
FROM
t_dash_ppp_employee E -- 员工信息表
INNER JOIN
T_DASH_PPP_VOUCHER_2022 V -- 审单原始数据表
ON
E.NACHN = V.全名 -- 根据员工全名进行关联
WHERE
v.录入日期 <= d1 AND v.录入日期 >= d0; -- 过滤时间范围内的数据
END;
存储过程的作用
-
数据预处理:
- 将原始审单数据从
t_dash_ppp_voucher_2022
表中提取并插入到中间表T_DASH_PPP_WL_V_S
中。 - 通过拼接字段生成目标表的字段值,为后续计算提供统一的数据格式。
- 将原始审单数据从
-
时间范围过滤:
- 只处理指定时间范围内的数据,确保数据的时效性和准确性。
-
数据关联:
- 将员工信息表(
t_dash_ppp_employee
)与审单原始数据表(t_dash_ppp_voucher_2022
)通过全名
字段进行关联,补充审单人员的编号信息。
- 将员工信息表(
存储过程的输出结果
执行 ppp01
后,目标表 T_DASH_PPP_WL_V_S
中会新增以下字段的数据:
BUSINESS_ID
: 审单的唯一标识。TIME_END
: 审单结束的完整时间。TASK_DEF_ID
: 审单的单据类型。BUSINESS_TYPE
: 审单的业务分类。EMP
: 审单人员的编号和姓名。
存储过程的意义
- 数据流转的关键节点:
ppp01
是审单效率计算流程的第一步,负责将原始数据转换为中间处理表的标准格式。 - 为后续计算提供基础: 后续的工时计算(
ppp10
)、标准工时折算(ppp20
)和效率评估(ppp30
)都依赖于T_DASH_PPP_WL_V_S
表中的数据。 - 提高数据处理效率: 通过存储过程的自动化执行,减少了人工干预,提高了数据处理的效率和准确性。
总结
ppp01
存储过程的主要功能是从原始审单数据表中提取数据,并将其插入到中间处理表 T_DASH_PPP_WL_V_S
中。通过拼接字段、时间范围过滤和数据关联,为后续的审单效率计算提供了标准化的基础数据。它是整个审单效率计算流程的重要起点。
**ppp20
的内容说明**
ppp20
是一个存储过程,主要用于计算审单的标椎工时(标准工时)和折算率,并将结果存储到目标表 t_dash_ppp_checker_std_v
中。它是审单效率计算流程中的重要步骤,为后续的效率评估提供标椎工时和折算率的依据。
存储过程的功能
-
计算标椎工时:
- 根据每个人员在每个业务类型下的审单数量和总工时,计算标椎工时(
std_time
)。 - 标椎工时是平均每个审单的工时,用于衡量审单效率。
- 根据每个人员在每个业务类型下的审单数量和总工时,计算标椎工时(
-
计算折算率:
- 折算率(
ex_rate
)是实际工时与标椎工时的比值,用于将实际审单数量折算为标准审单数量。
- 折算率(
-
数据分组:
- 按照业务类型(
business_type
)、单据类型(task_def_id
)和时间范围(ppp_month
)进行分组计算。
- 按照业务类型(
-
存储结果:
- 将计算结果存储到目标表
t_dash_ppp_checker_std_v
中,供后续步骤使用。
- 将计算结果存储到目标表
存储过程的输入参数
d0
(DATE): 时间范围的起始日期。d1
(DATE): 时间范围的结束日期。pppmonth
(VARCHAR): 审单月份,用于标识数据的时间范围。
存储过程的实现逻辑
以下是存储过程的主要逻辑分解:
1. 初始化目标表
- 删除目标表
t_dash_ppp_checker_std_v
中与当前ppp_month
相关的旧数据,确保计算结果的准确性。
2. 计算标椎工时和折算率
- 遍历
t_dash_ppp_wl_v_s
表中的数据,按照业务类型、单据类型和时间范围分组。 - 计算每个分组的总工时(
ttl_time
)和审单数量(ttl_cnt
)。 - 计算标椎工时(
std_time
):sql
std_time = ttl_time / ttl_cnt
- 计算折算率(
ex_rate
):- 折算率是标椎工时与实际工时的比值。
- 如果审单中存在时间中断(
time_break = 'Y'
),则不参与折算率的计算。
3. 插入计算结果
- 将计算结果插入到目标表
t_dash_ppp_checker_std_v
中,字段包括:ppp_month
: 审单月份。business_type
: 业务类型。task_def_id
: 单据类型。time_break
: 是否有时间中断。std_time
: 标椎工时。ttl_time
: 总工时。ttl_cnt
: 审单数量。ex_rate
: 折算率。
4. 设置默认折算率
- 如果某些业务类型的折算率为空,则设置默认值(如
3.54778
)。
存储过程的代码
以下是存储过程的关键代码段及其功能说明:
sql
CREATE DEFINER=`root`@`%` PROCEDURE `ofssc`.`ppp20`(IN `d0` date, IN `d1` date, IN `pppmonth` varchar(6))
BEGIN
-- 删除旧数据
DELETE FROM t_dash_ppp_checker_std_v WHERE ppp_month = pppmonth;
-- 插入标椎工时和折算率
INSERT INTO t_dash_ppp_checker_std_v (
ppp_month,
business_type,
task_def_id,
time_break,
std_time,
ttl_time,
ttl_cnt,
ex_rate,
time_from,
time_till
)
SELECT
pppmonth,
business_type,
task_def_id,
time_break,
SUM(w.time_used) / COUNT(1) AS std_time, -- 计算标椎工时
SUM(w.time_used) AS ttl_time, -- 计算总工时
COUNT(1) AS ttl_cnt, -- 计算审单数量
0 AS ex_rate, -- 初始化折算率
d0 AS time_from, -- 时间范围的起始日期
d1 AS time_till -- 时间范围的结束日期
FROM
t_dash_ppp_wl_v_s w
WHERE
w.time_end >= d0 AND w.time_end < CONCAT(d1, ' 23:59:59')
GROUP BY
task_def_id, business_type, time_break;
-- 设置默认折算率
SELECT std_time INTO vstd_time
FROM t_dash_ppp_checker_std_v
WHERE ppp_month = pppmonth
AND business_type = 'YNB0101'
AND task_def_id = 'ND1100'
AND time_break = '';
SET vstd_time = 3.54778; -- 默认值
IF vstd_time > 0 THEN
UPDATE t_dash_ppp_checker_std_v
SET ex_rate = std_time / vstd_time
WHERE ppp_month = pppmonth;
END IF;
END;
存储过程的作用
-
计算标椎工时:
- 通过分组计算每个业务类型和单据类型的平均工时,为后续的效率评估提供依据。
-
计算折算率:
- 折算率是实际工时与标椎工时的比值,用于将实际审单数量折算为标准审单数量。
-
数据存储:
- 将计算结果存储到目标表
t_dash_ppp_checker_std_v
中,供后续步骤使用。
- 将计算结果存储到目标表
-
默认值处理:
- 如果某些业务类型的折算率为空,则设置默认值,确保数据的完整性。
存储过程的输出结果
执行 ppp20
后,目标表 t_dash_ppp_checker_std_v
中会新增以下字段的数据:
ppp_month
: 审单月份。business_type
: 业务类型。task_def_id
: 单据类型。time_break
: 是否有时间中断。std_time
: 标椎工时。ttl_time
: 总工时。ttl_cnt
: 审单数量。ex_rate
: 折算率。time_from
和time_till
: 时间范围的起始和结束日期。
存储过程的意义
- 为效率评估提供依据:
- 标椎工时和折算率是计算审单效率的关键指标,
ppp20
的计算结果直接影响后续的效率评估。
- 标椎工时和折算率是计算审单效率的关键指标,
- 标准化处理:
- 通过标椎工时和折算率的计算,将不同审单人员的实际工时统一为标准工时,便于横向比较。
- 数据驱动决策:
- 为管理者提供数据支持,帮助优化审单流程,提高整体效率。
总结
ppp20
存储过程的主要功能是计算审单的标椎工时和折算率,并将结果存储到目标表 t_dash_ppp_checker_std_v
中。它是审单效率计算流程中的重要步骤,为后续的效率评估提供了标准化的依据,同时确保了数据的完整性和一致性。
**ppp30
的内容说明**
ppp30
是一个存储过程,主要用于计算审单人员的效率。它是审单效率计算流程中的核心步骤之一,基于 t_dash_ppp_wl_v_s
表中的工时数据和 t_dash_ppp_checker_std_v
表中的标椎工时数据,计算每个人员在不同业务类型下的审单效率。
存储过程的功能
-
计算实际审单数量:
- 统计每个人员在每个业务类型下的实际审单数量(
vol_o
)。 - 只统计没有时间中断(
time_break = ''
)的审单。
- 统计每个人员在每个业务类型下的实际审单数量(
-
计算审单工时:
- 统计每个人员在每个业务类型下的总审单工时(
time_used
)。
- 统计每个人员在每个业务类型下的总审单工时(
-
计算折算后的审单数量:
- 基于标椎工时表(
t_dash_ppp_checker_std_v
)中的折算率(ex_rate
),将实际审单数量折算为标准审单数量(vol_c
)。 - 如果审单存在时间中断(
time_break = 'Y'
),则单独统计中断的审单数量(vol_b
),并根据标椎工时进行折算。
- 基于标椎工时表(
-
存储结果:
- 将计算结果存储到目标表
t_dash_ppp_productivity_v
中,供后续的效率评估和排名使用。
- 将计算结果存储到目标表
存储过程的输入参数
v_start_date
(DATE): 时间范围的起始日期。d1
(DATE): 时间范围的结束日期。
存储过程的实现逻辑
以下是存储过程的主要逻辑分解:
1. 初始化目标表
- 删除目标表
t_dash_ppp_productivity_v
中与当前时间范围相关的旧数据,确保计算结果的准确性。
2. 计算实际审单数量和工时
- 使用两个游标分别计算:
- 实际审单数量(
vol_o
):统计每个人员在每个业务类型下的实际审单数量。 - 审单工时(
time_used
):统计每个人员在每个业务类型下的总审单工时。
- 实际审单数量(
3. 计算折算后的审单数量
- 使用第三个游标计算中断的审单数量(
vol_b
)。 - 根据标椎工时表中的折算率(
ex_rate
),将实际审单数量和中断的审单数量折算为标准审单数量(vol_c
)。
4. 更新目标表
- 将计算结果插入或更新到目标表
t_dash_ppp_productivity_v
中,字段包括:ppp_type
: 审单类型(固定为'初审'
)。ppp_date
: 审单日期。pernr
: 审单人员编号。business_type
: 业务类型。ppp_month
: 审单月份。vol_o
: 实际审单数量。time_used
: 审单工时。vol_b
: 中断的审单数量。vol_c
: 折算后的审单数量。
5. 处理特殊情况
- 如果某些业务类型的折算率为空,则设置默认值。
存储过程的代码
以下是存储过程的关键代码段及其功能说明:
sql
CREATE DEFINER=`root`@`%` PROCEDURE `ofssc`.`ppp30`(IN `v_start_date` date, IN `d1` date)
BEGIN
-- 初始化目标表
DELETE FROM t_dash_ppp_productivity_v
WHERE ppp_date >= DATE_FORMAT(v_start_date, '%Y%m%d')
AND ppp_date <= DATE_FORMAT(d1, '%Y%m%d');
-- 定义游标,计算实际审单数量
DECLARE c_vol_o CURSOR FOR
SELECT
'ND1100' AS ppp_type,
DATE_FORMAT(w.time_end, '%Y%m%d') AS ppp_date,
w.emp,
w.business_type,
f_ppp_month(w.time_end) AS pppmonth,
COUNT(1) AS vol_o
FROM
t_dash_ppp_wl_v_s w
JOIN
t_dash_ppp_employee e ON e.pernr = LEFT(w.emp, 8)
WHERE
w.time_end >= v_start_date
AND w.time_end < d1
AND w.task_def_id = 'ND1100'
GROUP BY
DATE_FORMAT(w.time_end, '%Y%m%d'), w.emp, w.business_type, f_ppp_month(w.time_end), w.task_def_id;
-- 定义游标,计算审单工时
DECLARE c_time CURSOR FOR
SELECT
'ND1100' AS ppp_type,
DATE_FORMAT(w.time_end, '%Y%m%d') AS ppp_date,
w.emp,
w.business_type,
f_ppp_month(w.time_end) AS pppmonth,
SUM(w.time_used) AS time_used
FROM
t_dash_ppp_wl_v_s w
JOIN
t_dash_ppp_employee e ON e.pernr = LEFT(w.emp, 8)
WHERE
w.time_end >= v_start_date
AND w.time_end < d1
AND w.task_def_id = 'ND1100'
AND w.time_break <> 'Y'
GROUP BY
DATE_FORMAT(w.time_end, '%Y%m%d'), w.emp, w.business_type, f_ppp_month(w.time_end), w.task_def_id;
-- 定义游标,计算中断的审单数量
DECLARE c_b_time CURSOR FOR
SELECT
'ND1100' AS ppp_type,
DATE_FORMAT(w.time_end, '%Y%m%d') AS ppp_date,
w.emp,
w.business_type,
f_ppp_month(w.time_end) AS pppmonth,
COUNT(1) AS vol_b
FROM
t_dash_ppp_wl_v_s w
JOIN
t_dash_ppp_employee e ON e.pernr = LEFT(w.emp, 8)
WHERE
w.time_end >= v_start_date
AND w.time_end < d1
AND w.task_def_id = 'ND1100'
AND w.time_break = 'Y'
GROUP BY
DATE_FORMAT(w.time_end, '%Y%m%d'), w.emp, w.business_type, f_ppp_month(w.time_end), w.task_def_id;
-- 打开游标并循环处理数据
OPEN c_vol_o;
LOOPC1: LOOP
FETCH c_vol_o INTO v_ppp_type, v_ppp_date, v_pernr, v_business_type, v_ppp_month, v_vol_o;
IF done THEN
LEAVE loopc1;
END IF;
-- 插入或更新实际审单数量
IF EXISTS (SELECT * FROM t_dash_ppp_productivity_v WHERE ...) THEN
UPDATE t_dash_ppp_productivity_v SET vol_o = v_vol_o WHERE ...;
ELSE
INSERT INTO t_dash_ppp_productivity_v (...) VALUES (...);
END IF;
END LOOP;
-- 类似地处理审单工时和中断的审单数量
-- ...
-- 更新折算后的审单数量
UPDATE t_dash_ppp_productivity_v p
JOIN t_dash_ppp_checker_std_v s
ON s.ppp_month = p.ppp_month AND s.business_type = p.business_type AND s.task_def_id = p.ppp_type
SET p.vol_c = s.ex_rate * p.vol_o;
-- 删除无效数据
DELETE FROM t_dash_ppp_productivity_v WHERE time_used IS NULL OR time_used = 0;
END;
存储过程的作用
-
计算实际审单数量:
- 统计每个人员在每个业务类型下的实际审单数量(
vol_o
)。
- 统计每个人员在每个业务类型下的实际审单数量(
-
计算审单工时:
- 统计每个人员在每个业务类型下的总审单工时(
time_used
)。
- 统计每个人员在每个业务类型下的总审单工时(
-
计算折算后的审单数量:
- 基于标椎工时表中的折算率(
ex_rate
),将实际审单数量折算为标准审单数量(vol_c
)。
- 基于标椎工时表中的折算率(
-
存储结果:
- 将计算结果存储到目标表
t_dash_ppp_productivity_v
中,供后续的效率评估和排名使用。
- 将计算结果存储到目标表
存储过程的输出结果
执行 ppp30
后,目标表 t_dash_ppp_productivity_v
中会新增以下字段的数据:
ppp_type
: 审单类型(固定为'初审'
)。ppp_date
: 审单日期。pernr
: 审单人员编号。business_type
: 业务类型。ppp_month
: 审单月份。vol_o
: 实际审单数量。time_used
: 审单工时。vol_b
: 中断的审单数量。vol_c
: 折算后的审单数量。
存储过程的意义
- 为效率评估提供依据:
- 实际审单数量、审单工时和折算后的审单数量是评估审单效率的核心指标。
- 标准化处理:
- 通过折算率将实际审单数量统一为标准审单数量,便于横向比较。
- 数据驱动决策:
- 为管理者提供数据支持,帮助优化审单流程,提高整体效率。
总结
ppp30
存储过程的主要功能是计算审单人员的效率,包括实际审单数量、审单工时和折算后的审单数量,并将结果存储到目标表 t_dash_ppp_productivity_v
中。它是审单效率计算流程中的核心步骤,为后续的效率评估和排名提供了关键数据支持。
**ppp40
的内容说明**
ppp40
是一个存储过程,主要用于计算审单人员的最终效率评分,并将结果存储到目标表 t_dash_ppp_score_final
中。它是审单效率计算流程的最后一个步骤,基于前序步骤(如 ppp20
和 ppp30
)计算的标椎工时、折算率、实际审单数量和折算后审单数量,结合外部提供的用时比例和评分规则,生成最终的效率评分和排名。
存储过程的功能
-
计算最终效率:
- 基于折算后的审单数量(
vol_c
)和实际工时,计算每个人员的最终效率。 - 结合外部提供的用时比例,调整审单数量(如
vol_c_per_day
),用于评分。
- 基于折算后的审单数量(
-
计算评分和排名:
- 根据审单数量和效率,结合评分规则(如
t_dash_ppp_rank_score
表中的评分标准),计算每个人员的评分。 - 根据评分生成排名。
- 根据审单数量和效率,结合评分规则(如
-
存储结果:
- 将每个人员的评分、排名和其他相关数据存储到目标表
t_dash_ppp_score_final
中。
- 将每个人员的评分、排名和其他相关数据存储到目标表
-
处理特殊情况:
- 如果某些业务类型的折算率或评分规则为空,则设置默认值。
- 处理总分计算和排名逻辑。
存储过程的输入参数
v_ppp_month
(VARCHAR): 审单月份,用于标识数据的时间范围。
存储过程的实现逻辑
以下是存储过程的主要逻辑分解:
1. 初始化目标表
- 更新目标表
t_dash_ppp_score_t
中的字段,例如:- 将
ttl_t_weight
(总权重)与外部表v_dash_ppp_nt_weight_ttl
的数据进行关联更新。 - 更新
ttl_a_days
(总分配天数)、days_weigh
(天数权重)等字段。
- 将
2. 计算审单数量和工时
- 使用游标遍历
t_dash_ppp_wl_v_s
和t_dash_ppp_checker_std_v
表中的数据,计算每个人员的审单数量(vol_c_per_day
)和工时。
3. 计算评分
- 根据审单数量(
vol_c_per_day
)和评分规则表(t_dash_ppp_rank_score
),计算每个人员的评分。 - 评分规则可能包括:
- 审单数量的范围。
- 折算率(
ex_rate
)的影响。 - 其他业务类型的权重。
4. 计算排名
- 根据评分生成排名。
- 如果评分相同,则根据其他字段(如审单数量或工时)进行二次排序。
5. 存储结果
- 将每个人员的评分、排名和其他相关数据插入或更新到目标表
t_dash_ppp_score_final
中。
6. 处理总分和排名
- 计算每个人员的总分(
ttl_hc_ck1
),并根据总分生成最终排名。
存储过程的代码
以下是存储过程的关键代码段及其功能说明:
sql
CREATE DEFINER=`root`@`%` PROCEDURE `ofssc`.`ppp40`(IN `v_ppp_month` varchar(6))
BEGIN
-- 初始化目标表
UPDATE t_dash_ppp_score_t a
JOIN v_dash_ppp_nt_weight_ttl s
ON a.ppp_month = s.ppp_month AND a.pernr = s.pernr
SET a.ttl_t_weight = s.ttl_t_weight;
-- 更新审单人员的工作天数和权重
UPDATE t_dash_ppp_score_t a
JOIN v_dash_ppp_total_asign_days s
ON a.ppp_month = s.ppp_month AND a.pernr = s.pernr
SET
a.ttl_a_days = s.ttl_a_days,
a.days_weigh = IFNULL(a.asign_days, 0) / s.ttl_a_days,
a.ppp_weight = IFNULL(a.ttl_t_weight, 0) * IFNULL(a.asign_days, 0) / s.ttl_a_days,
a.weight_score = (IFNULL(a.score, 0) * (IFNULL(a.ttl_t_weight, 0) * IFNULL(a.asign_days, 0) / s.ttl_a_days)) / 100
WHERE s.ttl_a_days > 0 AND s.ppp_month = v_ppp_month;
-- 使用游标计算审单数量
DECLARE c CURSOR FOR
SELECT
pernr,
vol_c_per_day
FROM
t_dash_ppp_score_t
WHERE
ppp_month = v_ppp_month AND ppp_type = '初审' AND vol_c_per_day > 0
ORDER BY
vol_c_per_day;
-- 初始化变量
DECLARE v_ttl_hc_ck1 INT;
DECLARE v_ppp_type VARCHAR(100) DEFAULT '初审';
DECLARE v_delta_rank DECIMAL(18,5);
DECLARE v_pernr VARCHAR(20);
DECLARE v_rank_i INT;
DECLARE v_rank DECIMAL(18,5);
DECLARE v_score DECIMAL(18,5);
DECLARE done INT;
-- 获取总审单数量
SELECT COUNT(1) INTO v_ttl_hc_ck1
FROM t_dash_ppp_score_t
WHERE ppp_month = v_ppp_month AND ppp_type = v_ppp_type AND vol_c_per_day > 0;
-- 设置排名间隔
SET v_delta_rank = (10000000 / v_ttl_hc_ck1) / 100000;
SET v_rank_i = 0;
-- 打开游标并循环处理数据
OPEN c;
LOOPC1: LOOP
FETCH c INTO v_pernr, v_vol_c_per_day;
IF done THEN
LEAVE loopc1;
END IF;
-- 更新排名和评分
SET v_rank_i = v_rank_i + 1;
SET v_rank = v_rank_i * v_delta_rank;
SELECT score INTO v_score
FROM t_dash_ppp_rank_score
WHERE ppp_type = v_ppp_type AND v_vol_c_per_day >= rank_from_ex AND v_vol_c_per_day < rank_to_in;
UPDATE t_dash_ppp_score_t
SET score = v_score, rank = v_rank
WHERE ppp_month = v_ppp_month AND ppp_type = v_ppp_type AND pernr = v_pernr;
END LOOP;
CLOSE c;
-- 更新总分和排名
-- ...
END;
存储过程的作用
-
计算最终效率:
- 基于折算后的审单数量(
vol_c
)和实际工时,计算每个人员的最终效率。
- 基于折算后的审单数量(
-
计算评分和排名:
- 根据审单数量和效率,结合评分规则,计算每个人员的评分。
- 根据评分生成排名。
-
存储结果:
- 将每个人员的评分、排名和其他相关数据存储到目标表
t_dash_ppp_score_final
中。
- 将每个人员的评分、排名和其他相关数据存储到目标表
-
处理特殊情况:
- 如果某些业务类型的折算率或评分规则为空,则设置默认值。
- 处理总分计算和排名逻辑。
存储过程的输出结果
执行 ppp40
后,目标表 t_dash_ppp_score_final
中会新增以下字段的数据:
ppp_type
: 审单类型(如'初审'
)。ppp_month
: 审单月份。pernr
: 审单人员编号。score
: 评分。ppp_weight
: 权重。weight_score
: 权重评分。rank
: 排名。
存储过程的意义
- 为绩效评估提供依据:
- 通过评分和排名,量化审单人员的工作表现。
- 激励机制支持:
- 评分和排名可以作为绩效考核和激励机制的基础。
- 数据驱动决策:
- 为管理者提供数据支持,帮助优化审单流程,提高整体效率。
总结
ppp40
存储过程的主要功能是计算审单人员的最终效率评分,并将结果存储到目标表 t_dash_ppp_score_final
中。它是审单效率计算流程的最后一个步骤,基于前序步骤的标椎工时、折算率和实际审单数量,结合评分规则,生成最终的评分和排名,为绩效评估和激励机制提供数据支持。