feat(oa): 添加项目进度模板类型支持软件开发模板

- 在 OaProjectScheduleBo 中新增 templateType 字段用于区分模板类型
- 根据模板类型动态选择对应的表格数据插入逻辑
- 新增软件类项目进度表格模板数据
- 更新自动化设计表格模板方法名以明确用途
- 添加未知模板类型的异常处理机制
This commit is contained in:
2025-10-23 13:46:30 +08:00
parent 3ebe81fff2
commit ab9d7e55fe
3 changed files with 99 additions and 3 deletions

View File

@@ -72,4 +72,6 @@ public class OaProjectScheduleBo extends BaseEntity {
private String mode;
private List<OaProjectScheduleStepBo> steps;
private String templateType;
}

View File

@@ -31,6 +31,7 @@ import com.ruoyi.oa.mapper.OaProjectScheduleMapper;
import com.ruoyi.oa.service.IOaProjectScheduleService;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -226,7 +227,13 @@ public class OaProjectScheduleServiceImpl implements IOaProjectScheduleService {
if (scheduleId == null) {
throw new RuntimeException("插入项目进度表后未获取到主键");
}
projectScheduleStepService.batchInsertNodes(TableDataConstantUtil.getTableData(), scheduleId);
if (bo.getTemplateType().equals("automation")){
projectScheduleStepService.batchInsertNodes(TableDataConstantUtil.getAutomationTableData(), scheduleId);
}else if (bo.getTemplateType().equals("software")){
projectScheduleStepService.batchInsertNodes(TableDataConstantUtil.getSoftwareTableData(), scheduleId);
}else {
throw new RuntimeException("未知的模板类型,无法插入项目进度节点");
}
Log.info("项目进度节点批量插入成功");
return true;
}

View File

@@ -11,10 +11,11 @@ import java.util.List;
public class TableDataConstantUtil {
/**
* 示例1自动化设计表格数据
* 自动化设计表格数据
* 包含tab节点、一级节点、二级节点、规范说明
*/
public static List<NodeDTO> getTableData() {
//自动化表格模板
public static List<NodeDTO> getAutomationTableData() {
return Arrays.asList(
//自动化设计表
// 技术审查阶段
@@ -367,6 +368,90 @@ public class TableDataConstantUtil {
);
}
//软件表格模板
public static List<NodeDTO> getSoftwareTableData() {
return Arrays.asList(
createNode(
"需求分析",
"需求调研",
"用户访谈、业务场景梳理、现有系统调研",
null
),
createNode(
"需求分析",
"需求梳理",
"功能需求清单编写",
null
),
createNode(
"需求分析",
"需求评审",
"内部评审(团队对齐)、外部评审(客户 / 用户确认、需求文档定稿PRD",
null
),
createNode(
"设计阶段",
"架构设计",
"技术架构选型、系统交互流程图设计、核心模块划分",
null
),
createNode(
"设计阶段",
"数据库设计",
"数据模型设计ER 图)、表结构定义、索引设计",
null
),
createNode(
"设计阶段",
"界面与交互设计",
"UI 设计(原型图 / 视觉稿)、交互逻辑设计、前端页面结构规划",
null
),
createNode(
"开发阶段",
"前端开发",
"技术选型(框架 / 库)、开发环境搭建、页面开发、前端逻辑实现",
null
),
createNode(
"开发阶段",
"后端开发",
"技术栈确定(语言 / 框架)、开发环境搭建、核心业务逻辑开发、数据库交互实现、接口开发",
null
),
createNode(
"开发阶段",
"移动端开发",
"原生 / 跨平台技术选型、开发环境配置、页面开发、原生功能集成(相机 / 定位等)、接口联调",
null
),
createNode(
"测试阶段",
"功能测试",
"单元测试验证、集成测试模块间交互、系统测试全流程功能、回归测试Bug 修复后)",
null
),
createNode(
"部署上线",
"环境准备",
"生产环境配置(服务器 / 数据库 / 中间件)、配置文件梳理、安全合规检查(权限 / 加密等)",
null
),
createNode(
"部署上线",
"部署执行",
"部署脚本编写、版本打包与发布、灰度发布策略(若需)、监控工具部署(日志 / 告警)",
null
),
createNode(
"部署上线",
"上线验证",
"功能冒烟测试、数据一致性校验、性能监控(首小时 / 首日)、回滚方案准备",
null
)
);
}
// /**
// * 示例2机械设计表格数据另一组不同的节点
// */
@@ -400,4 +485,6 @@ public class TableDataConstantUtil {
node.setStepName(secondLevel); // 步骤名=二级节点名(满足非空约束)
return node;
}
}