找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

通达OA官网网站
搜索
查看: 4771|回复: 13

【分享】工作流文号,通过触发实现按需自动修改。

[复制链接]

39

主题

292

回帖

792

牛毛

游客

积分
1123
QQ
发表于 2016-2-3 18:09:56 | 显示全部楼层 |阅读模式
本帖最后由 bxpcn 于 2016-2-3 18:48 编辑

以《订单生产过程管理》为例;
一、设计
由于工作流的文号,只体现了单据号码,
并且在 我的工作 画面,只有文号显示。
这会对下一步的工作办理人员,带来不便利。

比如,订单下发,待办工作只显示文号,无法判断具体订单内容,无法最直观的及时处理订单信息。
所以,做了2个动作,来实现文号携带订单信息。
1.1文号格式:【客户名称/订单数量#文号】
1.2新建工作,转交下一步时,自动抓 客户名称 和 订单数量 ,与原文号,连接成一个新的文号,来达到目的。
1.3设计表单时,添加一个 单行输入框,来保存原文号,实现 收回、修改等动作,需要用到原始文号,来组成新文号。
2.添加一个触发器。


二、实例

查看工作流对应的数据表 和 栏位对应内容

触发器路径:
D:\MYOA\webroot\general\workflow\plugin\turn
随便找个原有例子,复制一份,重命名。
注意文件夹和php文件名,要一样,仔细观看原有通达内置的触发器。
  1. NAME = 新增一笔订单总览表
  2. DESC = 订单下发转交下一步后新增
  3. AFTER_BACKEND = auto_137_wf1xf.php
复制代码
如上内容,137是我的工作流数据表,
然后,
文件夹是auto_137_wf1xf,
ini文件名是auto_137_wf1xf.ini,
php文件名是auto_137_wf1xf.php,
ini里面的php文件执行指向为auto_137_wf1xf.php




1.png

39

主题

292

回帖

792

牛毛

游客

积分
1123
QQ
 楼主| 发表于 2016-2-3 18:22:59 | 显示全部楼层
本帖最后由 bxpcn 于 2016-2-3 18:25 编辑

三、添加空白触发器

放在第一步,新增工作流,转交下一步时,自动执行auto_137_wf1xf.php文件这个php程序的目的,就是按照我们的需求格式,去修改工作流文号。




2.png

39

主题

292

回帖

792

牛毛

游客

积分
1123
QQ
 楼主| 发表于 2016-2-3 18:31:43 | 显示全部楼层
本帖最后由 bxpcn 于 2016-2-3 18:51 编辑

