用友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 * FROM (
SELECT *,
DATEDIFF(MINUTE, MIN(节点操作时间) OVER (PARTITION BY 单据类型, 单据编号),
MAX(节点操作时间) OVER (PARTITION BY 单据类型, 单据编号)) AS 流程总耗时,CASE WHEN DATEDIFF(MINUTE, MIN(节点操作时间) OVER (PARTITION BY 单据类型, 单据编号),
MAX(节点操作时间) OVER (PARTITION BY 单据类型, 单据编号))  BETWEEN 0 AND 1440 THEN '1天之内'  WHEN DATEDIFF(MINUTE, MIN(节点操作时间) OVER (PARTITION BY 单据类型, 单据编号),
MAX(节点操作时间) OVER (PARTITION BY 单据类型, 单据编号))  BETWEEN 1441 AND 4320 THEN '2-3天'  WHEN DATEDIFF(MINUTE, MIN(节点操作时间) OVER (PARTITION BY 单据类型, 单据编号),
MAX(节点操作时间) OVER (PARTITION BY 单据类型, 单据编号))  BETWEEN 4321 AND 10080 THEN '4-7天'  WHEN DATEDIFF(MINUTE, MIN(节点操作时间) OVER (PARTITION BY 单据类型, 单据编号),
MAX(节点操作时间) OVER (PARTITION BY 单据类型, 单据编号))  BETWEEN 10081 AND 20160 THEN '8-14天'  WHEN DATEDIFF(MINUTE, MIN(节点操作时间) OVER (PARTITION BY 单据类型, 单据编号),
MAX(节点操作时间) OVER (PARTITION BY 单据类型, 单据编号))  BETWEEN 20161 AND 43200 THEN '15-30天'  WHEN DATEDIFF(MINUTE, MIN(节点操作时间) OVER (PARTITION BY 单据类型, 单据编号),
MAX(节点操作时间) OVER (PARTITION BY 单据类型, 单据编号))  BETWEEN 43201 AND 86400 THEN '31-60天'  WHEN DATEDIFF(MINUTE, MIN(节点操作时间) OVER (PARTITION BY 单据类型, 单据编号),
MAX(节点操作时间) OVER (PARTITION BY 单据类型, 单据编号))  BETWEEN 86401 AND 129600 THEN '61-90天'  ELSE '90天以上'END 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

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

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

相关文章

【漏洞复现】大华 DSS 数字监控系统 itcBulletin SQL 注入

漏洞描述 大华 DSS存在SQL注入漏洞,攻击者 pota/services/itcBuletin 路由发送特殊构造的数据包,利用报错注入获取数据库敏感信息。攻击者除了可以利用 SQL注入漏词获取数据库中的信息例如,管理员后台密码、站点的用户人人信息)之外,甚至在高权限的情况可向服务器中写入木…

HNU-数据库系统-作业

数据库系统-作业 计科210X 甘晴void 202108010XXX 第一章作业 10.09 1.(名词解释)试述数据、数据库、数据库管理系统、数据库系统的概念。 数据&#xff0c;是描述事物的符号记录。 数据库&#xff08;DB&#xff09;&#xff0c;是长期存储在计算机内、有组织、可共享的大量…

已签名驱动程序安装后提示“Windows无法验证此设备所需驱动程序数字签名”的原因和解决方法

在Windows 64位系统上&#xff0c;正常开启数字签名认证时&#xff0c;驱动程序软件需要经过微软数字签名的才允许被使用。否则在设备管理器下&#xff0c;安装完硬件驱动后设备上会有“黄色感叹号”标识&#xff0c;右键该设备属性提示&#xff1a;“Windows 无法验证此设备所…

nginx配置 请求静态文件时带上额外的响应头信息

注意&#xff1a;这种方式添加的额外信息会出现在响应头中。 例如在location{}中&#xff0c;try_files之前添加如下信息&#xff1a; add_header X-Extra-Header "Value"; add_header X-Forwarded-For $proxy_add_x_forwarded_for; …

Triumphcore FPGA调测试记录

FPGA采用Xilinx pynq Z2开发板。基于V2.5版本开发 OverView uart端口映射 BUG调试记录 2024.1.7 复位状态导致取指时序错误 错误波形&#xff1a; 正确波形 问题代码&#xff1a; 2024.1.9 clock_wizard设置输入时钟是输出时钟的2^n倍&#xff0c;输出时钟的占空比才…

算法训练营第四十二天|动态规划:01背包理论基础 416. 分割等和子集

目录 动态规划&#xff1a;01背包理论基础416. 分割等和子集 动态规划&#xff1a;01背包理论基础 文章链接&#xff1a;代码随想录 题目链接&#xff1a;卡码网&#xff1a;46. 携带研究材料 01背包问题 二维数组解法&#xff1a; #include <bits/stdc.h> using namesp…

jsonvue-mobile 联动方式说明。

目录 jsonvue-mobile的联动类型分为两种 一种是命令式的&#xff1a; 另一种是响应式的&#xff1a; 联动场景 场景一&#xff1a;某一个字段的值变化时&#xff0c;同步修改另一个字段的值 命令式&#xff1a; 响应式&#xff1a; 场景一演示效果GIF 场景二&#xff1…

