我参与过的项目类型比较多,主要包括企业管理系统、Android应用、工业终端软件、车载中控系统、设备管理平台、数据采集系统和软硬件结合类项目。
在项目中,我通常会参与需求沟通、功能整理、数据库设计、接口设计、前后端开发、Android开发、硬件联调和服务器部署。有些项目由多人共同完成,我负责其中的主要模块;也有一些规模较小的项目,是从开发到部署基本独立完成。
企业管理系统是接触比较多的一类项目,通常采用Java和Vue前后端分离的方式开发。系统中会包含用户管理、角色管理、菜单权限、业务数据管理、文件管理、数据统计、操作日志和系统配置等功能。
开始开发前,会先根据客户的实际工作流程整理功能。很多客户一开始只能描述自己平时是怎么操作的,并不能直接说出系统应该有哪些模块。这时需要把他们的工作流程拆分成可以开发的功能,确认每类人员可以查看什么、操作什么,以及不同业务状态之间如何流转。
需求明确后,会根据业务内容设计数据库表和接口。对于存在上下级、分类、审批状态或者多角色协作的业务,会提前把数据关系理清楚,避免项目做到后面才发现表结构无法支持。
在权限管理方面,做过角色权限、菜单权限、按钮权限和数据范围控制。例如普通员工只能查看自己的数据,部门负责人可以查看本部门数据,管理员可以查看所有数据。除了页面上隐藏按钮,后端接口也会进行权限判断,避免用户直接调用接口操作无权限的数据。
在业务功能中,也做过Excel导入导出、文件上传下载、批量处理、定时任务、数据统计和消息通知等功能。如果导入的数据量比较大,会先对数据格式进行校验,再分批写入数据库,避免一次性处理导致接口超时。
对于耗时比较长的任务,例如批量文件处理、数据同步或者设备任务,不会让前端一直等待接口返回,而是将任务放到后台执行。前端可以查看任务状态、执行进度和失败原因,出现问题后也可以重新执行。
Android应用方面,做过普通手机应用,也做过平板、工业一体机和车载终端应用。这类项目通常需要和后台系统配合使用,通过接口获取业务数据、上传操作结果或者接收平台下发的任务。
普通Android项目中,主要完成登录、业务列表、详情展示、拍照上传、文件下载、消息提醒和个人设置等功能。工业终端和车载应用则更加关注长期运行的稳定性,需要处理开机启动、全屏显示、横屏布局、后台服务和网络断开后的自动恢复。
部分设备的Android系统经过厂家定制,与普通手机系统存在差异。有些权限可以直接使用,有些功能则需要厂家提供SDK。例如控制设备重启、读取设备编号、控制屏幕亮度或者调用底层硬件接口。在这种情况下,需要根据设备文档和厂家技术人员一起进行调试。
我也参与过车载中控和设备控制类项目。界面上会展示设备当前状态,并提供开关、调节和控制功能。用户点击按钮后,应用不会简单地直接修改界面状态,而是先向硬件发送控制指令,等硬件返回执行结果后再更新页面。
这样可以避免界面显示已经开启,但实际设备并没有执行成功的问题。如果硬件没有返回结果,系统会提示操作超时;如果设备掉线,则会将控制功能暂时禁用,并提示检查设备连接。
硬件对接过程中,会根据厂家提供的协议开发通信功能。例如一条指令中可能包含帧头、设备地址、命令类型、数据长度、具体参数和校验值。程序需要按照协议生成指令,发送给设备,再把设备返回的数据解析成温度、开关状态、传感器数值或者故障信息。
实际联调时,经常会遇到文档与设备返回数据不完全一致的情况。此时需要结合发送日志、接收日志和实际设备状态逐项确认。有时问题出在软件解析上,有时是硬件固件问题,也有可能是通信线路不稳定。
对于串口或者网络通信,我会增加心跳检测、超时判断、断线重连和错误日志。数据接收时会先放入缓冲区,再根据帧头和数据长度进行拆包,避免一次接收到多条数据或者只接收到半条数据时解析失败。
在物联网设备平台项目中,做过设备添加、设备绑定、在线状态、数据上报、远程控制、告警记录和运行日志等功能。平台需要同时管理多台设备,并根据设备编号区分每台设备的数据。
设备上线后会定期发送心跳,平台根据最后一次通信时间判断设备是否在线。设备上报数据后,后台会进行格式校验和数据保存,同时把最新状态推送到管理页面。管理人员在网页上发送控制指令后,平台再将指令转发给对应设备。
如果设备数量较多,所有数据都直接写入数据库会造成较大压力,因此部分实时状态会先保存在Redis中,重要数据和历史记录再写入数据库。一些不需要立即完成的任务,则通过消息队列异步处理。
第三方平台对接也是项目中的常见内容。对接过地图、短信、文件服务和其他业务系统。对接前会先确认对方接口的请求方式、鉴权方式、签名规则、参数格式和错误码。
开发完成后,不只是确认接口能够正常调用,还会处理超时、返回数据为空、Token失效和第三方服务异常等情况。重要接口会记录请求和返回日志,方便出现问题时判断是本地系统问题还是第三方平台问题。
在服务器部署方面,我可以独立完成前端、后端和相关服务的部署。项目规模较小时,可以直接在Linux服务器上部署;项目服务较多时,则会使用Docker或Docker Compose。
部署内容一般包括Java服务、Vue前端、MySQL、Redis、RabbitMQ、Nginx和设备通信服务。部署时需要配置数据库地址、服务端口、文件目录、日志目录和环境参数,还要处理容器之间的网络访问。
项目上线后,如果出现接口无法访问、服务自动退出、数据库连接失败或者容器之间无法通信等问题,我会通过系统日志、应用日志、容器日志、端口状态和网络连接逐步排查。
在团队协作中,我会提前和前端、后端、Android及硬件人员确认接口格式和通信协议,减少联调过程中反复修改。接口发生变化时也会及时更新文档,避免不同人员使用不同版本的数据格式。
项目交付前,会对主要业务流程、用户权限、异常操作、设备通信和断网情况进行测试。交付后也会根据客户实际使用情况继续修改功能、解决问题和发布新版本。
这些项目经历让我对一个系统从需求到落地的整个过程比较熟悉。除了写代码以外,也能够处理接口联调、设备通信、现场问题和服务器部署。面对不熟悉的设备或者业务时,我通常会先把流程和协议弄清楚,再逐步完成开发和验证。