四、源码
auto_137_wf1xf.php的代码。。。
很简单的几句,硬生生写的,没有任何技巧。。。
哦,这段代码里面,还回写了下BI报表,懒得去掉,全部贴上去,可用、在用的完整触发代码。
将就看吧,代码不复杂,对应数据表的栏位,整得头昏眼花。

  1. <?
  2. include_once("inc/auth.inc.php");
  3. ob_end_clean();
  4. //flow_data_137
  5. //转角下一步后
  6. //更新自身文号,格式【客户名称/生产数量@原文号】
  7. //更新订单状态,格式【已下发】
  8. //添加BI表头2886内容和表身2887空白栏位

  9. $varTIME_NOW = date('Y-m-d H:i:s');
  10. $varDEPT_ID = $_SESSION["LOGIN_DEPT_ID"];
  11. $varUSER_ID = $_SESSION["LOGIN_USER_ID"];
  12. $varROW="SELECT * FROM TD_OA.flow_data_137 WHERE run_id='{$RUN_ID}'";

  13. $getvarROW=exequery(TD::conn(),$varROW);
  14. $ROW = mysql_fetch_array($getvarROW);
  15. $vrun_name = $ROW['run_name'];
  16. $voldrun_name = $ROW['data_33'];

  17. $v1SCSL = $ROW['data_29'];
  18. $v2KHMC = $ROW['data_31'];
  19. //*******************************************************************
  20. //***up by bxpcn 2016-01-14
  21. //办结工作-收回。更新文号和BI新增或更新标示,0=新增;n=更新工作流行号。
  22. //*******************************************************************
  23. if (strlen($voldrun_name) > 0 ){
  24.   $vWH = $v2KHMC."/".$v1SCSL."#".$voldrun_name;
  25.   $v3DH = $voldrun_name;
  26.   $vUP = 1;
  27. }else{
  28.   $vWH = $v2KHMC."/".$v1SCSL."#".$vrun_name;
  29.   $v3DH = $vrun_name;
  30.   $vUP = 0;
  31. }

  32. $v1DDDH = $ROW['data_27'];
  33. $v1JHRQ = $ROW['data_28'];
  34. $v1JQTS = $ROW['data_30'];
  35. $v2BZ = $ROW['data_32'];
  36. $v3LRRQ = $ROW['data_34'];

  37. //转角下一步后,更新工作流表单数据
  38. $query = "update TD_OA.flow_data_137 set data_36='已下发',run_name='{$vWH}',data_33='{$v3DH}',DATA_40='{$v1JHRQ}',DATA_41 = '未上报',DATA_56='{$v1JHRQ}',DATA_63='{$v1JHRQ}',DATA_64 = '未上报',DATA_70='{$v1JHRQ}',DATA_77='{$v1JHRQ}',DATA_84='{$v1JHRQ}',DATA_91='{$v1JHRQ}',DATA_99='{$v1JHRQ}',DATA_106='{$v1JHRQ}',DATA_107 = '未上报',DATA_113='{$v1JHRQ}',DATA_114 = '未上报',DATA_120='{$v1JHRQ}',DATA_127='{$v1JHRQ}',DATA_134='{$v1JHRQ}',DATA_141='{$v1JHRQ}' where run_id='{$RUN_ID}'";
  39. exequery(TD::conn(),$query);
  40. //转角下一步后,更新工作流运行总表文号。
  41. $query1 = "update TD_OA.flow_run set run_name='{$vWH}' where run_id='{$RUN_ID}'";
  42. exequery(TD::conn(),$query1);


复制代码



39

主题

292

回帖

792

牛毛

游客

积分
1123
QQ
 楼主| 发表于 2016-2-3 18:33:02 | 显示全部楼层
