Merge branch dev/task-147127 of zentao/zentaopms (#10655)
This commit is contained in:
+1
-1
@@ -88,4 +88,4 @@ CREATE TABLE IF NOT EXISTS `zt_deliverablestage` (
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
CREATE UNIQUE INDEX `unique` ON `zt_deliverablestage`(`deliverable`,`stage`);
|
||||
ALTER TABLE `zt_module` ADD `extra` varchar(30) NOT NULL DEFAULT '';
|
||||
ALTER TABLE `zt_module` ADD `extra` varchar(30) NOT NULL DEFAULT '';
|
||||
|
||||
@@ -67,6 +67,8 @@ $lang->tree->groupName = 'Group Name';
|
||||
$lang->tree->parentGroup = 'Parent grpup';
|
||||
$lang->tree->childGroup = 'Child';
|
||||
$lang->tree->confirmDeleteHost = 'Do you want to delete this host and its child hosts?';
|
||||
$lang->tree->designModule = 'Design';
|
||||
$lang->tree->otherModule = 'Other';
|
||||
|
||||
$lang->tree->module = 'Modul';
|
||||
$lang->tree->name = 'Name';
|
||||
|
||||
@@ -67,6 +67,8 @@ $lang->tree->groupName = 'Group Name';
|
||||
$lang->tree->parentGroup = 'Parent grpup';
|
||||
$lang->tree->childGroup = 'Child';
|
||||
$lang->tree->confirmDeleteHost = 'Do you want to delete this host and its child hosts?';
|
||||
$lang->tree->designModule = 'Design';
|
||||
$lang->tree->otherModule = 'Other';
|
||||
|
||||
$lang->tree->module = 'Module';
|
||||
$lang->tree->name = 'Module Name';
|
||||
|
||||
@@ -67,6 +67,8 @@ $lang->tree->groupName = 'Group Name';
|
||||
$lang->tree->parentGroup = 'Parent grpup';
|
||||
$lang->tree->childGroup = 'Child';
|
||||
$lang->tree->confirmDeleteHost = 'Do you want to delete this host and its child hosts?';
|
||||
$lang->tree->designModule = 'Design';
|
||||
$lang->tree->otherModule = 'Other';
|
||||
|
||||
$lang->tree->module = 'Module';
|
||||
$lang->tree->name = 'Nom';
|
||||
|
||||
@@ -67,6 +67,8 @@ $lang->tree->groupName = '分组名称';
|
||||
$lang->tree->parentGroup = '上级分组';
|
||||
$lang->tree->childGroup = '子分组';
|
||||
$lang->tree->confirmDeleteHost = '该分组及子分组都会被删除,您确定删除吗?';
|
||||
$lang->tree->designModule = '设计类';
|
||||
$lang->tree->otherModule = '其他';
|
||||
|
||||
$lang->tree->module = '模块';
|
||||
$lang->tree->name = '模块名称';
|
||||
|
||||
@@ -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' => 'addDefaultDeliverableModule,upgradeDesignToDeliverable');
|
||||
$config->upgrade->execFlow['21_7_3'] = array('functions' => 'addDefaultDeliverableModule,upgradeDesignToDeliverable,upgradeDeliverable');
|
||||
|
||||
if(!empty($config->isINT))
|
||||
{
|
||||
|
||||
+135
-1
@@ -11214,7 +11214,7 @@ class upgradeModel extends model
|
||||
$module = new stdclass();
|
||||
$module->root = $group->id;
|
||||
$module->branch = '0';
|
||||
$module->name = $this->lang->deliverable->designModule;
|
||||
$module->name = $this->lang->tree->designModule;
|
||||
$module->parent = '0';
|
||||
$module->path = '';
|
||||
$module->grade = '1';
|
||||
@@ -11320,4 +11320,138 @@ class upgradeModel extends model
|
||||
$this->dao->update(TABLE_DESIGN)->set('type')->eq($deliverableID)->where('type')->eq($designType)->andWhere('project')->in(array_keys($projectWorkflowGroup[$module->workflowGroup]))->exec();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将通用交付物升级为项目流程下的交付物。
|
||||
* Upgrade deliverable.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function upgradeDeliverable()
|
||||
{
|
||||
$this->app->loadLang('tree');
|
||||
|
||||
$deliverable = new stdClass();
|
||||
$deliverable->status = 'disabled';
|
||||
$deliverable->createdBy = 'system';
|
||||
$deliverable->createdDate = helper::now();
|
||||
|
||||
$deliverableStage = new stdClass();
|
||||
|
||||
$workflowGroups = $this->dao->select('id,deliverable,projectModel,projectType')->from(TABLE_WORKFLOWGROUP)->fetchAll();
|
||||
$deliverableList = $this->dao->select('id,name')->from(TABLE_DELIVERABLE)->where('deleted')->eq('0')->fetchAll('id');
|
||||
$fileList = $this->dao->select('id,title,objectType,objectID')->from(TABLE_FILE)->where('objectType')->eq('deliverable')->fetchAll('objectID');
|
||||
foreach($workflowGroups as $workflowGroup)
|
||||
{
|
||||
$nameFilter = array();
|
||||
$deliverableFilter = array();
|
||||
$sprintFilter = array();
|
||||
$groupDeliverable = !empty($workflowGroup->deliverable) ? json_decode($workflowGroup->deliverable, true) : array();
|
||||
if($groupDeliverable) $otherModule = $this->createOtherModule($workflowGroup->id);
|
||||
|
||||
/* 解析项目流程的交付物配置。 */
|
||||
foreach($groupDeliverable as $stageCode => $methodDeliverable)
|
||||
{
|
||||
foreach($methodDeliverable as $methodCode => $deliverableConfigs)
|
||||
{
|
||||
foreach($deliverableConfigs as $config)
|
||||
{
|
||||
$oldDeliverableID = $config['deliverable'];
|
||||
if(empty($deliverableList[$oldDeliverableID])) continue;
|
||||
|
||||
$oldDeliverable = $deliverableList[$oldDeliverableID];
|
||||
if(empty($deliverableFilter[$oldDeliverable->id]))
|
||||
{
|
||||
$deliverableFile = $fileList[$oldDeliverableID]; // 原交付物只会上传一个附件。
|
||||
$deliverable->workflowGroup = $workflowGroup->id;
|
||||
$deliverable->desc = $oldDeliverable->desc;
|
||||
$deliverable->module = $otherModule;
|
||||
$deliverable->template = $deliverableFile ? '{"new_0":{"name":"' . $deliverableFile->title . '","doc":"","fileID":"' . $deliverableFile->id . '"}}' : '[]';
|
||||
|
||||
/* 重名的交付物名称后面加数字。 */
|
||||
if(!empty($nameFilter[$oldDeliverable->name]))
|
||||
{
|
||||
$deliverable->name = $oldDeliverable->name . $nameFilter[$oldDeliverable->name];
|
||||
$nameFilter[$oldDeliverable->name] ++;
|
||||
}
|
||||
else
|
||||
{
|
||||
$deliverable->name = $oldDeliverable->name;
|
||||
$nameFilter[$oldDeliverable->name] = 1;
|
||||
}
|
||||
|
||||
$this->dao->insert(TABLE_DELIVERABLE)->data($deliverable)->exec();
|
||||
$deliverableID = $this->dao->lastInsertID();
|
||||
$deliverableFilter[$oldDeliverable->id] = $deliverableID;
|
||||
}
|
||||
else
|
||||
{
|
||||
$deliverableID = $deliverableFilter[$oldDeliverable->id];
|
||||
}
|
||||
|
||||
$workflowGroupModel = "{$workflowGroup->projectType}_{$workflowGroup->projectModel}";
|
||||
$deliverableStage->stage = $stageCode == $workflowGroupModel ? 'project' : str_replace("{$workflowGroupModel}_", '', $stageCode);
|
||||
$deliverableStage->required = !empty($config['required']) ? '1' : '0';
|
||||
$deliverableStage->deliverable = $deliverableID;
|
||||
/* 将原来不同类型的迭代合并成一个迭代。 */
|
||||
if(in_array($deliverableStage->stage, array('short', 'long', 'ops', 'kanban')))
|
||||
{
|
||||
$deliverableStage->stage = 'sprint';
|
||||
/* 其中有一个类型是必填的合并后的结果就是必填。 */
|
||||
if(isset($sprintFilter[$deliverableID]) && empty($sprintFilter[$deliverableID]) && !empty($deliverableStage->required))
|
||||
{
|
||||
$this->dao->update(TABLE_DELIVERABLESTAGE)->set('required')->eq('1')->where('deliverable')->eq($deliverableID)->andWhere('stage')->eq('sprint')->exec();
|
||||
}
|
||||
if(!isset($sprintFilter[$deliverableID]))
|
||||
{
|
||||
$this->dao->insert(TABLE_DELIVERABLESTAGE)->data($deliverableStage)->exec();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->dao->insert(TABLE_DELIVERABLESTAGE)->data($deliverableStage)->exec();
|
||||
}
|
||||
$sprintFilter[$deliverableID] = $deliverableStage->required;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 将历史的交付物数据删掉。 */
|
||||
$this->dao->delete()->from(TABLE_DELIVERABLE)->where('id')->in(array_keys($deliverableList))->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* 内置交付物其他分类。
|
||||
* Create other module.
|
||||
*
|
||||
* @param int $workflowGroupID
|
||||
* @access public
|
||||
* @return int
|
||||
*/
|
||||
public function createOtherModule(int $workflowGroupID): int
|
||||
{
|
||||
$module = new stdclass();
|
||||
$module->root = $workflowGroupID;
|
||||
$module->branch = '0';
|
||||
$module->name = $this->lang->tree->otherModule;
|
||||
$module->parent = '0';
|
||||
$module->path = '';
|
||||
$module->grade = '1';
|
||||
$module->order = '0';
|
||||
$module->type = 'deliverable';
|
||||
$module->from = '0';
|
||||
$module->owner = '';
|
||||
$module->collector = null;
|
||||
$module->short = '';
|
||||
$module->extra = 'design';
|
||||
$module->deleted = '0';
|
||||
$this->dao->insert(TABLE_MODULE)->data($module)->exec();
|
||||
|
||||
$moduleID = $this->dao->lastInsertID();
|
||||
$this->dao->update(TABLE_MODULE)->set('path')->eq(",$moduleID,")->where('id')->eq($moduleID)->exec();
|
||||
|
||||
return $moduleID;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user