* Supports cross-version upgrade.

This commit is contained in:
tanghucheng
2023-07-19 13:40:46 +08:00
parent f4821a23f3
commit 76d968df0a
5 changed files with 201 additions and 12 deletions
+171
View File
@@ -0,0 +1,171 @@
CREATE TABLE `zt_demandpool` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`desc` mediumtext NOT NULL,
`status` char(30) NOT NULL,
`createdBy` char(30) NOT NULL,
`createdDate` date NOT NULL,
`owner` text NOT NULL,
`reviewer` text NOT NULL,
`acl` char(30) NOT NULL,
`deleted` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `zt_demand` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`pool` int(8) NOT NULL,
`module` int(8) NOT NULL,
`product` mediumint(8) NOT NULL,
`parent` mediumint(8) NOT NULL,
`pri` char(30) NOT NULL,
`category` char(30) NOT NULL,
`source` char(30) NOT NULL,
`sourceNote` varchar(255) NOT NULL,
`title` varchar(255) NOT NULL,
`feedbackedBy` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`assignedTo` char(30) NOT NULL,
`assignedDate` datetime NOT NULL,
`reviewedBy` text NOT NULL,
`reviewedDate` datetime NOT NULL,
`status` char(30) NOT NULL,
`duration` char(30) NOT NULL,
`BSA` char(30) NOT NULL,
`story` mediumint(8) NOT NULL,
`roadmap` mediumint(8) NOT NULL,
`createdBy` char(30) NOT NULL,
`createdDate` datetime NOT NULL,
`mailto` text NOT NULL,
`duplicateDemand` mediumint(8) NOT NULL,
`childDemands` varchar(255) NOT NULL,
`version` varchar(255) NOT NULL,
`vision` varchar(255) NOT NULL DEFAULT 'or',
`color` varchar(255) NOT NULL,
`changedBy` char(30) NOT NULL,
`changedDate` datetime NOT NULL,
`closedBy` char(30) NOT NULL,
`closedDate` datetime NOT NULL,
`closedReason` varchar(30) NOT NULL,
`submitedBy` varchar(30) NOT NULL,
`lastEditedBy` varchar(30) NOT NULL DEFAULT '',
`lastEditedDate` datetime NOT NULL,
`activatedDate` datetime NOT NULL,
`distributedBy` varchar(30) NOT NULL DEFAULT '',
`distributedDate` datetime NOT NULL,
`deleted` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `zt_demandspec` (
`demand` mediumint(9) NOT NULL,
`version` smallint(6) NOT NULL,
`title` varchar(255) NOT NULL,
`spec` mediumtext NOT NULL,
`verify` mediumtext NOT NULL,
`files` text NOT NULL,
UNIQUE KEY `demand` (`demand`,`version`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `zt_demandreview` (
`demand` mediumint(9) NOT NULL,
`version` smallint(6) NOT NULL,
`reviewer` varchar(30) NOT NULL,
`result` varchar(30) NOT NULL,
`reviewDate` datetime NOT NULL,
UNIQUE KEY `demand` (`demand`,`version`,`reviewer`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `zt_charter` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`level` int(8) NOT NULL,
`category` char(30) NOT NULL,
`market` varchar(30) NOT NULL,
`appliedBy` char(30) NOT NULL,
`appliedDate` datetime NOT NULL,
`budget` char(30) NOT NULL,
`budgetUnit` char(30) NOT NULL,
`product` mediumint(8) NOT NULL,
`roadmap` mediumint(8) NOT NULL,
`spec` mediumtext NOT NULL,
`status` char(30) NOT NULL,
`createdBy` char(30) NOT NULL,
`createdDate` datetime NOT NULL,
`charterFiles` text NOT NULL,
`reviewedBy` char(30) NOT NULL,
`reviewedResult` char(30) NOT NULL,
`reviewedDate` datetime NOT NULL,
`meetingDate` date NOT NULL,
`meetingLocation` varchar(255) NOT NULL,
`meetingMinutes` mediumtext NOT NULL,
`deleted` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
REPLACE INTO `zt_config` (`vision`, `owner`, `module`, `section`, `key`, `value`) VALUES ('or', 'system', 'demand', '', 'reviewRules', 'allpass');
REPLACE INTO `zt_config` (`vision`, `owner`, `module`, `section`, `key`, `value`) VALUES ('or', 'system', 'demand', '', 'needReview', 1);
ALTER TABLE `zt_story` ADD `BSA` char(30) NOT NULL AFTER `notifyEmail`;
ALTER TABLE `zt_story` ADD `duration` char(30) NOT NULL AFTER `notifyEmail`;
ALTER TABLE `zt_story` ADD `demand` mediumint(8) NOT NULL AFTER `notifyEmail`;
ALTER TABLE `zt_product` ADD `PMT` text COLLATE 'utf8_general_ci' NOT NULL AFTER `reviewer`;
ALTER TABLE `zt_story` ADD `submitedBy` varchar(30) NOT NULL AFTER `changedDate`;
ALTER TABLE `zt_story` ADD `roadmap` VARCHAR(255) NOT NULL DEFAULT '' AFTER `plan`;
ALTER TABLE `zt_charter` ADD `check` enum('0','1') NOT NULL DEFAULT '0';
ALTER TABLE `zt_charter` modify column reviewedBy varchar(255);
CREATE TABLE `zt_roadmap` (
`id` mediumint(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`product` mediumint(8) NOT NULL,
`branch` mediumint(8) NOT NULL,
`name` varchar(255) NOT NULL,
`status` char(30) NOT NULL,
`begin` date NOT NULL,
`end` date NOT NULL,
`desc` longtext NOT NULL,
`createdBy` char(30) NOT NULL,
`createdDate` date NOT NULL,
`closedBy` char(30) NOT NULL,
`closedDate` datetime NOT NULL,
`closedReason` enum('done','canceled') DEFAULT NULL;
`deleted` enum('0','1') NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `zt_roadmapstory` (
`roadmap` mediumint(8) unsigned NOT NULL,
`story` mediumint(8) unsigned NOT NULL,
`order` MEDIUMINT UNSIGNED NOT NULL,
UNIQUE KEY `roadmap_story` (`roadmap`,`story`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `zt_story` MODIFY `status` enum('','changing','active','draft','closed','reviewing','launched','developing') NOT NULL DEFAULT '' AFTER `estimate`;
ALTER TABLE `zt_project`
ADD `charter` mediumint(8) NOT NULL DEFAULT 0 AFTER `project`,
ADD `category` char(30) COLLATE 'utf8_general_ci' NOT NULL AFTER `type`;
REPLACE INTO `zt_stage` (`name`, `percent`, `type`, `projectType`, `createdBy`, `createdDate`, `editedBy`, `editedDate`, `deleted`) VALUES
('概念', '10', 'concept', 'ipd', 'admin', '2020-02-08 21:08:30', 'admin', '2020-02-12 13:50:27', '0'),
('计划', '10', 'plan', 'ipd', 'admin', '2020-02-08 21:08:30', 'admin', '2020-02-12 13:50:27', '0'),
('开发', '50', 'develop', 'ipd', 'admin', '2020-02-08 21:08:30', 'admin', '2020-02-12 13:50:27', '0'),
('验证', '15', 'qualify', 'ipd', 'admin', '2020-02-08 21:08:30', 'admin', '2020-02-12 13:50:27', '0'),
('发布', '10', 'launch', 'ipd', 'admin', '2020-02-08 21:08:30', 'admin', '2020-02-12 13:50:27', '0'),
('全生命周期', '5', 'lifecycle', 'ipd', 'admin', '2020-02-08 21:08:45', 'admin', '2020-02-12 13:50:27', '0');
ALTER TABLE `zt_review` ADD `begin` date NULL AFTER `createdDate`;
ALTER TABLE `zt_review` MODIFY `doc` varchar(255);
ALTER TABLE `zt_review` MODIFY `docVersion` varchar(255);
ALTER TABLE `zt_object` ADD `end` date NULL AFTER `designEst`;
ALTER TABLE `zt_roadmap` ADD `closedReason` enum('done','canceled') DEFAULT NULL AFTER `closedDate`;
ALTER TABLE `zt_charter` ADD `closedBy` char(30) NULL;
ALTER TABLE `zt_charter` ADD `closedDate` datetime NULL;
ALTER TABLE `zt_charter` ADD `closedReason` varchar(255) NULL;
ALTER TABLE `zt_charter` ADD `activatedBy` char(30) NULL;
ALTER TABLE `zt_charter` ADD `activatedDate` datetime NULL;
UPDATE `zt_priv` SET `vision` = ',rnd,or,' WHERE `module` = 'requirement' AND `method` = 'import';
UPDATE `zt_priv` SET `vision` = ',rnd,or,' WHERE `module` = 'requirement' AND `method` = 'exportTemplate';
+1 -1
View File
@@ -5321,9 +5321,9 @@ class executionModel extends model
$title = '';
$disabled = '';
$this->app->loadLang('stage');
if($project and $project->model == 'ipd' and !$isChild)
{
$this->app->loadLang('stage');
$title = $execution->ipdStage['canStart'] ? '' : sprintf($this->lang->execution->disabledTip->startTip, $this->lang->stage->ipdTypeList[$execution->ipdStage['preAttribute']], $this->lang->stage->ipdTypeList[$execution->attribute]);
$disabled = $execution->ipdStage['canStart'] ? '' : 'disabled';
}
-2
View File
@@ -92,10 +92,8 @@ js::set('isIntranet', helper::isIntranet());
<?php else:?>
<?php $version = $config->version;?>
<?php $versionName = $lang->pmsName . $config->version;?>
<?php if($config->systemMode != 'PLM'):?>
<a href='javascript:void(0)' id='bizLink' class='btn btn-link' style='color: #B57D4F;'><span class='upgrade'><?php echo $lang->bizName;?></span> <i class='text-danger icon-pro-version'></i></a>
<?php endif;?>
<?php endif;?>
<a href='<?php echo $lang->website;?>' class="btn btn-sm btn-link" target='_blank' title='<?php echo $version;?>'>
<i class="icon icon-zentao" style="font-size: 24px;"></i>
<span class='version'><?php echo $versionName;?></span>
-8
View File
@@ -96,14 +96,6 @@ class upgrade extends control
$this->config->version = ($this->config->edition == 'biz' ? 'LiteVIP' : 'Lite') . $this->config->liteVersion;
}
if($this->config->edition == 'ipd')
{
foreach($this->lang->upgrade->fromVersions as $key => $value)
{
if(strpos($key, 'ipd') === false) unset($this->lang->upgrade->fromVersions[$key]);
}
}
if($_POST) return print(js::locate(helper::createLink('upgrade', 'confirm', "fromVersion={$this->post->fromVersion}")));
$this->view->title = $this->lang->upgrade->common . $this->lang->colon . $this->lang->upgrade->selectVersion;
+29 -1
View File
@@ -43,7 +43,7 @@ class upgradeModel extends model
{
if(!is_numeric($version[0])) continue;
if(version_compare(str_replace('_', '.', $version), str_replace('_', '.', $openVersion)) < 0) continue;
$versions[$version] = array('pro' => array(), 'biz' => array(), 'max' => array());
$versions[$version] = array('pro' => array(), 'biz' => array(), 'max' => array(), 'ipd' => array());
}
if($fromEdition == 'open') return $versions;
@@ -67,6 +67,11 @@ class upgradeModel extends model
if(isset($versions[$open])) $versions[$open]['max'][] = $max;
}
/* Update ipd sql only from ipd. */
foreach($this->config->upgrade->ipdVersion as $ipd => $open)
{
if(isset($versions[$open])) $versions[$open]['ipd'][] = $ipd;
}
return $versions;
}
@@ -126,6 +131,15 @@ class upgradeModel extends model
$this->execSQL($this->getUpgradeFile(str_replace('_', '.', $maxVersion)));
$this->executeMax($maxVersion);
}
/* Execute ipd. */
foreach($chargedVersions['ipd'] as $ipdVersion)
{
$ipdVersion = array_search($openVersion, $this->config->upgrade->ipdVersion);
$this->saveLogs("Execute $ipdVersion");
$this->execSQL($this->getUpgradeFile(str_replace('_', '.', $ipdVersion)));
$this->executeIpd($ipdVersion);
}
}
/* Means open source/pro upgrade to biz or max. */
@@ -656,6 +670,9 @@ class upgradeModel extends model
$this->fixMissedFlowField();
}
break;
case '18_5':
$this->execSQL($this->getUpgradeFile('ipdinstall'));
break;
}
$this->deletePatch();
@@ -814,6 +831,17 @@ class upgradeModel extends model
}
}
/**
* Process data for ipd.
*
* @param int $ipdVersion
* @access public
* @return void
*/
public function executeIpd($ipdVersion)
{
}
/**
* Create the confirm contents.
*