当前位置: 首页 > news >正文

通达OA-通用版-V12,流程及表单自定义好用的类

通达OA-通用版-V12,流程及表单自定义好用的类

  • V1.0

V1.0

日期:2023年10月19日
新建类文件,将下面代码复制到文件中即可。
功能说明:
1、根据flow_id,可以获取流程表单相关的表名、及字段名。
2、根据run_id,可以获取流程表单相关的的表名、字段名、及流程表单中用户数据。

<?php
/*** 日期:2023年10月19日* 说明:整合定制开发过程中常用的功能* 版本:V1.0* 适用版本:通用版V12/PHP 7.2.34* 依赖:OA系统数据库连接。include_once 'inc/auth.inc.php';或include_once 'inc/conn.php';*/
<?php
/*** 日期:2023年10月19日* 说明:整合定制开发过程中常用的功能* 版本:V1.0* 适用版本:通用版V12/PHP 7.2.34* 依赖:OA系统数据库连接。include_once 'inc/auth.inc.php';或include_once 'inc/conn.php';*/
class zztdBpmClass{//具体流程的表名前缀var $tbNamePre='bpm_data_';var $mainAndList=array();var $flow_id=0;var $run_id=0;/*** * 参数说明* $mainAndList=array(//此参数必须。*  'main',//表示当前表单,固定的,必须的*  '列表控件名称1',*  '列表控件名称2'* )* $run_id,查询流程表单的具体数据,则此参数必须。* $flow_id,查询流程数据表名称及表中的字段。传入$run_id时,可不填此参数*/function __construct(){//$mainAndList,$run_id=0,$flow_id=0$args=func_get_args();$argsnum=func_num_args();switch ($argsnum) {case 1:$this->mainAndList=$args[0];break;case 2:$this->mainAndList=$args[0];$this->run_id=$args[1];$data=$this->getBpmRun();$this->flow_id=$data['FLOW_ID'];break;case 3:$this->mainAndList=$args[0];$this->run_id=$args[1];$this->flow_id=$args[2];break;default:break;}}/*** getBpmRun* 说明:根据流水号run_id,获取流程的信息* @return array 一维数组*/public function getBpmRun(){$data=array();$sql=sprintf('select * from bpm_run where RUN_ID=%d',$this->run_id);$res=exequery(TD::conn(),$sql);$data=mysqli_fetch_assoc($res);return $data;}/***getSortAndDesc* @return array('main'=>'表单名称','detail_828'=>'列表控件名称') */public function getSortAndDesc(){$data=array();$sql=sprintf('select * from bpm_variable_sort where FLOW_ID=%d',$this->flow_id);$res=exequery(TD::conn(),$sql);while ($row=mysqli_fetch_assoc($res)) {if($row['TYPE']=='main'){$type='main';}else{$type=$row['TYPE'].'_'.$row['ID'];}$data[$type]=$row['DESC'];}return $data;}/*** getBpmTableAndColumn* 说明:根据流程flow_id,获取流程的表名及字段名、列表控件的表名及字段名* @return array(0=>array(//main的键值'desc'=>'表单名称','tableNameArr'=>array('bpm_data_537','bpm_data_537_child'//如果表单中有多行文本框时,则有子表),'tableColumArr'=>array('data_m18951'=>'申请日期','data_m18954'=>'报销人')),1=>array(//列表控件名称1键值'desc'=>'列表控件名称','tableNameArr'=>array('bpm_data_537_list_828',//如果存在列表控件'bpm_data_537_list_828_child'//如果列表控件中有多行文本框时,则有子表),'tableColumArr'=>array('data_m18984'=>'派车单号','data_m18985'=>'报告编号')),2=>array(//列表控件名称2键值'desc'=>'列表控件名称','tableNameArr'=>array('bpm_data_537_list_829',//如果存在列表控件'bpm_data_537_list_829_child'//如果列表控件中有多行文本框时,则有子表),'tableColumArr'=>array('data_m19004'=>'派车单号','data_m19005'=>'报告编号')))*/public function getBpmTableAndColumn(){//表名前缀$tbPre=$this->tbNamePre.$this->flow_id;//返回数据$data=array();$sql=sprintf('select * from bpm_variable_sort where FLOW_ID=%d',$this->flow_id);$res=exequery(TD::conn(),$sql);while ($row=mysqli_fetch_assoc($res)) {$tableName='';$tableNameArr=array();$tableColumArr=array();if($row['TYPE']=='main'){$type=array_search('main',$this->mainAndList);$tableName=$tbPre;}else{$type=array_search($row['DESC'],$this->mainAndList);$tableName=$tbPre.'_list_'.$row['ID'];}if($type===false){continue;}array_push($tableNameArr,$tableName);$sql2=sprintf('select * from bpm_variable where SORT_ID =%d',$row['ID']);    $res2=exequery(TD::conn(),$sql2);$i=0;while ($row2=mysqli_fetch_assoc($res2)) {$tableColumArr[$row2['NAME']]=$row2['DESC'];if($i===0&&$row2['TYPE']=='text'){ //如果有一个控件类型为text,则存在xx_child子表$tableName=$tableName.'_child';array_push($tableNameArr,$tableName);$i++;}}asort($tableNameArr);//确保子表_child在主表后面ksort($tableColumArr);//字段名升序。$data[$type]=array('desc'=>$row['DESC'],'table'=>$tableNameArr,'cols'=>$tableColumArr);}ksort($data);return $data;}/*** 根据run_id,获取当前流程的表单数据* @return array(0=>array(//main的键值'desc'=>'表单名称','tableNameArr'=>array('bpm_data_537','bpm_data_537_child'//如果表单中有多行文本框时,则有子表),'tableColumArr'=>array('data_m18951'=>'申请日期','data_m18954'=>'报销人'),'data'=>array(0=>array('data_m18951'=>'2023年10月19日','data_m18954'=>'张三'))),1=>array(//列表控件名称1键值'desc'=>'列表控件名称','tableNameArr'=>array('bpm_data_537_list_828',//如果存在列表控件'bpm_data_537_list_828_child'//如果列表控件中有多行文本框时,则有子表),'tableColumArr'=>array('data_m18984'=>'派车单号','data_m18985'=>'报告编号'),'data'=>array(0=>array('data_m18984'=>'PCDBH-001','data_m18985'=>'BGBH-001'))),2=>array(//列表控件名称2键值'desc'=>'列表控件名称','tableNameArr'=>array('bpm_data_537_list_829',//如果存在列表控件'bpm_data_537_list_829_child'//如果列表控件中有多行文本框时,则有子表),'tableColumArr'=>array('data_m19004'=>'姓名','data_m19005'=>'开始日期'),'data'=>array(0=>array('data_m19004'=>'李四','data_m19005'=>'2023年10月19日'))))* */public function getBpmData(){$data=$this->getBpmTableAndColumn();$tbArr=array();foreach($data as $k=>$v){$tbArr=$v['table'];$tmp_data=array();//查询数据$cTbArr=count($tbArr);if($cTbArr==1){$sql=sprintf('select * from %s where run_id=%d',$tbArr[0],$this->run_id);}else if($cTbArr==2){$sql=sprintf('select * from %s as a join %s as b on a.id=b.id where a.run_id=%d',$tbArr[0],$tbArr[1],$this->run_id);}$res=exequery(TD::conn(),$sql);while ($rows=mysqli_fetch_assoc($res)) {foreach($rows as $k2=>$v2){if($v2===null){//重置值为null的空字符串$rows[$k2]='';}}$tmp_data[]=$rows;}$data[$k]['data']=$tmp_data;}return $data;}}

调用示例

<?php
require_once 'inc/auth.inc.php';
require_once 'zztdBpmClass.php';
echo '<pre>';
$run_id=196444;
//$data=$zztdBpmClass->getBpmTableAndColumn();
$arr=array('main','公车出行费用明细','自行出行费用明细'
);
$zztdBpmClass=new zztdBpmClass($arr,$run_id);
$data=$zztdBpmClass->getBpmData();
var_dump($data);

相关文章:

通达OA-通用版-V12,流程及表单自定义好用的类

通达OA-通用版-V12&#xff0c;流程及表单自定义好用的类 V1.0 V1.0 日期&#xff1a;2023年10月19日 新建类文件&#xff0c;将下面代码复制到文件中即可。 功能说明&#xff1a; 1、根据flow_id&#xff0c;可以获取流程表单相关的表名、及字段名。 2、根据run_id&#xff0…...

如何在vue中实现图片懒加载

1.什么是图片懒加载 概念当图片还未出现在浏览器的可视区&#xff0c;图片并不加载src所引入的图片资源。只有当图片出现在可视区时&#xff0c;才加载图片资源。 好处&#xff1a;当页面中需要许多图片进行展示。但是&#xff0c;在我们不可视区的图片我们可以进行图片懒加载…...

Mac 远程桌面软件

对于使用 Mac 计算机和笔记本电脑的企业来说&#xff0c;适用于 Mac 的远程桌面软件变得越来越重要&#xff0c;随着远程工作变得越来越普遍&#xff0c;IT 管理员和组织需要一种安全的方式来访问和修复问题、处理紧急任务以及监控远程工作站的状态&#xff0c;为了促进远距离协…...

EPLAN_005#宏边框、页宏、窗口宏/符号宏

一、宏边框 红边框不能用&#xff0c;变成了灰色 要在项目属性中更改位宏项目——才能使用宏边框功能 注意&#xff1a;创建宏边框时候要打开——显示隐藏元素 框选目标后&#xff0c;双击红边框的边——弹出红边框创建属性对话框——输入名称——更改变量ABC等 最后——自动…...

如何正确地使用ChatGPT(角色扮演+提示工程)

如何正确地使用ChatGPT 一、ChatGPT介绍二、准备工作2.1 获取ChatGPT环境2.2 确定使用ChatGPT的目标和需求 三、重要因素3.1 角色赋予3.2 提示工程 四、正确案例 一、ChatGPT介绍 可以查阅ChatGPT快速入门 二、准备工作 2.1 获取ChatGPT环境 国外的有OpenAI和微软NewBing等…...

MySQL服务安装与登录

&#xff08;1&#xff09;以管理员身份启动命令提示符&#xff1a; &#xff08;2&#xff09;定位到安装目录的bin目录下&#xff08;根据自己的安装路径进行调整即可&#xff09;。先输入“d:”&#xff0c;定位到d盘&#xff0c;输入cd空格文件路径&#xff08;直接复制粘贴…...

论文阅读之《Kindling the Darkness: A Practical Low-light Image Enhancer》

目录 摘要 介绍 已有方法回顾 普通方法 基于亮度的方法 基于深度学习的方法 基于图像去噪的方法 提出的方法 2.1 Layer Decomposition Net 2.2 Reflectance Restoration Net 2.3 Illumination Adjustment Net 实验结果 总结 Kindling the Darkness: A Practical L…...

性能测试基础知识及性能指标

前言&#xff1a;最近公司接了个项目&#xff0c;领导开会突然来了句&#xff0c;让我出一份性能测试方案&#xff0c;后面性能测试工作交给我&#xff01;我心里想之前面试没要求会这个啊&#xff08;最少得加钱才能做吧~&#xff0c;没办法既然下达了指令&#xff0c;那就只能…...

ArcGIS笔记10_如何创建渔网?

本文目录 前言Step 1 确定渔网的精度单位Step 2 有底图时创建渔网的操作 前言 ArcGIS中的渔网是一个很好用的工具&#xff0c;它可以创建出规规整整的小格子&#xff0c;每个小格子都对应一个标注点&#xff0c;可以将原本散乱的数据规整化&#xff0c;如下图&#xff1a; Ste…...

Jmeter安装(快速入门)

大家好我是苏麟今天简单聊一下Jmeter . Jmeter Jmeter官网 : Apache JMeter - Download Apache JMeter 安装Jmeter Jmeter依赖于JDK&#xff0c;所以必须确保当前计算机上已经安装了JDK&#xff0c;并且配置了环境变量。 下载 : 官网下载 : 网盘自取 : 链接&#xff1a;…...

一个react前端项目中的配置文件作用解析

前端框架中用到的配置文件 .editorconfig, .gitignore, .npmrc, .prettierignore, .prettierrc, .umirc.local.ts, .umirc.ts, package-lock.json, package.json, README.md, tsconfig.json, typings.d.ts, webpack.config.js.editorconfig&#xff1a;用于定义代码编辑器的配…...

MAC 配置 Maven

Maven 是一个流行的 Java 项目管理和构建工具&#xff0c;它可以帮助我们管理项目依赖、构建和发布等过程。本文将指导您在 MAC 上配置 Maven 的详细步骤。 1、下载 Maven 首先&#xff0c;从 Maven 官方网站下载最新版本的 Maven 安装包。下载完成后&#xff0c;将其解压到您…...

vue3.0 + element plus upload图片 上传

直接上图吧&#xff1a; 记录一下&#xff0c;方便后续遇到啥问题...

Leetcode 18:四数之和

给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元组元素一一对应&#xff0c;则认为两个四元组重复&#xff09;。 解题思路&#xff1a…...

word误删除的文件怎么恢复?恢复办法分享

在日常工作和学习中&#xff0c;我们常常会使用到Word来撰写文章、毕业论文、方案等。然而&#xff0c;我们可能会遇到Word误删文件的情况&#xff0c;令我们陷入恐慌&#xff0c;特别是这个文件很重要时。幸运的是&#xff0c;有办法找回。下面一起来看下word误删除的文件怎么…...

提高Qt开发软件运算性能提升

编译器minGW32&#xff0c;release版本&#xff0c;大部分操作在线程循环里面更容易体现出来 1、网上有说opencv像素处理使用直接获取Mat对象的像素块的数据指针,例如 for (int row 0; row < h; row) { uchar* uc_pixel image.data row * image.step; for (int col …...

WordPress SMTP邮件发送插件 Easy WP SMTP

Easy WP SMTP是一款 WordPress 邮件发送插件&#xff0c;WordPress 中经常用到邮件发送&#xff0c;包括新注册用户的邮件通知、找回密码通知、评论回复通知等。因为云服务器默认不启用 SMTP功能&#xff0c;所以需要安装 SMTP插件来解决这个问题。 SMTP 主机&#xff1a;smtp.…...

大咖云集,智慧碰撞|第 18 届 CLK 大会完整议程揭晓(内附报名通道)

自 2006 年以来&#xff0c;在国内 Linux 技术爱好者和行业公司的鼎力支持下&#xff0c;中国 Linux 内核开发者大会已走过 17个年头&#xff0c;是中国 Linux 内核领域最具影响力的峰会之一。今年的中国内核开发者大会依然秉承历届理念&#xff0c;以“自由、协作、创新”为理…...

springweb+vue前后端分离开发,集成部署

背景&#xff1a; 在自己做测试的时候&#xff0c;由于需要项目和项目的前端页面使用同样接口访问&#xff0c;所以需要将前端代码部署到后端项目下。前端采用vue&#xff0c;后端采用springboot。 首先时建立一个vue项目&#xff0c;这个可以参照网上的案例&#xff0c;创建方…...

美芯片禁令再次扩大,波及英伟达、AMD以及intel等科技公司 | 百能云芯

拜登政府17日宣布&#xff0c;计划停止英伟达&#xff08;Nvidia&#xff09;、超微半导体以及英特尔等科技公司设计的先进AI芯片输出中国大陆&#xff0c;英伟达&#xff08;Nvidia&#xff09;昨日股价重挫4.68%至每股439.38美元&#xff1b;天风国际证券分析师郭明錤表示&am…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...