代码字数,超过回帖范围。。。分2段发。。。

  1. //*******************************************************************
  2. //***up by bxpcn 2016-01-14
  3. //判断BI新增或更新
  4. //*******************************************************************
  5. $vKHSL = $v2KHMC."/".$v1SCSL;
  6. if ($vUP == 0){
  7. //主表2886
  8. $varKID = $RUN_ID."0";
  9. $query = "insert into crscell.crs_tabledata2886(title,memo,kid,organid,userid,writetime,logiccheck,isfrozen,ismerge,displayseq,col40514,col40515,col40516,col40517,col40518,col40519,col40520,col40521,col40522,col40523,col40524) values('{$vKHSL}','{$v1DDDH}','{$varKID}','{$varDEPT_ID}','{$varUSER_ID}','{$varTIME_NOW}','unchecked','n','n','1','{$v1DDDH}','{$v1JHRQ}','{$v1SCSL}','{$v1JQTS}','{$v2KHMC}','{$v2BZ}','{$v3DH}','$v3LRRQ','','已下发','{$RUN_ID}')";
  10. exequery(TD::conn(),$query);

  11. //子表2887
  12. $varKID = $RUN_ID."1";
  13. $query1 = "insert into crscell.crs_tabledata2887(title,memo,kid,organid,userid,writetime,logiccheck,isfrozen,ismerge,displayseq,col40525,col40526,col40527,col40528,col40529,col40530,col40531,col40532,col40533,col40534,col40535) values('{$vKHSL}','{$v1DDDH}','{$varKID}','{$varDEPT_ID}','{$varUSER_ID}','{$varTIME_NOW}','unchecked','n','n','1','1','图纸&BOM','上传附件','{$v1JHRQ}','未上报','','','0','0','0','N')";
  14. exequery(TD::conn(),$query1);
  15. $varKID = $RUN_ID."2";
  16. $query1 = "insert into crscell.crs_tabledata2887(title,memo,kid,organid,userid,writetime,logiccheck,isfrozen,ismerge,displayseq,col40525,col40526,col40527,col40528,col40529,col40530,col40531,col40532,col40533,col40534,col40535) values('{$vKHSL}','{$v1DDDH}','{$varKID}','{$varDEPT_ID}','{$varUSER_ID}','{$varTIME_NOW}','unchecked','n','n','2','2','毛料','结构版本','{$v1JHRQ}','未上报','','','0','0','0','N')";
  17. exequery(TD::conn(),$query1);
  18. $varKID = $RUN_ID."3";
  19. $query1 = "insert into crscell.crs_tabledata2887(title,memo,kid,organid,userid,writetime,logiccheck,isfrozen,ismerge,displayseq,col40525,col40526,col40527,col40528,col40529,col40530,col40531,col40532,col40533,col40534,col40535) values('{$vKHSL}','{$v1DDDH}','{$varKID}','{$varDEPT_ID}','{$varUSER_ID}','{$varTIME_NOW}','unchecked','n','n','3','3','编程','上传附件','{$v1JHRQ}','未上报','','','0','0','0','N')";
  20. exequery(TD::conn(),$query1);
  21. $varKID = $RUN_ID."4";
  22. $query1 = "insert into crscell.crs_tabledata2887(title,memo,kid,organid,userid,writetime,logiccheck,isfrozen,ismerge,displayseq,col40525,col40526,col40527,col40528,col40529,col40530,col40531,col40532,col40533,col40534,col40535) values('{$vKHSL}','{$v1DDDH}','{$varKID}','{$varDEPT_ID}','{$varUSER_ID}','{$varTIME_NOW}','unchecked','n','n','4','4','CNC首样','加工首样','{$v1JHRQ}','未上报','','','0','0','0','N')";
  23. exequery(TD::conn(),$query1);
  24. $varKID = $RUN_ID."5";
  25. $query1 = "insert into crscell.crs_tabledata2887(title,memo,kid,organid,userid,writetime,logiccheck,isfrozen,ismerge,displayseq,col40525,col40526,col40527,col40528,col40529,col40530,col40531,col40532,col40533,col40534,col40535) values('{$vKHSL}','{$v1DDDH}','{$varKID}','{$varDEPT_ID}','{$varUSER_ID}','{$varTIME_NOW}','unchecked','n','n','5','5','品质','首样确认','{$v1JHRQ}','未上报','','','0','0','0','N')";
  26. exequery(TD::conn(),$query1);
  27. $varKID = $RUN_ID."6";
  28. $query1 = "insert into crscell.crs_tabledata2887(title,memo,kid,organid,userid,writetime,logiccheck,isfrozen,ismerge,displayseq,col40525,col40526,col40527,col40528,col40529,col40530,col40531,col40532,col40533,col40534,col40535) values('{$vKHSL}','{$v1DDDH}','{$varKID}','{$varDEPT_ID}','{$varUSER_ID}','{$varTIME_NOW}','unchecked','n','n','6','6','CNC1','加工状况','{$v1JHRQ}','未上报','','','0','0','0','N')";
  29. exequery(TD::conn(),$query1);
  30. $varKID = $RUN_ID."7";
  31. $query1 = "insert into crscell.crs_tabledata2887(title,memo,kid,organid,userid,writetime,logiccheck,isfrozen,ismerge,displayseq,col40525,col40526,col40527,col40528,col40529,col40530,col40531,col40532,col40533,col40534,col40535) values('{$vKHSL}','{$v1DDDH}','{$varKID}','{$varDEPT_ID}','{$varUSER_ID}','{$varTIME_NOW}','unchecked','n','n','7','7','CNC2','加工状况','{$v1JHRQ}','未上报','','','0','0','0','N')";
  32. exequery(TD::conn(),$query1);
  33. $varKID = $RUN_ID."8";
  34. $query1 = "insert into crscell.crs_tabledata2887(title,memo,kid,organid,userid,writetime,logiccheck,isfrozen,ismerge,displayseq,col40525,col40526,col40527,col40528,col40529,col40530,col40531,col40532,col40533,col40534,col40535) values('{$vKHSL}','{$v1DDDH}','{$varKID}','{$varDEPT_ID}','{$varUSER_ID}','{$varTIME_NOW}','unchecked','n','n','8','8','CNC3','加工状况','{$v1JHRQ}','未上报','','','0','0','0','N')";
  35. exequery(TD::conn(),$query1);
  36. $varKID = $RUN_ID."9";
  37. $query1 = "insert into crscell.crs_tabledata2887(title,memo,kid,organid,userid,writetime,logiccheck,isfrozen,ismerge,displayseq,col40525,col40526,col40527,col40528,col40529,col40530,col40531,col40532,col40533,col40534,col40535) values('{$vKHSL}','{$v1DDDH}','{$varKID}','{$varDEPT_ID}','{$varUSER_ID}','{$varTIME_NOW}','unchecked','n','n','9','9','配件备料','齐料配套','{$v1JHRQ}','未上报','','','0','0','0','N')";
  38. exequery(TD::conn(),$query1);
  39. $varKID = $RUN_ID."10";
  40. $query1 = "insert into crscell.crs_tabledata2887(title,memo,kid,organid,userid,writetime,logiccheck,isfrozen,ismerge,displayseq,col40525,col40526,col40527,col40528,col40529,col40530,col40531,col40532,col40533,col40534,col40535) values('{$vKHSL}','{$v1DDDH}','{$varKID}','{$varDEPT_ID}','{$varUSER_ID}','{$varTIME_NOW}','unchecked','n','n','10','10','配件采购','采购交期','{$v1JHRQ}','未上报','','','0','0','0','N')";
  41. exequery(TD::conn(),$query1);
  42. $varKID = $RUN_ID."11";
  43. $query1 = "insert into crscell.crs_tabledata2887(title,memo,kid,organid,userid,writetime,logiccheck,isfrozen,ismerge,displayseq,col40525,col40526,col40527,col40528,col40529,col40530,col40531,col40532,col40533,col40534,col40535) values('{$vKHSL}','{$v1DDDH}','{$varKID}','{$varDEPT_ID}','{$varUSER_ID}','{$varTIME_NOW}','unchecked','n','n','11','11','首样确认','组装首样','{$v1JHRQ}','未上报','','','0','0','0','N')";
  44. exequery(TD::conn(),$query1);
  45. $varKID = $RUN_ID."12";
  46. $query1 = "insert into crscell.crs_tabledata2887(title,memo,kid,organid,userid,writetime,logiccheck,isfrozen,ismerge,displayseq,col40525,col40526,col40527,col40528,col40529,col40530,col40531,col40532,col40533,col40534,col40535) values('{$vKHSL}','{$v1DDDH}','{$varKID}','{$varDEPT_ID}','{$varUSER_ID}','{$varTIME_NOW}','unchecked','n','n','12','12','组装','组装状况','{$v1JHRQ}','未上报','','','0','0','0','N')";
  47. exequery(TD::conn(),$query1);
  48. $varKID = $RUN_ID."13";
  49. $query1 = "insert into crscell.crs_tabledata2887(title,memo,kid,organid,userid,writetime,logiccheck,isfrozen,ismerge,displayseq,col40525,col40526,col40527,col40528,col40529,col40530,col40531,col40532,col40533,col40534,col40535) values('{$vKHSL}','{$v1DDDH}','{$varKID}','{$varDEPT_ID}','{$varUSER_ID}','{$varTIME_NOW}','unchecked','n','n','13','13','品质','质检状况','{$v1JHRQ}','未上报','','','0','0','0','N')";
  50. exequery(TD::conn(),$query1);
  51. $varKID = $RUN_ID."14";
  52. $query1 = "insert into crscell.crs_tabledata2887(title,memo,kid,organid,userid,writetime,logiccheck,isfrozen,ismerge,displayseq,col40525,col40526,col40527,col40528,col40529,col40530,col40531,col40532,col40533,col40534,col40535) values('{$vKHSL}','{$v1DDDH}','{$varKID}','{$varDEPT_ID}','{$varUSER_ID}','{$varTIME_NOW}','unchecked','n','n','14','14','入库','入库状况','{$v1JHRQ}','未上报','','','0','0','0','N')";
  53. exequery(TD::conn(),$query1);
  54. }else{
  55. //主表2886
  56. $varKID = $RUN_ID."0";
  57. $query = "update crscell.crs_tabledata2886 set title='{$vKHSL}',memo='{$v1DDDH}',col40514='{$v1DDDH}',col40515='{$v1JHRQ}',col40516='{$v1SCSL}',col40517='{$v1JQTS}',col40518='{$v2KHMC}',col40519='{$v2BZ}',col40520='{$v3DH}',col40521='$v3LRRQ' where kid='{$varKID}'";
  58. exequery(TD::conn(),$query);
  59. //*******************************************************************
  60. //***up by bxpcn 2016-01-15
  61. //同步刷新字表数据
  62. //*******************************************************************
  63. //子表2887
  64. for ($x=1; $x<=14; $x++) {
  65. $varKID = $RUN_ID.$x;
  66. $query = "update crscell.crs_tabledata2887 set title='{$vKHSL}',memo='{$v1DDDH}',col40528='{$v1JHRQ}' where kid='{$varKID}'";
  67. exequery(TD::conn(),$query);
  68. }

  69. }
  70. ?>
