第二弹:泛微OA常用一些查询SQL分享来啦,文末有彩蛋

admin 2025年4月8日15:46:58评论3 views字数 4189阅读13分57秒阅读模式

点击蓝字 关注我们

第二弹:泛微OA常用一些查询SQL分享来啦,文末有彩蛋

重点

最近创建了一个关于 泛微OA圈,希望能够帮助大家,有困难一起解决,有钱一起赚!如果大家想加入的话,可以加文末微信。

第二弹:泛微OA常用一些查询SQL分享来啦,文末有彩蛋

前言

本文中的SQL来源于泛微知识共享库里面的常用SQL,希望以下SQL可以在日常OA系统的运维或者使用过程中可以给大家带来方便。

第二弹:泛微OA常用一些查询SQL分享来啦,文末有彩蛋

流程常用数据库表

第二弹:泛微OA常用一些查询SQL分享来啦,文末有彩蛋

workflow_base:工作流基本信息表

workflow_nodegroup:工作流节点操作者组信息表
workflow_nodelink:工作流节点出口信息表
workflow_groupdetail:节点操作者组操作者类型信息表
workflow_type:工作流种类表

01

查询流程审批人中离职人员

SELECT DISTINCT A.WORKFLOWNAME,C.NODENAME,G.LASTNAME,G.STATUS,G.WORKCODE,G.IDFROM workflow_base AS A INNER JOIN workflow_flownode AS B ON B.WORKFLOWID = A.IDINNER JOIN workflow_nodebase AS C ON B.NODEID=C.ID INNER JOIN workflow_nodegroup AS D ON C.ID=D.NODEID INNER JOIN workflow_groupdetail AS E ON D.ID=E.GROUPID INNER JOIN workflow_hrmoperator AS F ON E.GROUPID=F.GROUPID INNER JOIN hrmresource AS G ON F.OBJID=G.ID WHERE G.STATUS='5' ORDER BY A.WORKFLOWNAME

02

查询流程审批节点的审批条件

SELECT  E.TYPENAME AS 流程类型,  A.ID 流程ID,  A.WORKFLOWNAME AS 流程名称,  B.GROUPNAME AS 流程节点,  C.CONDITIONCN AS 出口条件,  D.CONDITIONCN AS 批次条件FROM  WORKFLOW_BASE A,  WORKFLOW_NODEGROUP B,  WORKFLOW_NODELINK C,  WORKFLOW_GROUPDETAIL D,  WORKFLOW_TYPE EWHERE A.ID=C.WORKFLOWID  AND C.NODEID=B.NODEID  AND D.GROUPID=B.ID  AND A.WORKFLOWTYPE=E.ID  AND (C.CONDITIONCN IS NOT NULL   OR D.CONDITIONCN IS NOT NULL )
第二弹:泛微OA常用一些查询SQL分享来啦,文末有彩蛋

03

查询部门的部门层级以及所有上级部门

创建视图,view_bmcjpath

视图定义如下:

WITH RECURSIVE department_tree (id, DEPARTMENTMARK, supdepid, depth, path) AS (      -- 初始化查询(非递归部分)      SELECT             id,             DEPARTMENTMARK,             supdepid,            1 AS depth,            CAST(id AS CHAR(200)) AS path        FROM hrmdepartment        WHERE canceled IS NULL OR canceled <> 1      UNION ALL      -- 递归查询部分      SELECT             D.id,            D.DEPARTMENTMARK,             D.supdepid,            dt.depth + 1 AS depth,             CONCAT(dt.path, ',', D.id) AS path        FROM hrmdepartment D         JOIN department_tree dt ON D.supdepid = dt.id        WHERE D.canceled IS NULL OR D.canceled <> 1  ),  ranked_departments AS (      SELECT             *,            ROW_NUMBER() OVER (PARTITION BY id ORDER BY depth DESC) AS rn        FROM department_tree    )  -- 选择每个id对应depth最大的记录,并应用字段选择逻辑  SELECT         id,          DEPARTMENTMARK,          supdepid,  depth,  path,    SUBSTRING_INDEX(SUBSTRING_INDEX(path, ',', 1), ',', -1) AS field1,          IF(LENGTH(path) - LENGTH(REPLACE(path, ',', '')) >= 1, SUBSTRING_INDEX(SUBSTRING_INDEX(path, ',', 2), ',', -1), NULL) AS field2,        IF(LENGTH(path) - LENGTH(REPLACE(path, ',', '')) >= 2, SUBSTRING_INDEX(SUBSTRING_INDEX(path, ',', 3), ',', -1), NULL) AS field3,        IF(LENGTH(path) - LENGTH(REPLACE(path, ',', '')) >= 3, SUBSTRING_INDEX(SUBSTRING_INDEX(path, ',', 4), ',', -1), NULL) AS field4,        IF(LENGTH(path) - LENGTH(REPLACE(path, ',', '')) >= 4, SUBSTRING_INDEX(SUBSTRING_INDEX(path, ',', 5), ',', -1), NULL) AS field5,        IF(LENGTH(path) - LENGTH(REPLACE(path, ',', '')) >= 5, SUBSTRING_INDEX(SUBSTRING_INDEX(path, ',', 6), ',', -1), NULL) AS field6    FROM ranked_departments    WHERE rn = 1  

