用友U8流程审批效率-SQLServer+SSRS

文章目录

    • @[TOC]
    • 1、 需求及效果
      • 1.1 需求
      • 1.2 效果
    • 2、 思路及SQL语句
    • 3、实现折叠明细表
    • 4、结语

1、 需求及效果

1.1 需求

想要查看U8的审批流程,查看流程在哪个节点或人停留的时间,这个单据整个流程走下来需要的时间。可以更加直观方便的查看审批效率

1.2 效果

采用了SSRS上面的明细表折叠,点击+可以进行展开
在这里插入图片描述

2、 思路及SQL语句

1、在U8数据库中审批相关的表有WFAudit和Table_Task。根据这两张表中的内容观察,可以从Table_Task中取待审批的消息,从WFAudit中取其他的内容
2、VoucherType的含义: 01为销售发货单、0301为其他入库单、0302为其他出库单、0304为调拨单、0305为形态转换单、0324为调拨申请单、0412为材料出库单、17为销售订单、24为采购入库单、26为采购到货单、27为请购单、88为采购订单、AP40为应付付款申请单、BO11为物料清单、BO19为委外商物料清单、MO21为生产订单、om01为委外订单、OM26为委外到货单、PU01为供应商资格审批表、pu03为供应商存货调价单、SA19为客户调价单、SR01为服务单、U870_0003为存货申请
3、Action审批动作的意义:0为提交,1为批准,3为转签,5为撤销,6为不同意(可以退回给任何人),7为弃审,8为重新提交,11为会签给谁、12为会签同意、13为会签不同意
4、有MessageId代表的是在提交人节点
5、Table_Task表中creatime和endtime相同为待操作
6、流程状态、制单人、制单时间、当前审批人需要关联以上23种单据类型(通过单据编号进行关联)
7、VoucherCode一样代表是一个完整的审批过程

