通達OA批量處理沒有結束但前臺顯示已經結束的流程
問題描述:
通達OA系統出現大量流程沒有結束,系統顯示結束的問題通過查詢作業系統日誌,資料庫日誌,包括程式日誌沒有發現異常,通過觀察發現大量的流程結束時間都是在2016-02-16 17:32:XX時間的標誌
通過前臺可以直接恢復,這樣只能一個個手動處理,對大批量的問題需要通過其他方式進行
思路:
1.檢視OA的檔案restore.php
原始碼:
<?php
include_once( "inc/auth.php" );
include_once( "inc/utility_all.php" );
include_once( "../prcs_role.php" );
if ( $LOGIN_USER_PRIV != 1 )
{
exit( );
}
$query = "update FLOW_RUN_PRCS set PRCS_FLAG='2' where RUN_ID=".$RUN_ID." and OP_FLAG='1' ORDER BY PRCS_ID DESC,PRCS_TIME DESC LIMIT 1";
exequery( $connection, $query );
$query = "update FLOW_RUN set END_TIME=NULL where RUN_ID=".$RUN_ID." LIMIT 1";
exequery( $connection, $query );
$CONTENT = "恢復執行此工作";
run_log( $RUN_ID, $PRCS_ID, $FLOW_PRCS, $LOGIN_USER_ID, 1, $CONTENT );
ob_end_clean( );
if ( !mysql_affected_rows( ) )
{
echo "您的恢復執行操作沒有成功!";
}
else
{
echo "流水號為[";
echo $RUN_ID;
echo "]的工作已經恢復到執行狀態!";
}
?>
2.找到核心問題處理語句:
$query = "update FLOW_RUN_PRCS set PRCS_FLAG='2' where RUN_ID=".$RUN_ID." and OP_FLAG='1' ORDER BY PRCS_ID DESC,PRCS_TIME DESC LIMIT 1";$query = "update FLOW_RUN set END_TIME=NULL where RUN_ID=".$RUN_ID." LIMIT 1";
3.通過語句將這部分有問題的流程查詢出來,用指令碼批量處理
<?php
header('content-type:text/html;charset=utf-8');
/*
批量插入使用者工號指令碼
1.連線資料庫
2.迴圈有問題的流程流水號
3.迴圈修改資料
*/
//連線資料庫
$conn=mysql_connect('192.168.8.200:3306','root','pass');
if(!$conn) {
print_r(mysql_error());
}
//選庫
$sql='use TD_OA';
mysql_query($sql) or die('select database error');
//設定字符集
$sql='set names utf8';
mysql_query($sql);
//找到有問題的流水
/*
//流程沒有結束,但是顯示結束的流程
SELECT a.* from FLOW_RUN a,FLOW_RUN_PRCS b
where a.run_id=b.run_id and a.end_time like '2016-02-16 17:32%' and a.begin_time>='2016-02-01 00:00:00' and a.del_flag=0 and a.end_time is not null
and (b.prcs_time is null and b.deliver_time is not null)
*/
$run_id=array('1956932','1957092','1957208','1957217','1957258','1957413','1957413','1957452','1957602','1957690','1957690','1957690');
foreach($run_id as $v)
{
$sql1 = "update FLOW_RUN_PRCS set PRCS_FLAG='2' where RUN_ID='".$v."' and OP_FLAG='1' ORDER BY PRCS_ID DESC,PRCS_TIME DESC LIMIT 1";
echo $sql1,'<br />';
mysql_query($sql1);
$sql2 = "update FLOW_RUN set END_TIME=NULL where RUN_ID='".$v."' LIMIT 1";
echo $sql2,'<br />';
mysql_query($sql2);
}
echo 'ok';
相關文章
- 2015:開源已經完勝,但這並不是結束
- Runway CEO:AI公司的時代已經結束了AI
- OpenAI CEO表示巨型AI模型時代已經結束OpenAI模型
- Activiti判斷流程是否結束
- 雲端計算的戰爭遠沒結束
- ora-03113 通訊通道的檔案結束錯誤處理
- Activiti7 結束/終止流程
- IBM :我們所熟知的通訊服務時代已經結束(附下載)IBM
- 【日記】夏天,已經結束了呢(1072 字)
- FLIP-147:支援包含結束任務的 Checkpoint 操作與作業結束流程修正
- 面試結束。可怎麼沒有侃價過程呢???面試
- 結束程式的命令
- 啟動一個程式並處理程式結束事件 (轉)事件
- Windows系統如何批量結束工作管理員的程式樹?Windows
- 趙本山:我的時代還沒有結束 | Python告訴你Python
- 為什麼PHP檔案一般沒有結束標記PHP
- Layui的落幕,是否預示一個時代的結束?UI
- js 根據開始日期和結束日期顯示倒數計時JS
- golang如何結束goroutineGolang
- SQL之結束篇SQL
- 約束和異常處理
- 【已結束】樂譯開放書翻譯計劃
- 社群福利:贈送圖靈原版樣書(已結束)圖靈
- springboot 程序已結束,退出程式碼為 0Spring Boot
- shell程式的結束狀態
- 專案的真正結束(轉)
- 谷歌民間登月大賽結束:歷時10年,沒有獲勝者谷歌
- 雙十一結束了,但AI的退貨“打怪之旅”剛剛開始AI
- js jquery 結束迴圈JSjQuery
- IDC:智慧手機繁榮時期業已結束
- [杭州] 阿里中介軟體招 golang 工程師 (已結束)阿里Golang工程師
- 微軟希望通過監控開發者結束軟體 bug微軟
- 遠端桌面問題,連線後馬上斷開,並顯示“遠端計算機已結束連線”計算機
- win10 結束不了程式 結束程式在 12244 上沒有成功:拒絕訪問怎麼解決Win10
- 3D列印結束時候,讓列印頭抬起的程式碼(cura的結束程式碼)3D
- [秋招結束]已拿offer:鏈家+京東+網易+美團 附上面經 | 掘金技術徵文
- 微軟稱首批Win10創意者更新正式版推送已經結束微軟Win10
- [掘金專題] Google I/O 2017 已經結束,我們該如何評價?Go