复制代码


39

主题

292

回帖

792

牛毛

游客

积分
1123
QQ
 楼主| 发表于 2016-2-3 18:38:47 | 显示全部楼层
本帖最后由 bxpcn 于 2016-2-3 18:41 编辑

五、效果
客户名称 和 订单数量 ,已经体现在文号中了。


待办工作中:



工作查询中:







3.png
4.png

97

主题

169

回帖

1210

牛毛

游客

积分
1476
发表于 2016-2-4 17:35:16 | 显示全部楼层
正是需要的,但是有个问题,这是个工作流表单,为什么要更新BI表头?

39

主题

292

回帖

792

牛毛

游客

积分
1123
QQ
 楼主| 发表于 2016-2-4 23:23:05 | 显示全部楼层
本帖最后由 bxpcn 于 2016-2-4 23:26 编辑
benzcomp 发表于 2016-2-4 17:35
正是需要的,但是有个问题,这是个工作流表单,为什么要更新BI表头?


哦,这个是为客户设计的总览表,懒得去掉。

工作流:单笔工作的流转记录。
用途:每笔工作,按照既定的流程,记录、上报。例如生产上报,每天多笔,然后回写BI报表,在BI报表中体现订单的整体完成情况。

BI报表:工作的汇总。
用途:开放给所有人,可用PC和手机,随时查看订单的完成进度。

