* [task#154095] Upgrade report template objects.

This commit is contained in:
xieqiyu
2025-12-18 05:11:44 +00:00
parent e77a0ad59b
commit fdcc4e228c
3 changed files with 72 additions and 2 deletions
+1 -1
View File
@@ -147,7 +147,7 @@ if($config->edition != 'open')
$config->upgrade->execFlow['18_3']['functions'] .= ',processDataset,processChart,processReport,processDashboard';
$config->upgrade->execFlow['18_4_beta1']['functions'] = 'processDeployStepAction,updateBISQL,updatePivotStage';
$config->upgrade->execFlow['20_4']['functions'] .= ',updateTaskRelationPriv';
$config->upgrade->execFlow['21_7_8']['functions'] .= ',modifyProjectWorkflowGroup,upgradeAuditcl,upgradeProcessAndActivity,addWorkflowGroupOtherActivity,addDefaultDeliverableModule,upgradeDesignToDeliverable,buildinTestcaseStageDeliverable,upgradeDeliverable,buildinBaselineReview,upgradeReviewclCategory,upgradeBaselineObjects,upgradeReviewToDeliverable,upgradeBaseline,addDeliverablePrivs,upgradeStageAndPoint,upgradeObjectOfDecision,upgradeClosedFeature,parseDocFetcherURL,updateWorkflowGroupPriv';
$config->upgrade->execFlow['21_7_8']['functions'] .= ',modifyProjectWorkflowGroup,upgradeAuditcl,upgradeProcessAndActivity,addWorkflowGroupOtherActivity,addDefaultDeliverableModule,upgradeDesignToDeliverable,buildinTestcaseStageDeliverable,upgradeDeliverable,buildinBaselineReview,upgradeReviewclCategory,upgradeBaselineObjects,upgradeReviewToDeliverable,upgradeBaseline,addDeliverablePrivs,upgradeStageAndPoint,upgradeObjectOfDecision,upgradeClosedFeature,parseDocFetcherURL,updateWorkflowGroupPriv,upgradeReportTemplateObjects';
}
if(in_array($this->config->edition, array('max', 'ipd'))) $config->upgrade->execFlow['18_7']['functions'] = 'processOldMetrics,processHistoryDataForMetric,metric-updateMetricDate';
+70
View File
@@ -12012,6 +12012,7 @@ class upgradeModel extends model
$this->loadModel('project');
$codeWorkflowPairs = array();
$oldNewFlowPairs = array();
foreach($workflows as $workflow)
{
$projects = $projectGroup[$workflow->id];
@@ -12050,10 +12051,32 @@ class upgradeModel extends model
$this->project->copyWorkflow($project->workflowGroup, $newWorkflowGroupID, $table);
}
if(!isset($oldNewFlowPairs[$oldWorkflowGroupID])) $oldNewFlowPairs[$oldWorkflowGroupID] = array();
$oldNewFlowPairs[$oldWorkflowGroupID][] = $newWorkflowGroupID;
$codeWorkflowPairs[$code][$oldWorkflowGroupID] = $newWorkflowGroupID;
$index++;
}
}
/* 处理报告模板的适用流程。*/
$reportTemplateList = $this->dao->select('id,objects')->from(TABLE_DOC)->where('templateType')->eq('reportTemplate')->fetchPairs('id');
foreach($reportTemplateList as $templateID => $objects)
{
$newObjects = array();
$objectIdList = array_filter(explode(',', $objects));
foreach($objectIdList as $objectID)
{
$newObjects[] = $objectID;
if(!isset($oldNewFlowPairs[$objectID])) continue;
$newObjects = array_merge($newObjects, $oldNewFlowPairs[$objectID]);
}
if(!empty($newObjects))
{
$newObjectList = implode(',', array_filter(array_unique($newObjects)));
$this->dao->update(TABLE_DOC)->set('objects')->eq($newObjectList)->where('id')->eq($templateID)->exec();
}
}
}
/**
@@ -13061,4 +13084,51 @@ class upgradeModel extends model
return true;
}
/**
* 处理报告模板中内置的适用流程。
* Upgrade report template objects.
*
* @access public
* @return bool
*/
public function upgradeReportTemplateObjects(): bool
{
$templateList = $this->dao->select('id,objects')->from(TABLE_DOC)->where('templateType')->eq('reportTemplate')->fetchPairs('id');
$workflowList = $this->dao->select('id,projectModel,projectType')->from(TABLE_WORKFLOWGROUP)->where('main')->eq('1')->fetchAll('id');
$flowGroup = array();
foreach($workflowList as $flowID => $flow)
{
if(!isset($flowGroup[$flow->projectModel])) $flowGroup[$flow->projectModel] = array();
if(!isset($flowGroup[$flow->projectModel][$flow->projectType])) $flowGroup[$flow->projectModel][$flow->projectType] = array();
$flowGroup[$flow->projectModel][$flow->projectType][] = $flowID;
}
foreach($templateList as $templateID => $objects)
{
$newObjects = array();
$objectIdList = array_filter(explode(',', $objects));
foreach($objectIdList as $objectID)
{
$newObjects[] = $objectID;
if(!isset($workflowList[$objectID])) continue;
$projectModel = $workflowList[$objectID]->projectModel;
$projectType = $workflowList[$objectID]->projectType;
if($projectModel == 'scrum' && $projectType == 'product') $newObjects = array_merge($newObjects, $flowGroup['agileplus']['product']);
if($projectModel == 'scrum' && $projectType == 'project') $newObjects = array_merge($newObjects, $flowGroup['agileplus']['project']);
if($projectModel == 'waterfall' && $projectType == 'product') $newObjects = array_merge($newObjects, $flowGroup['waterfallplus']['product'], $flowGroup['ipd']['ipd'], $flowGroup['ipd']['tpd'], $flowGroup['ipd']['cbb'], $flowGroup['ipd']['cpdproduct']);
if($projectModel == 'waterfall' && $projectType == 'project') $newObjects = array_merge($newObjects, $flowGroup['waterfallplus']['project'], $flowGroup['ipd']['cpdproject']);
}
if(!empty($newObjects))
{
$newObjectList = implode(',', array_filter(array_unique($newObjects)));
$this->dao->update(TABLE_DOC)->set('objects')->eq($newObjectList)->where('id')->eq($templateID)->exec();
}
}
return true;
}
}
+1 -1
View File
@@ -703,7 +703,7 @@ class weeklyModel extends model
$now = helper::now();
$cycleConfig = array('turnon' => 'on', 'frequency' => 'week', 'acl' => 'open', 'readGroups' => '', 'readUsers' => '', 'groups' => '', 'users' => '');
$objects = $this->dao->select('id')->from(TABLE_WORKFLOWGROUP)->where('type')->eq('project')->andWhere('projectModel')->eq('waterfall')->andWhere('status')->eq('normal')->andWhere('vision')->eq($this->config->vision)->andWhere('objectID')->eq(0)->andWhere('deleted')->eq(0)->fetchPairs('id');
$objects = $this->dao->select('id')->from(TABLE_WORKFLOWGROUP)->where('type')->eq('project')->andWhere('projectModel')->in('waterfall,waterfallplus,ipd')->andWhere('status')->eq('normal')->andWhere('vision')->eq($this->config->vision)->andWhere('objectID')->eq(0)->andWhere('deleted')->eq(0)->fetchPairs('id');
$template = new stdclass();
$template->lib = $libID;