Performance improvement in the reassign

- Improvement for the query:

SELECT APPLICATION.APP_UID, APPLICATION.APP_NUMBER, APPLICATION.APP_STATUS, APPLICATION.PRO_UID, APPLICATION.APP_CREATE_DATE, APPLICATION.APP_FINISH_DATE, APPLICATION.APP_UPDATE_DATE, APPLICATION.APP_DATA, ad.DEL_INDEX, ad.DEL_PREVIOUS, ad.TAS_UID, ad.USR_UID, ad.DEL_TYPE, ad.DEL_THREAD, ad.DEL_THREAD_STATUS, ad.DEL_PRIORITY, ad.DEL_DELEGATE_DATE, ad.DEL_INIT_DATE, ad.DEL_TASK_DUE_DATE, ad.DEL_FINISH_DATE, ad.DEL_DURATION, ad.DEL_QUEUE_DURATION, ad.DEL_DELAY_DURATION, ad.DEL_STARTED, ad.DEL_FINISHED, ad.DEL_DELAYED, ad.APP_OVERDUE_PERCENTAGE, at.APP_THREAD_INDEX, at.APP_THREAD_PARENT, at.APP_THREAD_STATUS, capp.CON_VALUE AS APP_TITLE, cpro.CON_VALUE AS PRO_TITLE FROM APPLICATION JOIN APP_DELEGATION ad ON (APPLICATION.APP_UID=ad.APP_UID) LEFT JOIN CONTENT capp ON (APPLICATION.APP_UID=capp.CON_ID AND capp.CON_CATEGORY='?' AND capp.CON_LANG='?') LEFT JOIN CONTENT cpro ON (APPLICATION.PRO_UID=cpro.CON_ID AND cpro.CON_CATEGORY='?' AND cpro.CON_LANG='?') JOIN APP_THREAD at ON (ad.APP_UID=at.APP_UID AND ad.DEL_THREAD=at.APP_THREAD_INDEX) WHERE APPLICATION.APP_UID='?'
This commit is contained in:
Julio Cesar Laura
2012-09-25 17:06:25 -04:00
parent d1124906fd
commit cd1ba7c6d1
4 changed files with 32 additions and 60 deletions

View File

@@ -2804,7 +2804,7 @@ class Cases
* @Author Erik Amaru Ortiz <erik@colosa.com>
* @return array
*/
public function loadCaseInCurrentDelegation($APP_UID)
public function loadCaseInCurrentDelegation($APP_UID, $titles = false)
{
$c = new Criteria('workflow');
$c->clearSelectColumns();
@@ -2827,17 +2827,21 @@ class Cases
$c->addSelectColumn(UsersPeer::USR_UID);
$c->addAsColumn('APP_CURRENT_USER', "CONCAT(USERS.USR_LASTNAME, ' ', USERS.USR_FIRSTNAME)");
$c->addSelectColumn(ApplicationPeer::APP_STATUS);
$c->addAsColumn('APP_TITLE', 'APP_TITLE.CON_VALUE');
$c->addAsColumn('APP_PRO_TITLE', 'PRO_TITLE.CON_VALUE');
$c->addAsColumn('APP_TAS_TITLE', 'TAS_TITLE.CON_VALUE');
if ($titles) {
$c->addAsColumn('APP_TITLE', 'APP_TITLE.CON_VALUE');
$c->addAsColumn('APP_PRO_TITLE', 'PRO_TITLE.CON_VALUE');
$c->addAsColumn('APP_TAS_TITLE', 'TAS_TITLE.CON_VALUE');
}
//$c->addAsColumn('APP_DEL_PREVIOUS_USER', 'APP_LAST_USER.USR_USERNAME');
$c->addAsColumn(
'APP_DEL_PREVIOUS_USER',
"CONCAT(APP_LAST_USER.USR_LASTNAME, ' ', APP_LAST_USER.USR_FIRSTNAME)");
$c->addAlias("APP_TITLE", 'CONTENT');
$c->addAlias("PRO_TITLE", 'CONTENT');
$c->addAlias("TAS_TITLE", 'CONTENT');
if ($titles) {
$c->addAlias("APP_TITLE", 'CONTENT');
$c->addAlias("PRO_TITLE", 'CONTENT');
$c->addAlias("TAS_TITLE", 'CONTENT');
}
$c->addAlias("APP_PREV_DEL", 'APP_DELEGATION');
$c->addAlias("APP_LAST_USER", 'USERS');
@@ -2848,24 +2852,26 @@ class Cases
$c->addJoinMC($appThreadConds, Criteria::LEFT_JOIN);
$c->addJoin(AppDelegationPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN);
$del = DBAdapter::getStringDelimiter();
$appTitleConds = array();
$appTitleConds[] = array(ApplicationPeer::APP_UID, 'APP_TITLE.CON_ID');
$appTitleConds[] = array('APP_TITLE.CON_CATEGORY', $del . 'APP_TITLE' . $del);
$appTitleConds[] = array('APP_TITLE.CON_LANG', $del . SYS_LANG . $del);
$c->addJoinMC($appTitleConds, Criteria::LEFT_JOIN);
if ($titles) {
$del = DBAdapter::getStringDelimiter();
$appTitleConds = array();
$appTitleConds[] = array(ApplicationPeer::APP_UID, 'APP_TITLE.CON_ID');
$appTitleConds[] = array('APP_TITLE.CON_CATEGORY', $del . 'APP_TITLE' . $del);
$appTitleConds[] = array('APP_TITLE.CON_LANG', $del . SYS_LANG . $del);
$c->addJoinMC($appTitleConds, Criteria::LEFT_JOIN);
$proTitleConds = array();
$proTitleConds[] = array(ApplicationPeer::PRO_UID, 'PRO_TITLE.CON_ID');
$proTitleConds[] = array('PRO_TITLE.CON_CATEGORY', $del . 'PRO_TITLE' . $del);
$proTitleConds[] = array('PRO_TITLE.CON_LANG', $del . SYS_LANG . $del);
$c->addJoinMC($proTitleConds, Criteria::LEFT_JOIN);
$proTitleConds = array();
$proTitleConds[] = array(ApplicationPeer::PRO_UID, 'PRO_TITLE.CON_ID');
$proTitleConds[] = array('PRO_TITLE.CON_CATEGORY', $del . 'PRO_TITLE' . $del);
$proTitleConds[] = array('PRO_TITLE.CON_LANG', $del . SYS_LANG . $del);
$c->addJoinMC($proTitleConds, Criteria::LEFT_JOIN);
$tasTitleConds = array();
$tasTitleConds[] = array(AppDelegationPeer::TAS_UID, 'TAS_TITLE.CON_ID');
$tasTitleConds[] = array('TAS_TITLE.CON_CATEGORY', $del . 'TAS_TITLE' . $del);
$tasTitleConds[] = array('TAS_TITLE.CON_LANG', $del . SYS_LANG . $del);
$c->addJoinMC($tasTitleConds, Criteria::LEFT_JOIN);
$tasTitleConds = array();
$tasTitleConds[] = array(AppDelegationPeer::TAS_UID, 'TAS_TITLE.CON_ID');
$tasTitleConds[] = array('TAS_TITLE.CON_CATEGORY', $del . 'TAS_TITLE' . $del);
$tasTitleConds[] = array('TAS_TITLE.CON_LANG', $del . SYS_LANG . $del);
$c->addJoinMC($tasTitleConds, Criteria::LEFT_JOIN);
}
$prevConds = array();
$prevConds[] = array(ApplicationPeer::APP_UID, 'APP_PREV_DEL.APP_UID');