上述视图中:

field1:一级部门

field2:二级部门

field3:三级部门

field4:四级部门

field5:五级部门

field6:六级部门

查询效果:

第二弹:泛微OA常用一些查询SQL分享来啦,文末有彩蛋
第二弹:泛微OA常用一些查询SQL分享来啦,文末有彩蛋
第二弹:泛微OA常用一些查询SQL分享来啦,文末有彩蛋
第二弹:泛微OA常用一些查询SQL分享来啦,文末有彩蛋

04

批量更新修复人员的各级部门与实际部门不一致的问题

-- 查询不匹配的人员 SELECT H.id, H.LASTNAME, H.DEPARTMENTIDFROM cus_fielddata c  INNER JOIN hrmresource H ON H.id = c.idLEFT JOIN view_bmcjpath v ON H.departmentid = v.id WHERE H.STATUS < 5  AND c.scopeid = -1  AND (    (c.field26 IS NOT NULL AND c.field26 <> v.field1) OR    (c.field26 IS NULL AND v.field1 IS NOT NULL) OR    (c.field27 IS NOT NULL AND c.field27 <> v.field2) OR    (c.field27 IS NULL AND v.field2 IS NOT NULL) OR    (c.field28 IS NOT NULL AND c.field28 <> v.field3) OR    (c.field28 IS NULL AND v.field3 IS NOT NULL) OR    (c.field31 IS NOT NULL AND c.field31 <> v.field4) OR    (c.field31 IS NULL AND v.field4 IS NOT NULL) OR    (c.field32 IS NOT NULL AND c.field32 <> v.field5) OR    (c.field32 IS NULL AND v.field5 IS NOT NULL) OR    (c.field33 IS NOT NULL AND c.field33 <> v.field6) OR    (c.field33 IS NULL AND v.field6 IS NOT NULL)  )-- 更新各级部门不匹配的人员UPDATE cus_fielddata c  INNER JOIN hrmresource a ON a.id = c.id  LEFT JOIN view_bmcjpath v ON a.departmentid = v.id  SET      c.field26 = v.field1,      c.field27 = v.field2,      c.field28 = v.field3,      c.field31 = v.field4,      c.field32 = v.field5,      c.field33 = v.field6  WHERE      c.scopeid = -1      AND a.STATUS < 5      AND (        (c.field26 IS NOT NULL AND c.field26 <> v.field1) OR      (c.field26 IS NULL AND v.field1 IS NOT NULL) OR      (c.field27 IS NOT NULL AND c.field27 <> v.field2) OR      (c.field27 IS NULL AND v.field2 IS NOT NULL) OR      (c.field28 IS NOT NULL AND c.field28 <> v.field3) OR      (c.field28 IS NULL AND v.field3 IS NOT NULL) OR      (c.field31 IS NOT NULL AND c.field31 <> v.field4) OR      (c.field31 IS NULL AND v.field4 IS NOT NULL) OR      (c.field32 IS NOT NULL AND c.field32 <> v.field5) OR      (c.field32 IS NULL AND v.field5 IS NOT NULL) OR      (c.field33 IS NOT NULL AND c.field33 <> v.field6) OR      (c.field33 IS NULL AND v.field6 IS NOT NULL)    )
第二弹:泛微OA常用一些查询SQL分享来啦,文末有彩蛋
第二弹:泛微OA常用一些查询SQL分享来啦,文末有彩蛋

微信号 | Helper-OA

第二弹:泛微OA常用一些查询SQL分享来啦,文末有彩蛋

原文始发于微信公众号(OA大助手):第二弹:泛微OA常用一些查询SQL分享来啦,文末有彩蛋

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月8日15:46:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   第二弹:泛微OA常用一些查询SQL分享来啦,文末有彩蛋https://cn-sec.com/archives/3930027.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息