这些都是ERP所欠缺的,用OA的工作流和BI报表,综合二开,来实现。

效果截图,看这个分享入口:
http://club.tongda2000.com/forum.php?mod=viewthread&tid=25472&extra=page%3D5

97

主题

169

回帖

1210

牛毛

游客

积分
1476
发表于 2016-2-5 10:59:21 | 显示全部楼层
明白了。
还有一个问题请教,我有一个触发子流程的步骤,如何用父流程的字段自动修改子流程的文号?

30

主题

198

回帖

456

牛毛

游客

积分
684
发表于 2016-2-15 14:39:19 | 显示全部楼层
benzcomp 发表于 2016-2-5 10:59
明白了。
还有一个问题请教,我有一个触发子流程的步骤,如何用父流程的字段自动修改子流程的文号? ...

:'(俺不懂PHP,看了一上午,没搞懂。把代码折腾来,折腾去的。还是没成功。
哥们,能把你精简的代码发出来,学习下啦。
<?
include_once("inc/auth.inc.php");
ob_end_clean();
$varROW="SELECT * FROM TD_OA.flow_data_131 WHERE run_id='{$RUN_ID}'";
$getvarROW=exequery(TD::conn(),$varROW);
$ROW = mysql_fetch_array($getvarROW);
$vrun_name = $ROW['run_name'];
$v1SCSL = $ROW['data_1'];
$query1 = "update TD_OA.flow_run set run_name='{$vWH}' where run_id='{$RUN_ID}'";
exequery(TD::conn(),$query1);
?>

39

主题

292

回帖

792

牛毛

游客

积分
1123
QQ
 楼主| 发表于 2016-2-20 23:20:43 | 显示全部楼层
fuwj 发表于 2016-2-15 14:39
俺不懂PHP,看了一上午,没搞懂。把代码折腾来,折腾去的。还是没成功。
哥们,能把你精简的代码发出 ...

主要就是这段代码。

你$vWH变量没有赋值。
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

咨询电话:400 818 0505 通达OA,国内协同管理软件行业内唯一的央企单位,中国协同OA软件的领跑者,优秀协同办公解决方案供应商

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|由NB5牛论坛提供技术支持NB5社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-4-29 06:54 , Processed in 0.217938 second(s), 65 queries .

Powered by Discuz

Copyright © 2001-2025, 北京通达信科科技有限公司.

快速回复 返回顶部 返回列表