/*
U8审批效率
VoucherCode是工单
1.VoucherType的含义: 01为销售发货单、0301为其他入库单、0302为其他出库单、0304为调拨单、0305为形态转换单、0324为调拨申请单
0412为材料出库单、17为销售订单、24为采购入库单、26为采购到货单、27为请购单、88为采购订单、AP40为应付付款申请单
BO11为物料清单、BO19为委外商物料清单、MO21为生产订单、om01为委外订单、OM26为委外到货单、PU01为供应商资格审批表
pu03为供应商存货调价单、SA19为客户调价单、SR01为服务单、U870_0003为存货申请
2.Action审批动作0、1、3、5、6、7、8、11、12、13
0为提交,1为批准,3为转签,5为撤销,6为不同意(可以退回给任何人),7为弃审,8为重新提交,11为会签给谁、12为会签同意、13为会签不同意
会签给别人,是需要会签的人同意才能进入下一步,转签和会签有来源和来自哪里
有MessageId代表的是在提交人节点
关联各个单子对应的iverifystateex:-1是终审不同意,0是未提交,1是已提交,2是终审同意(终审同意就是归档)
3.VoucherCode一样代表是一个完整的审批过程,order by时间则为具体的时间
4.table_task中creatime和endtime相同为待操作
5.cMaker制单人.dcreatesytime制单时间,cCurrentAuditor当前审批人
*/SELECT *,
DATEDIFF(MINUTE, MIN(节点操作时间) OVER (PARTITION BY 单据类型, 单据编号),
MAX(节点操作时间) OVER (PARTITION BY 单据类型, 单据编号)) AS 流程总耗时 FROM(
SELECT DISTINCT * FROM(SELECT CASE WHEN VoucherType='01' THEN '销售发货单'WHEN VoucherType='0301' THEN '其他入库单'WHEN VoucherType='0302' THEN '其他出库单'WHEN VoucherType='0304' THEN '调拨单'WHEN VoucherType='0305' THEN '形态转换单'WHEN VoucherType='0324' THEN '调拨申请单'WHEN VoucherType='0412' THEN '材料出库单'WHEN VoucherType='17' THEN '销售订单'WHEN VoucherType='24' THEN '采购入库单'WHEN VoucherType='26' THEN '采购到货单'WHEN VoucherType='27' THEN '请购单'WHEN VoucherType='88' THEN '采购订单'WHEN VoucherType='AP40' THEN '应付付款申请单'WHEN VoucherType='BO11' THEN '物料清单'WHEN VoucherType='BO19' THEN '委外商物料清单'WHEN VoucherType='MO21' THEN '生产订单'WHEN VoucherType='om01' THEN '委外订单'WHEN VoucherType='OM26' THEN '委外到货单'WHEN VoucherType='PU01' THEN '供应商资格审批表'WHEN VoucherType='pu03' THEN '供应商存货调价单'WHEN VoucherType='SA19' THEN '客户调价单'WHEN VoucherType='SR01' THEN '服务单'WHEN VoucherType='U870_0003' THEN '存货申请'END AS 单据类型,Vouchercode AS 单据编号,OperatorName AS 节点操作人,--操作类型--0为提交,1为批准,3为转签,5为撤销,6为不同意(可以退回给任何人),7为弃审,8为重新提交,11为会签给谁、12为会签同意、13为会签不同意CASE WHEN Action='0' THEN '提交'WHEN Action='1' THEN '同意'WHEN Action='3' THEN '转签'WHEN Action='5' THEN '撤销'WHEN Action='6' THEN '不同意'WHEN Action='7' THEN '弃审'WHEN Action='8' THEN '重新提交'WHEN Action='11' THEN '会签'WHEN Action='12' THEN '会签同意'WHEN Action='13' THEN '会签不同意'END AS 操作类型,-- 使用LAG函数获取同一张单子的上一个审批操作时间LAG(OperationDate) OVER (PARTITION BY VoucherType, VoucherCode ORDER BY OperationDate) AS 接收时间,   OperationDate AS 节点操作时间,DATEDIFF(MINUTE, CAST(LAG(OperationDate) OVER (PARTITION BY VoucherType, VoucherCode ORDER BY OperationDate) AS DATETIME), CAST(OperationDate AS DATETIME) ) AS 节点耗时,dbo.CONCAT_ALL_6((CONVERT(NVARCHAR(10),(DATEDIFF(MINUTE, CAST(LAG(OperationDate) OVER (PARTITION BY VoucherType, VoucherCode ORDER BY OperationDate) AS DATETIME), CAST(COALESCE(OperationDate, GETDATE()) AS DATETIME) ))) / 1440), '天',(CONVERT(NVARCHAR(10),((DATEDIFF(MINUTE, CAST(LAG(OperationDate) OVER (PARTITION BY VoucherType, VoucherCode ORDER BY OperationDate) AS DATETIME), CAST(COALESCE(OperationDate, GETDATE()) AS DATETIME) ))) % 1440) / 60),'小时',(CONVERT(NVARCHAR(10),((DATEDIFF(MINUTE, CAST(LAG(OperationDate) OVER (PARTITION BY VoucherType, VoucherCode ORDER BY OperationDate) AS DATETIME), CAST(COALESCE(OperationDate, GETDATE()) AS DATETIME) ))))% 60) ,'分钟') AS 操作时长,CASE WHEN Action<>'0' THEN CASE WHEN DATEDIFF(MINUTE, CAST(LAG(OperationDate) OVER (PARTITION BY VoucherType, VoucherCode ORDER BY OperationDate) AS DATETIME), CAST(OperationDate AS DATETIME) ) BETWEEN 0 AND 1440 THEN '1天之内'  WHEN DATEDIFF(MINUTE, CAST(LAG(OperationDate) OVER (PARTITION BY VoucherType, VoucherCode ORDER BY OperationDate) AS DATETIME), CAST(OperationDate AS DATETIME) ) BETWEEN 1441 AND 4320 THEN '2-3天'  WHEN DATEDIFF(MINUTE, CAST(LAG(OperationDate) OVER (PARTITION BY VoucherType, VoucherCode ORDER BY OperationDate) AS DATETIME), CAST(OperationDate AS DATETIME) ) BETWEEN 4321 AND 10080 THEN '4-7天'  WHEN DATEDIFF(MINUTE, CAST(LAG(OperationDate) OVER (PARTITION BY VoucherType, VoucherCode ORDER BY OperationDate) AS DATETIME), CAST(OperationDate AS DATETIME) ) BETWEEN 10081 AND 20160 THEN '8-14天'  WHEN DATEDIFF(MINUTE, CAST(LAG(OperationDate) OVER (PARTITION BY VoucherType, VoucherCode ORDER BY OperationDate) AS DATETIME), CAST(OperationDate AS DATETIME) ) BETWEEN 20161 AND 43200 THEN '15-30天'  WHEN DATEDIFF(MINUTE, CAST(LAG(OperationDate) OVER (PARTITION BY VoucherType, VoucherCode ORDER BY OperationDate) AS DATETIME), CAST(OperationDate AS DATETIME) ) BETWEEN 43201 AND 86400 THEN '31-60天'  WHEN DATEDIFF(MINUTE, CAST(LAG(OperationDate) OVER (PARTITION BY VoucherType, VoucherCode ORDER BY OperationDate) AS DATETIME), CAST(OperationDate AS DATETIME) ) BETWEEN 86401 AND 129600 THEN '61-90天'  ELSE '90天以上'END END AS 标识,--是否归档,需要关联所有的表--iverifystat:-1是终审不同意,0是未提交,1是已提交,2是终审结束CASE --A为销售发货单WHEN dbo.WFAudit.VoucherType ='01' THEN CASE WHEN A.iverifystate='-1' THEN '终审不同意'WHEN A.iverifystate='0' THEN '未提交'WHEN A.iverifystate='1' THEN '已提交'WHEN A.iverifystate='2' THEN '终审结束'ELSE 'NULL'END --B为其他入库单WHEN dbo.WFAudit.VoucherType='0301' THEN CASE WHEN B.iverifystate='-1' THEN '终审不同意'WHEN B.iverifystate='0' THEN '未提交'WHEN B.iverifystate='1' THEN '已提交'WHEN B.iverifystate='2' THEN '终审结束'ELSE 'NULL'END --C为其他出库单WHEN WFAudit.VoucherType='0302' THEN CASE WHEN C.iverifystate='-1' THEN '终审不同意'WHEN C.iverifystate='0' THEN '未提交'WHEN C.iverifystate='1' THEN '已提交'WHEN C.iverifystate='2' THEN '终审结束'ELSE 'NULL'END --VoucherType=0304关联调拨单TransVouch 作为DWHEN WFAudit.VoucherType='0304' THEN CASE WHEN D.iverifystate='-1' THEN '终审不同意'WHEN D.iverifystate='0' THEN '未提交'WHEN D.iverifystate='1' THEN '已提交'WHEN D.iverifystate='2' THEN '终审结束'ELSE 'NULL'END 		--VoucherType=0305关联形态转换单AssemVouchWHEN dbo.WFAudit.VoucherType='0305' THENCASE WHEN E.iverifystate='-1' THEN '终审不同意'WHEN E.iverifystate='0' THEN '未提交'WHEN E.iverifystate='1' THEN '已提交'WHEN E.iverifystate='2' THEN '终审结束'ELSE 'NULL'END 	--VoucherType=0324关联调拨申请单ST_AppTransVouch WHEN dbo.WFAudit.VoucherType='0324' THEN CASE WHEN F.iverifystate='-1' THEN '终审不同意'WHEN F.iverifystate='0' THEN '未提交'WHEN F.iverifystate='1' THEN '已提交'WHEN F.iverifystate='2' THEN '终审结束'ELSE 'NULL'END 	--VoucherType=0412关联材料出库单rdrecord11 WHEN dbo.WFAudit.VoucherType='0412' THEN CASE WHEN G.iverifystate='-1' THEN '终审不同意'WHEN G.iverifystate='0' THEN '未提交'WHEN G.iverifystate='1' THEN '已提交'WHEN G.iverifystate='2' THEN '终审结束'ELSE 'NULL'END 	--VoucherType=17关联销售订单SO_SOMain WHEN dbo.WFAudit.VoucherType='17' THEN CASE WHEN H.iverifystate='-1' THEN '终审不同意'WHEN H.iverifystate='0' THEN '未提交'WHEN H.iverifystate='1' THEN '已提交'WHEN H.iverifystate='2' THEN '终审结束'ELSE 'NULL'END 	--VoucherType=24关联采购入库单RdRecord01

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/337648.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JDBC初体验(一)

本课目标 理解JDBC的概念和工作原理 掌握JDBC的开发步骤 掌握 Connection 接口的使用 掌握Statement 接口的使用 掌握 ResultSet 接口的使用 一、JDBC 1.JDBC概述 JDBC&#xff08;Java DataBase Connectivity&#xff09;是Java数据库连接技术的简称&#xff0c;提供连…

Python实现PDF—>Excel的自动批量转换(附完整代码)

Python实现PDF—>Excel的自动批量转换&#xff08;附完整代码&#xff09; 话不多说&#xff0c;先看效果&#xff01; 需要转换的PDF&#xff1a; 转换后的Excel&#xff1a; 01、底层原理 PDF 到 Excel 的转换涉及不同文件格式之间的数据提取和重构。底层原理可以简…

手撕单链表(单向,不循环,不带头结点)的基本操作

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

【详解:两数之和三数之和四数之和】

本文讲解两数之和&#xff0c;三数之和和四数之和这三道经典双指针类型题。会在详解题目的同时给出AC代码【这三个题目从前往后是循序渐进的&#xff0c;非常巧妙】 目录 1、查找总价格为目标值的两个商品 2、三数之和 3、力扣18. 四数之和 1、查找总价格为目标值的两个商品…

SCS模型(径流曲线法)概述

目录 1.介绍&#xff1a;2.计算公式&#xff1a;参考文献&#xff1a;小结&#xff1a; 1.介绍&#xff1a; SCS模型&#xff08;径流曲线法&#xff09;是由美国农业部水土保持局(Soil Conservation Service) 基于经验提出&#xff0c;最初用于预测在农业用地小型流域降雨所累…

Django 框架添加管理员,完成对普通用户信息管理

前情回顾&#xff1a;Django框架 完成用户登录注册 文章目录 1.创建管理员2.完善管理员功能2.1增加管理员登录功能2.2完善展示用户信息功能2.3完善修改用户信息功能2.4完善删除用户信息功能 1.创建管理员 一般管理员都是直接指定&#xff0c;不开放页面注册&#xff0c;可以直…

【数据库系统概论】期末复习1

试述数据、数据库、数据库系统、数据库管理系统的概念。试述文件系统与数据库系统的区别和联系。试述数据库系统的特点。数据库管理系统的主要功能有哪些&#xff1f;试述数据库系统三级模式结构&#xff0c;这种结构的优点是什么&#xff1f;什么叫数据与程序的物理独立性&…

2024-01-03 无重叠区间

435. 无重叠区间 思路&#xff1a;和最少数量引爆气球的箭的思路基本都是一致了&#xff01;贪心就是比较左边的值是否大于下一个右边的值 class Solution:def eraseOverlapIntervals(self, points: List[List[int]]) -> int:points.sort(keylambda x: (x[0], x[1]))# 比较…

基于JAVA+SpringBoot的高校学术报告系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 智慧高校学术报告系统…

系统添加深色模式实现方案

业务需求,夜间看系统太刺眼,要求添加夜间模式 效果如下: 依赖如下: 参考了官方解决方案,尝试后没有有效的解决. 官方解决方案 后续打算换框架,发现antdesign pro vue版本的暗黑模式禁用了. ant design pro 预览地址 思路: 引入andesign 暗黑模式的样式 , 手动修改自定义类…

VLAN原理与配置

0x00 前言 本节主要记录VLAN相关的内容。 传统以太网的缺点 广播域越大&#xff0c;产生的网络安全问题&#xff0c;垃圾流量问题越严重。 什么是VLAN&#xff1f; Virtual Local Area NetWork 虚拟局域网技术。 VLAN的特点是什么 一个VLAN就是一个广播域&#xff0c;在…

AWS CodeCommit创建git库

问题 在AWS云国际站上面使用CodeCommit服务创建git代码库。这里假设本地已经安装好git&#xff0c;ssh等工具&#xff0c;并且本地已经创建好相关公私钥文件&#xff0c;熟悉git和ssh通用配置文件&#xff0c;这里不会介绍windows和pc上面的ssh和git配置文件差异&#xff0c;需…