【分享】工作流文号,通过触发实现按需自动修改。
本帖最后由 bxpcn 于 2016-2-3 18:48 编辑以《订单生产过程管理》为例;
一、设计
由于工作流的文号,只体现了单据号码,
并且在 我的工作 画面,只有文号显示。
这会对下一步的工作办理人员,带来不便利。
比如,订单下发,待办工作只显示文号,无法判断具体订单内容,无法最直观的及时处理订单信息。
所以,做了2个动作,来实现文号携带订单信息。
1.1文号格式:【客户名称/订单数量#文号】
1.2新建工作,转交下一步时,自动抓 客户名称 和 订单数量 ,与原文号,连接成一个新的文号,来达到目的。
1.3设计表单时,添加一个 单行输入框,来保存原文号,实现 收回、修改等动作,需要用到原始文号,来组成新文号。
2.添加一个触发器。
二、实例
查看工作流对应的数据表 和 栏位对应内容
触发器路径:
D:\MYOA\webroot\general\workflow\plugin\turn
随便找个原有例子,复制一份,重命名。
注意文件夹和php文件名,要一样,仔细观看原有通达内置的触发器。
NAME = 新增一笔订单总览表
DESC = 订单下发转交下一步后新增
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
本帖最后由 bxpcn 于 2016-2-3 18:25 编辑
三、添加空白触发器
放在第一步,新增工作流,转交下一步时,自动执行auto_137_wf1xf.php文件这个php程序的目的,就是按照我们的需求格式,去修改工作流文号。
本帖最后由 bxpcn 于 2016-2-3 18:51 编辑
四、源码
auto_137_wf1xf.php的代码。。。
很简单的几句,硬生生写的,没有任何技巧。。。
哦,这段代码里面,还回写了下BI报表,懒得去掉,全部贴上去,可用、在用的完整触发代码。
将就看吧,代码不复杂,对应数据表的栏位,整得头昏眼花。
<?
include_once("inc/auth.inc.php");
ob_end_clean();
//flow_data_137
//转角下一步后
//更新自身文号,格式【客户名称/生产数量@原文号】
//更新订单状态,格式【已下发】
//添加BI表头2886内容和表身2887空白栏位
$varTIME_NOW = date('Y-m-d H:i:s');
$varDEPT_ID = $_SESSION["LOGIN_DEPT_ID"];
$varUSER_ID = $_SESSION["LOGIN_USER_ID"];
$varROW="SELECT * FROM TD_OA.flow_data_137 WHERE run_id='{$RUN_ID}'";
$getvarROW=exequery(TD::conn(),$varROW);
$ROW = mysql_fetch_array($getvarROW);
$vrun_name = $ROW['run_name'];
$voldrun_name = $ROW['data_33'];
$v1SCSL = $ROW['data_29'];
$v2KHMC = $ROW['data_31'];
//*******************************************************************
//***up by bxpcn 2016-01-14
//办结工作-收回。更新文号和BI新增或更新标示,0=新增;n=更新工作流行号。
//*******************************************************************
if (strlen($voldrun_name) > 0 ){
$vWH = $v2KHMC."/".$v1SCSL."#".$voldrun_name;
$v3DH = $voldrun_name;
$vUP = 1;
}else{
$vWH = $v2KHMC."/".$v1SCSL."#".$vrun_name;
$v3DH = $vrun_name;
$vUP = 0;
}
$v1DDDH = $ROW['data_27'];
$v1JHRQ = $ROW['data_28'];
$v1JQTS = $ROW['data_30'];
$v2BZ = $ROW['data_32'];
$v3LRRQ = $ROW['data_34'];
//转角下一步后,更新工作流表单数据
$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}'";
exequery(TD::conn(),$query);
//转角下一步后,更新工作流运行总表文号。
$query1 = "update TD_OA.flow_run set run_name='{$vWH}' where run_id='{$RUN_ID}'";
exequery(TD::conn(),$query1);
代码字数,超过回帖范围。。。分2段发。。。
//*******************************************************************
//***up by bxpcn 2016-01-14
//判断BI新增或更新
//*******************************************************************
$vKHSL = $v2KHMC."/".$v1SCSL;
if ($vUP == 0){
//主表2886
$varKID = $RUN_ID."0";
$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}')";
exequery(TD::conn(),$query);
//子表2887
$varKID = $RUN_ID."1";
$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')";
exequery(TD::conn(),$query1);
$varKID = $RUN_ID."2";
$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')";
exequery(TD::conn(),$query1);
$varKID = $RUN_ID."3";
$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')";
exequery(TD::conn(),$query1);
$varKID = $RUN_ID."4";
$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')";
exequery(TD::conn(),$query1);
$varKID = $RUN_ID."5";
$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')";
exequery(TD::conn(),$query1);
$varKID = $RUN_ID."6";
$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')";
exequery(TD::conn(),$query1);
$varKID = $RUN_ID."7";
$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')";
exequery(TD::conn(),$query1);
$varKID = $RUN_ID."8";
$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')";
exequery(TD::conn(),$query1);
$varKID = $RUN_ID."9";
$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')";
exequery(TD::conn(),$query1);
$varKID = $RUN_ID."10";
$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')";
exequery(TD::conn(),$query1);
$varKID = $RUN_ID."11";
$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')";
exequery(TD::conn(),$query1);
$varKID = $RUN_ID."12";
$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')";
exequery(TD::conn(),$query1);
$varKID = $RUN_ID."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','13','13','品质','质检状况','{$v1JHRQ}','未上报','','','0','0','0','N')";
exequery(TD::conn(),$query1);
$varKID = $RUN_ID."14";
$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')";
exequery(TD::conn(),$query1);
}else{
//主表2886
$varKID = $RUN_ID."0";
$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}'";
exequery(TD::conn(),$query);
//*******************************************************************
//***up by bxpcn 2016-01-15
//同步刷新字表数据
//*******************************************************************
//子表2887
for ($x=1; $x<=14; $x++) {
$varKID = $RUN_ID.$x;
$query = "update crscell.crs_tabledata2887 set title='{$vKHSL}',memo='{$v1DDDH}',col40528='{$v1JHRQ}' where kid='{$varKID}'";
exequery(TD::conn(),$query);
}
}
?>
本帖最后由 bxpcn 于 2016-2-3 18:41 编辑
五、效果
客户名称 和 订单数量 ,已经体现在文号中了。
待办工作中:
工作查询中:
正是需要的,但是有个问题,这是个工作流表单,为什么要更新BI表头? 本帖最后由 bxpcn 于 2016-2-4 23:26 编辑
benzcomp 发表于 2016-2-4 17:35 http://club.tongda2000.com/static/image/common/back.gif
正是需要的,但是有个问题,这是个工作流表单,为什么要更新BI表头?
哦,这个是为客户设计的总览表,懒得去掉。
工作流:单笔工作的流转记录。
用途:每笔工作,按照既定的流程,记录、上报。例如生产上报,每天多笔,然后回写BI报表,在BI报表中体现订单的整体完成情况。
BI报表:工作的汇总。
用途:开放给所有人,可用PC和手机,随时查看订单的完成进度。
这些都是ERP所欠缺的,用OA的工作流和BI报表,综合二开,来实现。
效果截图,看这个分享入口:
http://club.tongda2000.com/forum.php?mod=viewthread&tid=25472&extra=page%3D5
明白了。
还有一个问题请教,我有一个触发子流程的步骤,如何用父流程的字段自动修改子流程的文号? benzcomp 发表于 2016-2-5 10:59 static/image/common/back.gif
明白了。
还有一个问题请教,我有一个触发子流程的步骤,如何用父流程的字段自动修改子流程的文号? ...
:'(俺不懂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);
?>
fuwj 发表于 2016-2-15 14:39 static/image/common/back.gif
俺不懂PHP,看了一上午,没搞懂。把代码折腾来,折腾去的。还是没成功。
哥们,能把你精简的代码发出 ...
主要就是这段代码。
你$vWH变量没有赋值。
页:
[1]
2