通达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,流程及表单自定义好用的类 V1.0 V1.0 日期:2023年10月19日 新建类文件,将下面代码复制到文件中即可。 功能说明: 1、根据flow_id,可以获取流程表单相关的表名、及字段名。 2、根据run_id࿰…...
如何在vue中实现图片懒加载
1.什么是图片懒加载 概念当图片还未出现在浏览器的可视区,图片并不加载src所引入的图片资源。只有当图片出现在可视区时,才加载图片资源。 好处:当页面中需要许多图片进行展示。但是,在我们不可视区的图片我们可以进行图片懒加载…...

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

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

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

MySQL服务安装与登录
(1)以管理员身份启动命令提示符: (2)定位到安装目录的bin目录下(根据自己的安装路径进行调整即可)。先输入“d:”,定位到d盘,输入cd空格文件路径(直接复制粘贴…...

论文阅读之《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…...

性能测试基础知识及性能指标
前言:最近公司接了个项目,领导开会突然来了句,让我出一份性能测试方案,后面性能测试工作交给我!我心里想之前面试没要求会这个啊(最少得加钱才能做吧~,没办法既然下达了指令,那就只能…...

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

Jmeter安装(快速入门)
大家好我是苏麟今天简单聊一下Jmeter . Jmeter Jmeter官网 : Apache JMeter - Download Apache JMeter 安装Jmeter Jmeter依赖于JDK,所以必须确保当前计算机上已经安装了JDK,并且配置了环境变量。 下载 : 官网下载 : 网盘自取 : 链接:…...
一个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:用于定义代码编辑器的配…...
MAC 配置 Maven
Maven 是一个流行的 Java 项目管理和构建工具,它可以帮助我们管理项目依赖、构建和发布等过程。本文将指导您在 MAC 上配置 Maven 的详细步骤。 1、下载 Maven 首先,从 Maven 官方网站下载最新版本的 Maven 安装包。下载完成后,将其解压到您…...

vue3.0 + element plus upload图片 上传
直接上图吧: 记录一下,方便后续遇到啥问题...
Leetcode 18:四数之和
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复)。 解题思路:…...

word误删除的文件怎么恢复?恢复办法分享
在日常工作和学习中,我们常常会使用到Word来撰写文章、毕业论文、方案等。然而,我们可能会遇到Word误删文件的情况,令我们陷入恐慌,特别是这个文件很重要时。幸运的是,有办法找回。下面一起来看下word误删除的文件怎么…...
提高Qt开发软件运算性能提升
编译器minGW32,release版本,大部分操作在线程循环里面更容易体现出来 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 邮件发送插件,WordPress 中经常用到邮件发送,包括新注册用户的邮件通知、找回密码通知、评论回复通知等。因为云服务器默认不启用 SMTP功能,所以需要安装 SMTP插件来解决这个问题。 SMTP 主机:smtp.…...

大咖云集,智慧碰撞|第 18 届 CLK 大会完整议程揭晓(内附报名通道)
自 2006 年以来,在国内 Linux 技术爱好者和行业公司的鼎力支持下,中国 Linux 内核开发者大会已走过 17个年头,是中国 Linux 内核领域最具影响力的峰会之一。今年的中国内核开发者大会依然秉承历届理念,以“自由、协作、创新”为理…...

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

美芯片禁令再次扩大,波及英伟达、AMD以及intel等科技公司 | 百能云芯
拜登政府17日宣布,计划停止英伟达(Nvidia)、超微半导体以及英特尔等科技公司设计的先进AI芯片输出中国大陆,英伟达(Nvidia)昨日股价重挫4.68%至每股439.38美元;天风国际证券分析师郭明錤表示&am…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

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

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...