diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/dto/NodeDTO.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/dto/NodeDTO.java index b2fb8a3..337e88c 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/dto/NodeDTO.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/dto/NodeDTO.java @@ -9,4 +9,5 @@ public class NodeDTO { private String secondLevelNode; // 二级节点 private String stepName; // 步骤名称(非空,建议与二级节点名一致) private String specification; // 规范说明(新增字段) + private Integer sortNum; } \ No newline at end of file diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectScheduleStepServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectScheduleStepServiceImpl.java index fadea2d..1d28af0 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectScheduleStepServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectScheduleStepServiceImpl.java @@ -257,6 +257,7 @@ public class OaProjectScheduleStepServiceImpl implements IOaProjectScheduleStepS step.setScheduleId(scheduleId); // 所属项目进度ID(非空,外部传入) step.setStepOrder((long) stepOrder.getAndIncrement()); // 步骤序号(非空,递增生成) step.setStepName(node.getStepName());// 步骤名称(非空,从NodeDTO获取,建议用二级节点名) + step.setSortNum(node.getSortNum()); return step; }).collect(Collectors.toList()); diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/utils/TableDataConstantUtil.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/utils/TableDataConstantUtil.java index 95fcf2d..ef07e6d 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/utils/TableDataConstantUtil.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/utils/TableDataConstantUtil.java @@ -23,31 +23,36 @@ public class TableDataConstantUtil { "自动化设计", // tab节点 "一、技术审查", // 一级节点 "接地系统图", // 二级节点 - null // 规范说明 + null, // 规范说明, + 1 ), createNode( "自动化设计", "一、技术审查", "传动单线图", - null + null, + 2 ), createNode( "自动化设计", "一、技术审查", "MCC单线图", - null + null, + 3 ), createNode( "自动化设计", "一、技术审查", "变压器清单", - null + null, + 4 ), createNode( "自动化设计", "一、技术审查", "电气室布置图", - null + null, + 5 ), // 自动化设计阶段 @@ -55,25 +60,29 @@ public class TableDataConstantUtil { "自动化设计", "一、技术审查", "操作台面板布置图", - null + null, + 6 ), createNode( "自动化设计", "二、自动化设计", "马达元器件检测清单", - null + null, + 1 ), createNode( "自动化设计", "二、自动化设计", "自动化网络配置图", - null + null, + 2 ), createNode( "自动化设计", "二、自动化设计", "图纸详细设计完成", - null + null, + 3 ), //程序设计提资完成 @@ -81,31 +90,36 @@ public class TableDataConstantUtil { "自动化设计", "三、程序开发", "功能说明书", - null + null, + 1 ), createNode( "自动化设计", "三、程序开发", "程序设计", - null + null, + 2 ), createNode( "自动化设计", "三、程序开发", "程序仿真", - null + null, + 3 ), createNode( "自动化设计", "三、程序开发", "程序在线测试", - null + null, + 4 ), createNode( "自动化设计", "三、程序开发", "画面设计", - null + null, + 5 ), //现场调试 @@ -113,19 +127,22 @@ public class TableDataConstantUtil { "自动化设计", "四、现场调试", "单动", - null + null, + 1 ), createNode( "自动化设计", "四、现场调试", "传动优化", - null + null, + 2 ), createNode( "自动化设计", "四、现场调试", "联动", - null + null, + 3 ), //考核验证通过 @@ -133,7 +150,8 @@ public class TableDataConstantUtil { "自动化设计", "五、项目收尾", null, - null + null, + 1 ), //采购,库房表 @@ -142,31 +160,36 @@ public class TableDataConstantUtil { "采购、库房", "一、一次配线", "采购审核", - "接收由项目部或技术部发出的、经过审核的《物料清单(BOM)》及技术规范,并对其进行采购可行性(品牌、货期、替代品、成本)评审。" + "接收由项目部或技术部发出的、经过审核的《物料清单(BOM)》及技术规范,并对其进行采购可行性(品牌、货期、替代品、成本)评审。", + 1 ), createNode( "采购、库房", "一、一次配线", "采购计划与询价、定标", - "根据项目计划制定《采购作业计划》,向合格供应商进行询价、比价、议价,并最终确定供应商,提交审批。" + "根据项目计划制定《采购作业计划》,向合格供应商进行询价、比价、议价,并最终确定供应商,提交审批。", + 2 ), createNode( "采购、库房", "一、一次配线", "采购订单下达与合同签订", - "向选定的供应商下达正式《采购订单》或签订《采购合同》,明确物料规格、数量、价格、交期、付款方式、验收标准等所有细节。" + "向选定的供应商下达正式《采购订单》或签订《采购合同》,明确物料规格、数量、价格、交期、付款方式、验收标准等所有细节。", + 3 ), createNode( "采购、库房", "一、一次配线", "采购过程跟催与交期确认", - "主动、定期地与供应商沟通,跟踪生产/备货进度,确认并确保物料能按承诺日期送达。这是应对长周期物料和避免延期的最关键节点。" + "主动、定期地与供应商沟通,跟踪生产/备货进度,确认并确保物料能按承诺日期送达。这是应对长周期物料和避免延期的最关键节点。", + 4 ), createNode( "采购、库房", "一、一次配线", "到货报验与问题处理", - "物料到达后,采购员协同库房、质检员(IQC)对物料进行数量、外观、型号规格的初步核对,并处理任何与订单不符的问题(如数量短缺、型号错误、损坏等)。" + "物料到达后,采购员协同库房、质检员(IQC)对物料进行数量、外观、型号规格的初步核对,并处理任何与订单不符的问题(如数量短缺、型号错误、损坏等)。", + 5 ), // 二、库房管理节点 阶段 @@ -174,19 +197,22 @@ public class TableDataConstantUtil { "采购、库房", "二、库房管理节点", "进货检验(IQC)", - "质检人员根据检验标准和物料清单,对送达的物料进行质量检验,包括功能测试、电气参数测量、证件核查等。" + "质检人员根据检验标准和物料清单,对送达的物料进行质量检验,包括功能测试、电气参数测量、证件核查等。", + 1 ), createNode( "采购、库房", "二、库房管理节点", "物料入库与上架", - "对通过IQC检验的合格物料,办理正式入库手续,包括系统数据录入、贴码、分类,并放置到指定货位。" + "对通过IQC检验的合格物料,办理正式入库手续,包括系统数据录入、贴码、分类,并放置到指定货位。", + 2 ), createNode( "采购、库房", "二、库房管理节点", "生产领料与发料(齐套性检查)", - "根据生产任务单和BOM,为车间准备所需物料。关键环节是进行“齐套性检查”,即确认一个订单所需的所有物料是否均已备齐,避免生产线因缺料停滞。" + "根据生产任务单和BOM,为车间准备所需物料。关键环节是进行“齐套性检查”,即确认一个订单所需的所有物料是否均已备齐,避免生产线因缺料停滞。", + 3 ), createNode( "采购、库房", @@ -195,7 +221,8 @@ public class TableDataConstantUtil { "定期(如月度、季度)\n" + "对在库物料进行全面盘点,\n" + "确保账、物、卡一致。\n" + - "同时对关键物料设置最低库存预警,触发补货机制。\n" + "同时对关键物料设置最低库存预警,触发补货机制。\n", + 4 ), //车间设计制造表 @@ -204,31 +231,36 @@ public class TableDataConstantUtil { "车间设计制造", "一、一次线装配", "图纸审核", - null + null, + 1 ), createNode( "车间设计制造", "一、一次线装配", "安装导轨/安装梁", - "根据布局图安装" + "根据布局图安装", + 2 ), createNode( "车间设计制造", "一、一次线装配", "安装元器件", - "安装断路器、接触器、变频器等一次元件。" + "安装断路器、接触器、变频器等一次元件。", + 3 ), createNode( "车间设计制造", "一、一次线装配", "母排加工与安装", - "制作并安装铜排或铝排,连接处需搪锡或镀银处理。" + "制作并安装铜排或铝排,连接处需搪锡或镀银处理。", + 4 ), createNode( "车间设计制造", "一、一次线装配", "一次线接线", - "使用规定颜色的线缆(通常为黑、棕、灰)连接主回路。" + "使用规定颜色的线缆(通常为黑、棕、灰)连接主回路。", + 5 ), // 二、二次线装配 阶段 @@ -236,19 +268,22 @@ public class TableDataConstantUtil { "车间设计制造", "二、二次线装配", "安装端子排、线槽、继电器等二次元件。", - null + null, + 1 ), createNode( "车间设计制造", "二、二次线装配", "下线与套标", - "根据接线图,使用不同颜色的导线(通常为蓝、黄绿、红等)进行测量、裁剪、压接端子并套上打印好的线号管。" + "根据接线图,使用不同颜色的导线(通常为蓝、黄绿、红等)进行测量、裁剪、压接端子并套上打印好的线号管。", + 2 ), createNode( "车间设计制造", "二、二次线装配", "布线与接线", - "将线缆整齐地放入线槽,按照图纸接到对应的端子和元件上。要求横平竖直,牢固可靠。" + "将线缆整齐地放入线槽,按照图纸接到对应的端子和元件上。要求横平竖直,牢固可靠。", + 3 ), // 三、调试、检验与包装发货 阶段 @@ -256,31 +291,36 @@ public class TableDataConstantUtil { "车间设计制造", "三、调试、检验与包装发货", "接线检查", - "对照图纸,进行100%的接线正确性检查。" + "对照图纸,进行100%的接线正确性检查。", + 1 ), createNode( "车间设计制造", "三、调试、检验与包装发货", "接地连续性测试", - "确保所有接地连接可靠。" + "确保所有接地连接可靠。", + 2 ), createNode( "车间设计制造", "三、调试、检验与包装发货", "绝缘电阻测试", - "使用兆欧表测量相间、相对地的绝缘电阻,确保符合标准(通常>1MΩ)。" + "使用兆欧表测量相间、相对地的绝缘电阻,确保符合标准(通常>1MΩ)。", + 3 ), createNode( "车间设计制造", "三、调试、检验与包装发货", "耐压测试", - "施加高于额定电压的测试电压,持续一定时间,检测是否存在绝缘击穿风险。" + "施加高于额定电压的测试电压,持续一定时间,检测是否存在绝缘击穿风险。", + 4 ), createNode( "车间设计制造", "三、调试、检验与包装发货", "功能模拟调试", - "在不接通主电源的情况下,通过外部电源模拟信号,测试控制回路的逻辑是否正确。然后接通主电源,进行空载和带载运行测试。" + "在不接通主电源的情况下,通过外部电源模拟信号,测试控制回路的逻辑是否正确。然后接通主电源,进行空载和带载运行测试。", + 5 ), // 四、清理与包装 阶段 @@ -288,19 +328,22 @@ public class TableDataConstantUtil { "车间设计制造", "四、清理与包装", "清理柜内灰尘、线头等。", - null + null, + 1 ), createNode( "车间设计制造", "四、清理与包装", "张贴铭牌、警告标识、一次系统图等。", - null + null, + 2 ), createNode( "车间设计制造", "四、清理与包装", "使用塑料膜、气泡袋、护角、木箱等对产品进行防护包装,防止运输途中损坏。", - null + null, + 3 ), // 五、文件整理与发货 阶段 @@ -308,13 +351,15 @@ public class TableDataConstantUtil { "车间设计制造", "五、文件整理与发货", "整理随柜文件,通常包括:合格证、出厂检验报告、电气原理图、接线图、元器件说明书等。", - null + null, + 1 ), createNode( "车间设计制造", "五、文件整理与发货", "安排物流,准时发货给客户。", - null + null, + 2 ), //现场实施设计表 @@ -325,35 +370,40 @@ public class TableDataConstantUtil { "接地测试", "条件:在计划时间点前完成测试,接地电阻值完全符合设计要求(通常≤1Ω或按图纸规定),测试报告(含现场照片、测试仪读数、测试人、时间地点)清晰、规范、完整,并准时上传至公司项目管理平台。\n" + "主动发现并解决问题:测试结果初次不合格,但团队能主动、快速地分析原因(如土壤问题、连接点腐蚀等),提出整改方案并实施,最终使电阻值达标。此举避免了项目后期更大的延误和成本。\n" + - "提供优化建议:在测试过程中,发现了设计图中未考虑到的接地隐患,或提出了被采纳的接地系统优化建议,提升了整体安全性" + "提供优化建议:在测试过程中,发现了设计图中未考虑到的接地隐患,或提出了被采纳的接地系统优化建议,提升了整体安全性", + 1 ), createNode( "现场实施设计", "一、现场调试", "现场接线安装及规范", "核心目标: 所有电气接线工作100%符合图纸与规范,布线整齐、标识清晰、现场安全整洁,为后续调试奠定坚实的硬件基础,实现“零隐患”移交。\n" + - "考核维度: 正确性、规范性、安全性、进度。" + "考核维度: 正确性、规范性、安全性、进度。", + 2 ), createNode( "现场实施设计", "一、现场调试", "PLC打点", "核心目标: 高效、准确地验证并确认PLC的每一个输入/输出(I/O)点与现场对应的传感器、执行器动作完全一致,确保硬件层与软件层信号通道100%正确、可靠。\n" + - "考核维度: 准确性、完整性、效率、文档记录。" + "考核维度: 准确性、完整性、效率、文档记录。", + 3 ), createNode( "现场实施设计", "一、现场调试", "传动优化", "核心目标: 通过参数整定、特性调试,使所有传动设备(如变频器、伺服驱动器、直流调速器等)的输出特性完全满足甚至超越工艺要求,确保系统运行平稳、高效、可靠。\n" + - "考核维度: 性能指标、稳定性、效率、技术创新" + "考核维度: 性能指标、稳定性、效率、技术创新", + 4 ), createNode( "现场实施设计", "一、现场调试", "联动调试", "核心目标: 在“单动”和“传动优化”完成的基础上,使整个自动化系统按预设的工艺流程、联锁逻辑和安全策略,自动、稳定、可靠地连续运行,实现项目的最终功能。\n" + - "考核维度: 系统稳定性、逻辑正确性、故障率、团队协作、最终用户满意度" + "考核维度: 系统稳定性、逻辑正确性、故障率、团队协作、最终用户满意度", + 5 ), // 五、项目收尾 阶段 @@ -362,7 +412,8 @@ public class TableDataConstantUtil { "二、项目收尾", "收尾", "核心目标: 成功通过客户或最终用户的正式验收,所有技术指标、性能要求和文档资料均满足合同要求,项目正式移交,并取得关键的验收证明文件。\n" + - "考核维度: 客户满意度、验收一次性通过率、文档完整性、项目尾款触发" + "考核维度: 客户满意度、验收一次性通过率、文档完整性、项目尾款触发", + 1 ) ); @@ -375,81 +426,94 @@ public class TableDataConstantUtil { "需求分析", "需求调研", "用户访谈、业务场景梳理、现有系统调研", - null + null, + 1 ), createNode( "需求分析", "需求梳理", "功能需求清单编写", - null + null, + 1 ), createNode( "需求分析", "需求评审", "内部评审(团队对齐)、外部评审(客户 / 用户确认)、需求文档定稿(PRD)", - null + null, + 1 ), createNode( "设计阶段", "架构设计", "技术架构选型、系统交互流程图设计、核心模块划分", - null + null, + 1 ), createNode( "设计阶段", "数据库设计", "数据模型设计(ER 图)、表结构定义、索引设计", - null + null, + 1 ), createNode( "设计阶段", "界面与交互设计", "UI 设计(原型图 / 视觉稿)、交互逻辑设计、前端页面结构规划", - null + null, + 1 ), createNode( "开发阶段", "前端开发", "技术选型(框架 / 库)、开发环境搭建、页面开发、前端逻辑实现", - null + null, + 1 ), createNode( "开发阶段", "后端开发", "技术栈确定(语言 / 框架)、开发环境搭建、核心业务逻辑开发、数据库交互实现、接口开发", - null + null, + 1 ), createNode( "开发阶段", "移动端开发", "原生 / 跨平台技术选型、开发环境配置、页面开发、原生功能集成(相机 / 定位等)、接口联调", - null + null, + 1 ), createNode( "测试阶段", "功能测试", "单元测试验证、集成测试(模块间交互)、系统测试(全流程功能)、回归测试(Bug 修复后)", - null + null, + 1 ), createNode( "部署上线", "环境准备", "生产环境配置(服务器 / 数据库 / 中间件)、配置文件梳理、安全合规检查(权限 / 加密等)", - null + null, + 1 ), createNode( "部署上线", "部署执行", "部署脚本编写、版本打包与发布、灰度发布策略(若需)、监控工具部署(日志 / 告警)", - null + null, + 1 ), createNode( "部署上线", "上线验证", "功能冒烟测试、数据一致性校验、性能监控(首小时 / 首日)、回滚方案准备", - null + null, + 1 ) - ); + ); } // /** @@ -476,12 +540,13 @@ public class TableDataConstantUtil { * 工具方法:快速创建NodeDTO对象 * 步骤名称默认使用二级节点名称(确保非空) */ - private static NodeDTO createNode(String tabNode, String firstLevel, String secondLevel, String specification) { + private static NodeDTO createNode(String tabNode, String firstLevel, String secondLevel, String specification, Integer sortNum) { NodeDTO node = new NodeDTO(); node.setTabNode(tabNode); node.setFirstLevelNode(firstLevel); node.setSecondLevelNode(secondLevel); node.setSpecification(specification); + node.setSortNum(sortNum); // 默认顺序号为0,可根据需要调整 node.setStepName(secondLevel); // 步骤名=二级节点名(满足非空约束) return node; } diff --git a/ruoyi-oa/src/main/resources/mapper/oa/OaProjectScheduleStepMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/OaProjectScheduleStepMapper.xml index a0e1511..ea9335d 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/OaProjectScheduleStepMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/OaProjectScheduleStepMapper.xml @@ -61,7 +61,8 @@ tab_node, first_level_node, second_level_node, - specification + specification, + sort_num ) VALUES ( @@ -71,7 +72,8 @@ #{item.tabNode}, #{item.firstLevelNode}, #{item.secondLevelNode}, - #{item.specification} + #{item.specification}, + #{item.sortNum} )