* [task#150205,done,1.5h] finish task.
This commit is contained in:
@@ -112,7 +112,7 @@ $config->upgrade->execFlow['21_6_beta'] = array('functions' => 'processCharter
|
||||
$config->upgrade->execFlow['21_6_1'] = array('xxsqls' => "$appRoot/db/upgradexuanxuan9.1.2.sql");
|
||||
$config->upgrade->execFlow['21_7'] = array('functions' => 'fixWorkflowNameForExecution');
|
||||
$config->upgrade->execFlow['21_7_1'] = array('functions' => 'convertCharset,processActionProduct');
|
||||
$config->upgrade->execFlow['21_7_3'] = array('functions' => 'upgradeProcessAndActivity,addDefaultDeliverableModule,upgradeDesignToDeliverable,buildinTestcaseStageDeliverable,upgradeDeliverable,buildinBaselineReview,upgradeReviewclCategory,upgradeBaselineObjects,upgradeReviewToDeliverable,modifyProjectWorkflowGroup');
|
||||
$config->upgrade->execFlow['21_7_3'] = array('functions' => 'modifyProjectWorkflowGroup,upgradeProcessAndActivity,addDefaultDeliverableModule,upgradeDesignToDeliverable,buildinTestcaseStageDeliverable,upgradeDeliverable,buildinBaselineReview,upgradeReviewclCategory,upgradeBaselineObjects,upgradeReviewToDeliverable');
|
||||
|
||||
if(!empty($config->isINT))
|
||||
{
|
||||
|
||||
+59
-39
@@ -11858,6 +11858,65 @@ class upgradeModel extends model
|
||||
return $docID;
|
||||
}
|
||||
|
||||
/**
|
||||
* 之前IPD、融合瀑布使用的是瀑布项目流程,融合敏捷使用的是敏捷项目流程。现在统一使用自己的项目流程。
|
||||
* Before IPD, fusion waterfall uses the waterfall project workflow, and fusion agile uses the agile project workflow. Now use the own project workflow.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function modifyProjectWorkflowGroup()
|
||||
{
|
||||
if(!in_array($this->config->edition, array('ipd', 'max'))) return; // 开源版、企业版没有项目流程
|
||||
|
||||
$projectGroup = $this->dao->select('id,workflowGroup,model,category,hasProduct')->from(TABLE_PROJECT)->where('model')->in('ipd,waterfallplus,agileplus')->andWhere('deleted')->eq('0')->fetchGroup('workflowGroup', 'id');
|
||||
$workflows = $this->dao->select('*')->from(TABLE_WORKFLOWGROUP)->where('id')->in(array_keys($projectGroup))->fetchAll('id');
|
||||
|
||||
$tableList = array(
|
||||
TABLE_WORKFLOW,
|
||||
TABLE_WORKFLOWFIELD,
|
||||
TABLE_WORKFLOWACTION,
|
||||
TABLE_WORKFLOWLABEL,
|
||||
TABLE_WORKFLOWLAYOUT,
|
||||
TABLE_WORKFLOWUI
|
||||
);
|
||||
|
||||
$this->loadModel('project');
|
||||
$codeWorkflowPairs = array();
|
||||
foreach($workflows as $workflow)
|
||||
{
|
||||
$projects = $projectGroup[$workflow->id];
|
||||
foreach($projects as $project)
|
||||
{
|
||||
$hasProduct = $project->hasProduct ? 'product' : 'project';
|
||||
$code = $project->model == 'ipd' ? $project->category . $hasProduct : $project->model . $hasProduct;
|
||||
|
||||
unset($workflow->id);
|
||||
if(isset($codeWorkflowPairs[$code]))
|
||||
{
|
||||
$this->dao->update(TABLE_PROJECT)->set('workflowGroup')->eq($codeWorkflowPairs[$code])->where('id')->eq($project->id)->exec();
|
||||
continue;
|
||||
}
|
||||
|
||||
$workflow->createdDate = helper::now();
|
||||
$workflow->projectModel = $project->model;
|
||||
$workflow->code = $code;
|
||||
$workflow->editedDate = null;
|
||||
|
||||
$this->dao->insert(TABLE_WORKFLOWGROUP)->data($workflow)->exec();
|
||||
$newWorkflowGroupID = $this->dao->lastInsertId();
|
||||
$this->dao->update(TABLE_PROJECT)->set('workflowGroup')->eq($newWorkflowGroupID)->where('id')->eq($project->id)->exec();
|
||||
|
||||
foreach($tableList as $table)
|
||||
{
|
||||
$this->project->copyWorkflow($project->workflowGroup, $newWorkflowGroupID, $table);
|
||||
}
|
||||
|
||||
$codeWorkflowPairs[$code] = $newWorkflowGroupID;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 升级流程和活动, 将流程和活动中的数据迁移到流程中。
|
||||
* Upgrade process and activity.
|
||||
@@ -12234,43 +12293,4 @@ class upgradeModel extends model
|
||||
|
||||
$this->dao->exec('ALTER TABLE ' . TABLE_REVIEW . ' DROP `doc`');
|
||||
}
|
||||
|
||||
/**
|
||||
* 之前IPD、融合瀑布使用的是瀑布项目流程,融合敏捷使用的是敏捷项目流程。现在统一使用自己的项目流程。
|
||||
* Before IPD, fusion waterfall uses the waterfall project workflow, and fusion agile uses the agile project workflow. Now use the own project workflow.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function modifyProjectWorkflowGroup()
|
||||
{
|
||||
$workflows = $this->dao->select('id,code,projectModel')->from(TABLE_WORKFLOWGROUP)->where('projectModel')->in('ipd,waterfallplus,agileplus')->andWhere('main')->eq('1')->fetchAll('id');
|
||||
|
||||
foreach($workflows as $workflow)
|
||||
{
|
||||
$hasProduct = strpos($workflow->code, 'product') !== false ? '1' : '0';
|
||||
if($workflow->projectModel == 'ipd')
|
||||
{
|
||||
$category = $hasProduct ? str_replace('product', '', $workflow->code) : str_replace('project', '', $workflow->code);
|
||||
$category = strtoupper($category);
|
||||
|
||||
$this->dao->update(TABLE_PROJECT)
|
||||
->set('workflowGroup')->eq($workflow->id)
|
||||
->where('model')->eq($workflow->projectModel)
|
||||
->andWhere('category')->eq($category)
|
||||
->andWhere('hasProduct')->eq($hasProduct)
|
||||
->andWhere('workflowGroup')->in(array_keys($workflows))
|
||||
->exec();
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->dao->update(TABLE_PROJECT)
|
||||
->set('workflowGroup')->eq($workflow->id)
|
||||
->where('model')->eq($workflow->projectModel)
|
||||
->andWhere('hasProduct')->eq($hasProduct)
|
||||
->andWhere('workflowGroup')->in(array_keys($workflows))
|
||||
->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user