Merge branch ztflow-xieqiyu-dev/task-144513#xieqiyu of zentao/zentaopms (#9390)

This commit is contained in:
刘刚
2025-06-11 13:18:01 +08:00
committed by Gitfox
11 changed files with 82 additions and 168 deletions
-3
View File
@@ -38,6 +38,3 @@ INSERT INTO `zt_cron` (`m`, `h`, `dom`, `mon`, `dow`, `command`, `remark`, `type
UPDATE `zt_workflowaction` SET `layout` = 'side' WHERE `module` = 'caselib' AND `action` = 'editCase';
UPDATE `zt_workflowlayout` SET `position` = 'info' WHERE `module` = 'caselib' AND `action` = 'editCase';
ALTER TABLE `zt_module` MODIFY COLUMN short varchar(60);
ALTER TABLE `zt_doc` ADD `templateDesc` text NULL AFTER `templateType`;
-3
View File
@@ -1,3 +0,0 @@
INSERT INTO `zt_config` (`vision`, `owner`, `module`, `section`, `key`, `value`) VALUES ('rnd', 'system', 'doc', '', 'builtInScopeMaps', '{"product":0,"project":0,"execution":0,"personal":0}');
INSERT INTO `zt_config` (`vision`, `owner`, `module`, `section`, `key`, `value`) VALUES ('lite', 'system', 'doc', '', 'builtInScopeMaps', '{"project":0,"personal":0}');
INSERT INTO `zt_config` (`vision`, `owner`, `module`, `section`, `key`, `value`) VALUES ('or', 'system', 'doc', '', 'builtInScopeMaps', '{"market":0,"product":0,"personal":0}');
+1
View File
@@ -0,0 +1 @@
ALTER TABLE `zt_doc` ADD `templateDesc` text NULL AFTER `templateType`;
-4
View File
@@ -2581,10 +2581,6 @@ INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('
INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'requirement', '', 'gradeRule', 'stepwise');
INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'epic', '', 'gradeRule', 'stepwise');
INSERT INTO `zt_config` (`vision`, `owner`, `module`, `section`, `key`, `value`) VALUES ('rnd', 'system', 'doc', '', 'builtInScopeMaps', '{"product":0,"project":0,"execution":0,"personal":0}');
INSERT INTO `zt_config` (`vision`, `owner`, `module`, `section`, `key`, `value`) VALUES ('lite', 'system', 'doc', '', 'builtInScopeMaps', '{"project":0,"personal":0}');
INSERT INTO `zt_config` (`vision`, `owner`, `module`, `section`, `key`, `value`) VALUES ('or', 'system', 'doc', '', 'builtInScopeMaps', '{"market":0,"product":0,"personal":0}');
-- DROP TABLE IF EXISTS `zt_relationoftasks`;
CREATE TABLE IF NOT EXISTS `zt_relationoftasks` (
`id` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT ,
+4 -4
View File
@@ -4021,7 +4021,7 @@ class docModel extends model
{
$scopeMaps = $this->setting->getItem("vision={$vision}&owner=system&module=doc&key=builtInScopeMaps");
$scopeMaps = json_decode($scopeMaps, true);
$scopeID = $vision == 'rnd' ? $scopeMaps['project'] : $scopeMaps['product'];
$scopeID = $vision == 'rnd' ? zget($scopeMaps, 'project', 0) : zget($scopeMaps, 'product', 0);
if(!$scopeID) continue;
$parentTypes = array();
@@ -4112,7 +4112,7 @@ class docModel extends model
{
$templateVision = $template->vision;
$templateType = $template->templateType;
$templateScopeID = $templateVision == 'or' ? $orScopeMaps['product'] : $rndScopeMaps['project'];
$templateScopeID = $templateVision == 'or' ? zget($orScopeMaps, 'product', 0) : zget($rndScopeMaps, 'project', 0);
$template->lib = $templateScopeID;
$template->module = $moduleGroup[$templateScopeID][$templateType]->id;
$this->dao->update(TABLE_DOC)->data($template)->where('id')->eq($id)->exec();
@@ -4657,7 +4657,7 @@ class docModel extends model
{
$rndScopeMaps = $this->loadModel('setting')->getItem('vision=rnd&owner=system&module=doc&key=builtInScopeMaps');
$rndScopeMaps = json_decode($rndScopeMaps, true);
$projectScopeID = $rndScopeMaps['project'];
$projectScopeID = zget($rndScopeMaps, 'project', 0);
$modulePairs = $this->dao->select('short,id')->from(TABLE_MODULE)->where('root')->eq($projectScopeID)->andWhere('type')->eq('docTemplate')->fetchPairs('short');
$builtInTemplate = new stdClass();
@@ -4679,7 +4679,7 @@ class docModel extends model
{
/* 创建与分类同名的内置文档模板。*/
/* Add the doc template with the same name as the type. */
$builtInTemplate->module = $modulePairs[$type];
$builtInTemplate->module = zget($modulePairs, $type, 0);
$builtInTemplate->title = $this->lang->baseline->objectList[$type];
$builtInTemplate->templateType = $type;
$this->dao->insert(TABLE_DOC)->data($builtInTemplate)->exec();
+12 -4
View File
@@ -1578,10 +1578,13 @@ class docTest
* @access public
* @return bool
*/
public function upgradeTemplateTypesTest(int $moduleID)
public function upgradeTemplateTypesTest(int $moduleID, string $name)
{
if($this->objectModel->config->edition != 'ipd') return true;
$this->objectModel->upgradeTemplateTypes();
return $this->objectModel->dao->select('*')->from(TABLE_MODULE)->where('id')->eq($moduleID)->fetch();
$moduleName = $this->objectModel->dao->select('name')->from(TABLE_MODULE)->where('id')->eq($moduleID)->fetch('name');
return $moduleName == $name;
}
/**
@@ -1813,15 +1816,20 @@ class docTest
* 添加内置文档模板。
* Add the built-in doc template.
*
* @param int templateID
* @param array typeList
* @param string name
* @access public
* @return void
*/
public function addBuiltInDocTemplateByTypeTest(int $templateID, array $typeList)
public function addBuiltInDocTemplateByTypeTest(int $templateID, array $typeList, string $name)
{
if($this->objectModel->config->edition != 'ipd') return true;
$this->objectModel->addBuiltInScopes();
$this->objectModel->upgradeTemplateTypes();
$this->objectModel->addBuiltInDocTemplateByType($typeList);
return $this->objectModel->dao->select('*')->from(TABLE_DOC)->where('id')->eq($templateID)->orderBy('id_desc')->fetch();
$templateName = $this->objectModel->dao->select('title')->from(TABLE_DOC)->where('id')->eq($templateID)->orderBy('id_desc')->fetch('title');
return $templateName == $name;
}
}
@@ -7,30 +7,14 @@ title=测试 docModel->addBuiltInDocTemplateByType();
timeout=0
cid=1
- 添加内置项目计划模板
- 属性templateType @PP
- 属性title @项目计划
- 添加内置软件需求说明书模板
- 属性templateType @SRS
- 属性title @软件需求规格说明书
- 添加内置概要设计说明书模板
- 属性templateType @HLDS
- 属性title @概要设计说明书
- 添加内置详细设计说明书模板
- 属性templateType @DDS
- 属性title @详细设计说明书
- 添加内置接口设计文档模板
- 属性templateType @ADS
- 属性title @接口设计文档
- 添加内置数据库设计文档模板
- 属性templateType @DBDS
- 属性title @数据库设计文档
- 添加内置集成测试用例模板
- 属性templateType @ITTC
- 属性title @集成测试用例
- 添加内置系统测试用例模板
- 属性templateType @STTC
- 属性title @系统测试用例
- 添加内置项目计划模板 @1
- 添加内置软件需求说明书模板 @1
- 添加内置概要设计说明书模板 @1
- 添加内置详细设计说明书模板 @1
- 添加内置接口设计文档模板 @1
- 添加内置数据库设计文档模板 @1
- 添加内置集成测试用例模板 @1
- 添加内置系统测试用例模板 @1
*/
@@ -44,12 +28,13 @@ zenData('doc')->gen(0);
zenData('doccontent')->gen(0);
zenData('doclib')->gen(0);
zenData('module')->gen(0);
zenData('lang')->gen(0);
$docTester = new docTest();
r($docTester->addBuiltInDocTemplateByTypeTest(1, array('PP'))) && p('templateType,title') && e('PP,项目计划'); // 添加内置项目计划模板
r($docTester->addBuiltInDocTemplateByTypeTest(2, array('SRS'))) && p('templateType,title') && e('SRS,软件需求规格说明书'); // 添加内置软件需求说明书模板
r($docTester->addBuiltInDocTemplateByTypeTest(3, array('HLDS'))) && p('templateType,title') && e('HLDS,概要设计说明书'); // 添加内置概要设计说明书模板
r($docTester->addBuiltInDocTemplateByTypeTest(4, array('DDS'))) && p('templateType,title') && e('DDS,详细设计说明书'); // 添加内置详细设计说明书模板
r($docTester->addBuiltInDocTemplateByTypeTest(5, array('ADS'))) && p('templateType,title') && e('ADS,接口设计文档'); // 添加内置接口设计文档模板
r($docTester->addBuiltInDocTemplateByTypeTest(6, array('DBDS'))) && p('templateType,title') && e('DBDS,数据库设计文档'); // 添加内置数据库设计文档模板
r($docTester->addBuiltInDocTemplateByTypeTest(7, array('ITTC'))) && p('templateType,title') && e('ITTC,集成测试用例'); // 添加内置集成测试用例模板
r($docTester->addBuiltInDocTemplateByTypeTest(8, array('STTC'))) && p('templateType,title') && e('STTC,系统测试用例'); // 添加内置系统测试用例模板
r($docTester->addBuiltInDocTemplateByTypeTest(1, array('PP'), '项目计划')) && p() && e('1'); // 添加内置项目计划模板
r($docTester->addBuiltInDocTemplateByTypeTest(2, array('SRS'), '软件需求规格说明书')) && p() && e('1'); // 添加内置软件需求说明书模板
r($docTester->addBuiltInDocTemplateByTypeTest(3, array('HLDS'), '概要设计说明书')) && p() && e('1'); // 添加内置概要设计说明书模板
r($docTester->addBuiltInDocTemplateByTypeTest(4, array('DDS'), '详细设计说明书')) && p() && e('1'); // 添加内置详细设计说明书模板
r($docTester->addBuiltInDocTemplateByTypeTest(5, array('ADS'), '接口设计文档')) && p() && e('1'); // 添加内置接口设计文档模板
r($docTester->addBuiltInDocTemplateByTypeTest(6, array('DBDS'), '数据库设计文档')) && p() && e('1'); // 添加内置数据库设计文档模板
r($docTester->addBuiltInDocTemplateByTypeTest(7, array('ITTC'), '集成测试用例')) && p() && e('1'); // 添加内置集成测试用例模板
r($docTester->addBuiltInDocTemplateByTypeTest(8, array('STTC'), '系统测试用例')) && p() && e('1'); // 添加内置系统测试用例模板
+15 -84
View File
@@ -7,92 +7,24 @@ title=测试 docModel->upgradeCustomTemplateTypes();
timeout=0
cid=1
- 内置计划
- 属性name @计划
- 属性type @docTemplate
- 属性root @2
- 属性parent @0
- 属性grade @1
- 属性path @,2,
- 内置需求
- 属性name @需求
- 属性type @docTemplate
- 属性root @2
- 属性parent @0
- 属性grade @1
- 属性path @,3,
- 内置设计
- 属性name @设计
- 属性type @docTemplate
- 属性root @2
- 属性parent @0
- 属性grade @1
- 属性path @,4,
- 内置开发
- 属性name @开发
- 属性type @docTemplate
- 属性root @2
- 属性parent @0
- 属性grade @1
- 属性path @,5,
- 内置测试
- 属性name @测试
- 属性type @docTemplate
- 属性root @2
- 属性parent @0
- 属性grade @1
- 属性path @,6,
- 内置说明
- 属性name @说明
- 属性type @docTemplate
- 属性root @2
- 属性parent @0
- 属性grade @1
- 属性path @,7,
- 内置其他
- 属性name @其他
- 属性type @docTemplate
- 属性root @2
- 属性parent @0
- 属性grade @1
- 属性path @,8,
- 自定义模板6
- 属性name @自定义模板6
- 属性type @docTemplate
- 属性root @2
- 属性parent @8
- 属性grade @2
- 属性path @,8,9,
- 内置计划 @1
- 内置需求 @1
- 内置设计 @1
- 内置开发 @1
- 内置测试 @1
- 内置说明 @1
- 内置其他 @1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/doc.unittest.class.php';
zenData('module')->gen(0);
zenData('doc')->loadYaml('template')->gen(20);
zenData('user')->gen(5);
su('admin');
$oldModule = zenData('lang');
$oldModule->id->range('1-10');
$oldModule->module->range('baseline');
$oldModule->section->range('objectList');
$oldModule->system->range(0);
$oldModule->key->range('module1,module2,module3,module4,module5,module6,module7,module8,module9,module10');
$oldModule->value->range('自定义模板1,自定义模板2,自定义模板3,自定义模板4,自定义模板5,自定义模板6,自定义模板7,自定义模板8,自定义模板9,自定义模板10');
$oldModule->gen(10);
$newModule = zenData('module');
$newModule->id->range(1);
$newModule->root->range(2);
$newModule->name->range('项目其他');
$newModule->path->range('`,1,`');
$newModule->grade->range(1);
$newModule->order->range(10);
$newModule->type->range('docTemplate');
$newModule->short->range('Project other');
$newModule->gen(1);
$scope = zenData('config');
$scope->id->range('1-3');
$scope->vision->range('rnd,or,lite');
@@ -104,11 +36,10 @@ $scope->value->range('`{"product":1,"project":2,"execution":3,"personal":4}`,`{"
$scope->gen(3);
$docTester = new docTest();
r($docTester->upgradeTemplateTypesTest(2)) && p('name|type|root|parent|grade|path', '|') && e('计划|docTemplate|2|0|1|,2,'); // 内置计划
r($docTester->upgradeTemplateTypesTest(3)) && p('name|type|root|parent|grade|path', '|') && e('需求|docTemplate|2|0|1|,3,'); // 内置需求
r($docTester->upgradeTemplateTypesTest(4)) && p('name|type|root|parent|grade|path', '|') && e('设计|docTemplate|2|0|1|,4,'); // 内置设计
r($docTester->upgradeTemplateTypesTest(5)) && p('name|type|root|parent|grade|path', '|') && e('开发|docTemplate|2|0|1|,5,'); // 内置开发
r($docTester->upgradeTemplateTypesTest(6)) && p('name|type|root|parent|grade|path', '|') && e('测试|docTemplate|2|0|1|,6,'); // 内置测试
r($docTester->upgradeTemplateTypesTest(7)) && p('name|type|root|parent|grade|path', '|') && e('说明|docTemplate|2|0|1|,7,'); // 内置说明
r($docTester->upgradeTemplateTypesTest(8)) && p('name|type|root|parent|grade|path', '|') && e('其他|docTemplate|2|0|1|,8,'); // 内置其他
r($docTester->upgradeTemplateTypesTest(9)) && p('name|type|root|parent|grade|path', '|') && e('自定义模板6|docTemplate|2|8|2|,8,9,'); // 自定义模板6
r($docTester->upgradeTemplateTypesTest(1, '计划')) && p() && e('1'); // 内置计划
r($docTester->upgradeTemplateTypesTest(2, '需求')) && p() && e('1'); // 内置需求
r($docTester->upgradeTemplateTypesTest(3, '设计')) && p() && e('1'); // 内置设计
r($docTester->upgradeTemplateTypesTest(4, '开发')) && p() && e('1'); // 内置开发
r($docTester->upgradeTemplateTypesTest(5, '测试')) && p() && e('1'); // 内置测试
r($docTester->upgradeTemplateTypesTest(6, '说明')) && p() && e('1'); // 内置说明
r($docTester->upgradeTemplateTypesTest(7, '其他')) && p() && e('1'); // 内置其他
+9
View File
@@ -11162,6 +11162,15 @@ class upgradeModel extends model
$templateType = $this->dao->findByID($templateID)->from(TABLE_DOC)->fetch('templateType');
if(strpos(',HLDS,DDS,DBDS,ADS,ITTC,STTC,SRS,PP,', $templateType) === false) return array();
/* 将带动态区块的模板存入projectReviewDocTemplate配置用来项目评审。*/
/* Save the template with blocks into projectReviewDocTemplate for project review. */
$this->loadModel('setting');
$projectReviewDocTemplate = $this->setting->getItem('vision=rnd&owner=system&module=doc&key=projectReviewDocTemplate');
$projectReviewDocTemplate = json_decode($projectReviewDocTemplate, true);
if(!isset($projectReviewDocTemplate[$templateType])) $projectReviewDocTemplate[$templateType] = array();
$projectReviewDocTemplate[$templateType][$templateID] = $templateID;
$this->setting->setItem("system.doc.projectReviewDocTemplate@rnd", json_encode($projectReviewDocTemplate));
$blockType = $templateType;
if($templateType == 'SRS') $blockType = 'projectStory';
if($templateType == 'PP') $blockType = 'gantt';
@@ -851,15 +851,20 @@ class upgradeTest
* 添加内置文档模板。
* Add the built-in doc template.
*
* @param int $templateID
* @param string $name
* @access public
* @return void
*/
public function addBuiltInDocTemplateTest(int $templateID)
public function addBuiltInDocTemplateTest(int $templateID, string $name)
{
if($this->objectModel->config->edition != 'ipd') return true;
$this->objectModel->loadModel('doc');
$this->objectModel->doc->addBuiltInScopes();
$this->objectModel->doc->upgradeTemplateTypes();
$this->objectModel->addBuiltInDocTemplate();
return $this->objectModel->dao->select('*')->from(TABLE_DOC)->where('id')->eq($templateID)->orderBy('id_desc')->fetch();
$templateName = $this->objectModel->dao->select('title')->from(TABLE_DOC)->where('id')->eq($templateID)->orderBy('id_desc')->fetch('title');
return $templateName == $name;
}
}
@@ -8,30 +8,14 @@ title=测试 upgradeModel->addBuiltInDocTemplate();
timeout=0
cid=1
- 获取内置项目计划模板
- 属性templateType @PP
- 属性title @项目计划
- 获取内置软件需求说明书模板
- 属性templateType @SRS
- 属性title @软件需求规格说明书
- 获取内置概要设计说明书模板
- 属性templateType @HLDS
- 属性title @概要设计说明书
- 获取内置详细设计说明书模板
- 属性templateType @DDS
- 属性title @详细设计说明书
- 获取内置接口设计文档模板
- 属性templateType @ADS
- 属性title @接口设计文档
- 获取内置数据库设计文档模板
- 属性templateType @DBDS
- 属性title @数据库设计文档
- 获取内置集成测试用例模板
- 属性templateType @ITTC
- 属性title @集成测试用例
- 获取内置系统测试用例模板
- 属性templateType @STTC
- 属性title @系统测试用例
- 获取内置项目计划模板 @1
- 获取内置软件需求说明书模板 @1
- 获取内置概要设计说明书模板 @1
- 获取内置详细设计说明书模板 @1
- 获取内置接口设计文档模板 @1
- 获取内置数据库设计文档模板 @1
- 获取内置集成测试用例模板 @1
- 获取内置系统测试用例模板 @1
*/
@@ -45,12 +29,13 @@ zenData('doc')->gen(0);
zenData('doccontent')->gen(0);
zenData('module')->gen(0);
zenData('doclib')->gen(0);
zenData('lang')->gen(0);
$upgrade = new upgradeTest();
r($upgrade->addBuiltInDocTemplateTest(1)) && p('templateType,title') && e('PP,项目计划'); // 获取内置项目计划模板
r($upgrade->addBuiltInDocTemplateTest(2)) && p('templateType,title') && e('SRS,软件需求规格说明书'); // 获取内置软件需求说明书模板
r($upgrade->addBuiltInDocTemplateTest(3)) && p('templateType,title') && e('HLDS,概要设计说明书'); // 获取内置概要设计说明书模板
r($upgrade->addBuiltInDocTemplateTest(4)) && p('templateType,title') && e('DDS,详细设计说明书'); // 获取内置详细设计说明书模板
r($upgrade->addBuiltInDocTemplateTest(5)) && p('templateType,title') && e('ADS,接口设计文档'); // 获取内置接口设计文档模板
r($upgrade->addBuiltInDocTemplateTest(6)) && p('templateType,title') && e('DBDS,数据库设计文档'); // 获取内置数据库设计文档模板
r($upgrade->addBuiltInDocTemplateTest(7)) && p('templateType,title') && e('ITTC,集成测试用例'); // 获取内置集成测试用例模板
r($upgrade->addBuiltInDocTemplateTest(8)) && p('templateType,title') && e('STTC,系统测试用例'); // 获取内置系统测试用例模板
r($upgrade->addBuiltInDocTemplateTest(1, '项目计划')) && p() && e('1'); // 获取内置项目计划模板
r($upgrade->addBuiltInDocTemplateTest(2, '软件需求规格说明书')) && p() && e('1'); // 获取内置软件需求说明书模板
r($upgrade->addBuiltInDocTemplateTest(3, '概要设计说明书')) && p() && e('1'); // 获取内置概要设计说明书模板
r($upgrade->addBuiltInDocTemplateTest(4, '详细设计说明书')) && p() && e('1'); // 获取内置详细设计说明书模板
r($upgrade->addBuiltInDocTemplateTest(5, '接口设计文档')) && p() && e('1'); // 获取内置接口设计文档模板
r($upgrade->addBuiltInDocTemplateTest(6, '数据库设计文档')) && p() && e('1'); // 获取内置数据库设计文档模板
r($upgrade->addBuiltInDocTemplateTest(7, '集成测试用例')) && p() && e('1'); // 获取内置集成测试用例模板
r($upgrade->addBuiltInDocTemplateTest(8, '系统测试用例')) && p() && e('1'); // 获取内置系统测试用例模板