需求10——故障上报流程

在浏览我之前完成的一些小需求时,我发现了一个非常有价值的需求。这个需求可以让我深入了解系统中关于故障上报的功能。通过完善这个需求,我能够全面掌握整个故障上报的流程。

这个需求主要是关于故障上报流程中出现的问题。当前的流程如下:

  1. 员工A上报故障。
  2. 维修工进行处理。
  3. 按理说,处理完毕后应该由员工A进行验收,但因为员工A没空,所以转交给了员工B。
  4. 员工B进行验收,但验收不通过,于是重新发起故障上报。

问题出现在重新发起故障上报的环节:

  • 当员工B重新发起故障上报时,系统界面上显示的上报人仍然是员工A,而不是员工B。
  • 同样地,故障处理完成后,界面上显示的待验收人也依然是员工A,而不是员工B。

我们希望在这种情况下,能够将第二张故障单的上报人和待验收人都改为员工B,而不是继续显示员工A。

具体来说,当员工B点击“验收不通过”时,第一张故障单已经结束。而当员工B重新发起故障上报时,实际上已经生成了一张新的故障单。

现在的问题是,第一张故障单的处理流程没有问题,但在第二张故障单中,上报人和待验收人仍然显示为员工A。我们希望修改系统,使得在第二张故障单中,上报人和待验收人都显示为员工B。

之后我登录甘有博的账号:

当点击验收不通过的时候,第一张故障单就已经结束了。

当点击“提交”后,第二张故障单就已经完成了。

现在我已经大致了解了整个故障上报的流程,并且明确了问题所在。我们的目标很明确:将第二张故障单的上报人和待验收人改为员工B(甘有博)。

在实际操作中,我发现点击“验收不通过”时,系统并没有立即出现问题,只是新开了一张故障单。然而,当我进行到“提交”这一步时,问题就出现了:

为了找到这个问题的根源,我们需要找到相关的接口,然后进入这个接口看看接口的内部逻辑是什么样的。

还有一种方法找到这个接口,就是你去看前端代码中关于“提交”按钮的事件处理函数,看看点击“提交”按钮的时候,事件处理函数调用了哪个接口。我演示一下:

这个接口已经被成功找到了。进入这个接口的后端:

在查看代码的过程中,我发现 controller 层没有什么问题,所以我继续深入查看 service 层的代码逻辑。通过对 service 层的分析,我们可以进一步定位问题并找到解决方案。

在 service 层,我找到了这样一行代码:

这是将 form 对象转换成 entity 对象的代码。具体的转换思路如下:

  1. 属性复制:在转换的过程中,portalForm2Entity 方法会将 form 对象中的属性值复制到 entity 对象中。如果 entity 对象有的属性在 form 对象中不存在,那么这些属性在 entity 中保持默认值(通常是 null)。
  2. 后续处理:在转换之后,代码中可能会对 entity 对象的某些属性进一步赋值和处理。如果某些属性没有被进一步处理,这些属性就一直保持 null,并且在保存到数据库时以 null 的形式存储。

了解了 service 层的代码后,我开始思考:这里有没有对上报人的值进行后续处理呢?结果发现,还真没有。代码中只是让待验收人等于上报人,但并没有明确表明上报人是谁。

因此,为了解决这个问题,我们需要在 service 层添加一些逻辑,将上报人设置为当前用户。具体操作如下:

通过上述修改,我们确保每次创建故障单时,上报人都会被设置为当前用户,从而避免了上报人属性是第一张故障单的上报人的问题。

总结

在当前系统中,创建故障单时,上报人属性没有被正确设置,导致上报人属性总是等于第一张故障单的上报人。

为了解决这个问题,我们需要在 service 层添加逻辑,将上报人明确设置为当前用户,以确保每次创建故障单时,上报人属性都是当前用户。

具体的步骤就是,在将 form 对象转换为 entity 对象之后,设置 entity 对象的上报人属性为当前用户。

通过上述修改,每次创建故障单时,上报人都会被设置为当前用户,从而避免了上报人属性是第一张故障单的上报人的问题。