【模块系列】STM32TCS3472

前言 手上正好有TCS3472模块&#xff0c;也正好想在加深一下自己对I2C协议的理解和应用&#xff0c;所以就写了这个代码库出来。参考的资料主要来源于TCS3472的数据手册&#xff0c;和arduino中MH_TCS3472库的宏定义&#xff0c;和函数名称&#xff0c;我就没有重新命名&#x…

华为数通HCIA题库(750题)

完整题库在这里&#xff1a;华为数通HCIA-RS题库注释版-加水印.pdf资源-CSDN文库 此处只节选几题。 1.网络管理员在网络中捕获到了一个数据帧&#xff0c;其目的MAC地址是01-00-5E-AO-B1-C3。关于该MAC地址的说法正确的是&#xff08; )。 A.它是一个单播MAC地址 B.它是一个广播…

详解ajax、fetch、axios的区别

众所周知它们都用来发送请求&#xff0c;其实它们区别还蛮大的。这也是面试中的高频题&#xff0c;本文将详细进行讲解。 1. ajax 英译过来是Aysnchronous JavaScript And XML&#xff0c;直译是异步JS和XML&#xff08;XML类似HTML&#xff0c;但是设计宗旨就为了传输数据&a…

从JDK源码级别剖析JVM类加载器

欢迎大家关注我的微信公众号&#xff1a; 类加载运行全过程 当我们用java命令运行某个类的main函数启动程序时&#xff0c;首先需要通过类加载器把主类加载到JVM。 package com.tuling.jvm;public class Math {public static final int initData 666;public static User u…

多维时序 | Matlab实现RIME-HKELM霜冰算法优化混合核极限学习机多变量时间序列预测

多维时序 | Matlab实现RIME-HKELM霜冰算法优化混合核极限学习机多变量时间序列预测 目录 多维时序 | Matlab实现RIME-HKELM霜冰算法优化混合核极限学习机多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现RIME-HKELM霜冰算法优化混合核极限学…

Git命令(bash)

来由 本地版本控制 集中版本控制 分布版本控制 每个人都有全部代码&#xff0c;安全性有待考究 对比 常用命令 配置 查看配置 (全部) git config -l (系统) git config --system --list (本地&#xff0c;也就是用户自己配置的) git config --global --list 配置自己的na…

使用CLIP和LLM构建多模态RAG系统

在本文中我们将探讨使用开源大型语言多模态模型(Large Language Multi-Modal)构建检索增强生成(RAG)系统。本文的重点是在不依赖LangChain或LLlama index的情况下实现这一目标&#xff0c;这样可以避免更多的框架依赖。 什么是RAG 在人工智能领域&#xff0c;检索增强生成(re…

Provide/Inject 依赖注入(未完待续)

父组件传递给子组件数据&#xff0c;通过props&#xff0c;但是需要逐层传递 provide/Inject 的推出就是为了解决这个问题&#xff0c;它提供了一种组件之间共享此类值的方式,不必通过组件树每层级显示地传递props 目的是为了共享那些被 认为对于一个组件树而言是全局的数据 p…

Ubuntu 22.04.3 LTS arm64 aarch64 ISO jammy-desktop-arm64.iso 下载

Ubuntu 22.04.3 LTS (Jammy Jellyfish) Daily Build 参考 Are there official Ubuntu ARM / aarch64 desktop images? - Ask Ubuntu

浅谈有源滤波装置应用在水处理行业配电系统中

摘要&#xff1a;水处理行业供配电系统涉及曝气风机、提升泵、污泥脱水设备等负载设备&#xff0c;导致异步电机产生更多无功功率和大量谐波&#xff0c;降低系统功率因数&#xff0c;对配电系统和负载造成很大危害。因此&#xff0c;水处理行业需要更加重视电能质量&#xff0…

解码数据:数据可视化的魔力在于快速概括

在信息爆炸的时代&#xff0c;我们每天都面临着海量的数据&#xff0c;无论是个人生活中的各种记录&#xff0c;还是工作中的业务数据&#xff0c;都充斥着我们的日常。如何从这些数据中快速实现归纳总结&#xff0c;理清思路&#xff0c;找出关键信息&#xff1f;数据可视化应…

记录浏览器莫名其妙部分网页无法访问的一个解决办法

问题描述&#xff1a; 不知道什么原因&#xff0c;浏览器无法访问CSDN了&#xff0c;访问其他网站都可以正常加载。 经电脑网络诊断检测&#xff0c;反馈内容大致为&#xff1a; 资源处于联机状态但未对连接尝试做出响应&#xff0c;远程计算机不接受端口443上的连接。 测试…

CNAS中兴新支点——软件测试报告如何编写,出检测报告第三方实验室推荐

进行软件测试工作&#xff0c;编写一份软件测试报告对于测试人员来说必不可少。虽然编写软件测试报告是软件测试人员的工作&#xff0c;但是项目的开发人员比如程序员、软件使用单位对软件测试报告的组成部分有一定的了解也是十分有必要的&#xff0c;软件测试报告比较容易理解…