<think>嗯,用户这次想深入了解AUTOSAR体系下BSW(基础软件)的开发流程和规范,还特别提到了汽车电子软件架构的背景。从用户引用的两篇资料来看,ta应该已经对AUTOSAR的核心价值(软硬件解耦)和BSW的基本模块(模式管理、看门狗等)有了基础认知,现在需要更落地的开发指导。用户可能是个汽车电子的软件工程师,正在参与基于AUTOSAR的ECU开发项目。ta提问的关键词很精准——“流程”和“规范”,说明ta需要的是可操作的框架而非概念科普。值得注意的是,用户刻意在问题里重复了“BSW基础软件开发流程汽车电子软件架构AUTOSAR”这些关键词,暗示ta希望回答能覆盖这些维度的交叉点。上次关于车载软件架构的回答提到过BSW在分层架构中的位置,这次需要更聚焦开发全流程。用户引用的第二篇文章详细拆解了BSW的模式管理模块,这提示ta可能对状态机设计特别关注。另外,ta特意标注“不是用户真正需求”,说明引文只是背景材料,核心诉求是实操流程。BSW开发确实是个系统工程,需要从工具链选型开始讲起。Vector和ETAS的工具市场占有率最高,应该作为典型方案推荐。考虑到用户实际开发中必然遇到的合规问题,ASPICE和功能安全的合规要求必须包含在规范部分。测试环节容易被忽略,但用户作为开发者肯定需要知道模块级测试的方法。对了,BSW开发里最头痛的是配置管理——三层配置(基础/ECU/可变参数)的叠加关系要讲清楚。用户提到的通信管理(ComM)、网络管理(NM)其实都属于模式管理的子模块,可以重点强调BswM的规则引擎设计。最后补充行业现状(比如AP对CP的映射)会比较实用,用户做技术选型时会有参考价值。</think> 基于AUTOSAR架构的BSW(基础软件)开发遵循标准化流程,核心目标是实现软硬件解耦和模块复用。以下是关键开发流程与规范: --- ### **BSW开发流程** 1. **需求分析与架构设计** - 定义ECU功能需求(如通信协议、诊断服务、电源管理) - 使用AUTOSAR方法论划分 **应用层(ASW)**, **运行时环境(RTE)**, **基础软件(BSW)** - 设计 **模式管理(EcuM, BswM)** 状态机,协调ECU唤醒/睡眠流程[^2] 2. **BSW模块配置** - 使用配置工具(如Vector DaVinci, ETAS ISOLAR)生成 **BSW模块描述文件(ARXML)** - 配置关键模块: - **通信栈**:配置CAN/LIN收发器(CanSM, LinSM),定义PDU路由规则 - **存储管理**:配置NvM(非易失性存储)块与Fee(Flash模拟EEPROM) - **诊断服务**:配置DCM(诊断通信管理)UDS协议处理逻辑 - **看门狗**:设置WdgM监控周期与超时动作[^2] 3. **代码生成与集成** - 工具链自动生成 **BSW模块C代码** 及 **静态配置代码** - 手动实现 **复杂驱动(CDD)**(如专用传感器驱动) - 集成验证:确保OS调度、RTE通信与BSW服务兼容性 4. **测试与验证** - **模块级测试**:验证MCAL(微控制器抽象层)驱动(如ADC, PWM) - **集成测试**: - 通信总线信号覆盖率(使用CANoe/CANalyzer) - EcuM状态切换响应时间(唤醒<100ms为行业基准) - **HIL测试**:注入故障模拟(如节点掉线,电压异常) 5. **符合性认证** - 通过 **AUTOSAR Conformance Test** 确保标准兼容性 - 满足 **ISO 26262 ASIL等级** 的安全要求(如WdgM的ASIL-D合规设计) --- ### **核心开发规范** 1. **分层隔离原则** - 应用层严禁直接操作硬件,必须通过RTE调用BSW服务 - 示例:ASW访问CAN数据需通过RTE接口 → COM模块 → PDUR路由 → CanIf驱动 2. **模式管理规范** ```c /* BswM规则引擎配置示例:根据车速切换通信模式 */ RULE_1: IF (VehicleSpeed > 0) THEN Action_EnableCom; RULE_2: IF (VehicleSpeed == 0) THEN Action_DisableCom; ``` 3. **错误处理机制** - 所有BSW模块需实现 **Dem(诊断事件管理)** 错误上报 - 关键错误触发 **EcuM_Shutdown()** 并进入安全状态 4. **工具链一致性** - 全流程使用同一供应商工具链(如Vector/ETAS/EB),避免ARXML兼容性问题 --- ### **典型挑战与对策** | 挑战 | 解决策略 | |---------------------|----------------------------| | 多供应商模块集成 | 严格验证ARXML兼容性(Schema版本) | | 实时性不达标 | 优化BswM规则复杂度,减少状态切换延迟 | | 存储空间超限 | 压缩NvM数据块,启用Fee分页存储 | > **行业趋势**:新一代 **AUTOSAR Adaptive** 支持SOA架构,但BSW开发仍以 **Classic Platform** 为主流,尤其在底盘控制、动力系统等实时性要求高的领域[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值