去年年底帮一个客户做资产盘点,3000多台设备分布在三个办公区。之前一直是Excel台账加条码标签,每半年全员盘点一次——贴标签、拿扫码枪、人工核对,一轮下来差不多两周。财务跟我说,前一年盘亏了20几台笔记本,不知道是丢了还是离职没退,最后只能做盘亏处理。
这事儿我自己也干过不止一次。大部分企业资产数量上去之后管理方式基本停在十年前,不是不想升,主要是一提"上系统",第一反应就是贵、重、推不动。可不上的结果就是每次盘点都像打仗,而且平时设备被人搬走了、借出去了,台账上根本看不出来。
选型与技术架构
我们当时调研了几种方案。条码最便宜但效率太低,单台必须对准扫描,高处和柜子里的设备根本扫不到。有源RFID精度高但标签一颗几十块还得换电池,几千台设备光电池维护成本一年下来就受不了。最后定了无源超高频RFID,标签成本控制在几块钱,不用电源,寿命十年以上。工作频率860到960MHz,手持终端在3到8米范围内可以批量读取,一秒扫上百个标签。
跟条码比还有个关键区别:RFID标签可以反复擦写。条码印好之后内容就固定了,资产信息变更就得撕了重贴。RFID标签里存的数据能随时更新,像资产归属变更、存放位置调整这些,拿着手持机现场几秒就搞定,不需要回办公室改Excel。不过一般柔性可打印的这种RFID标签,还是要打印出来资产的关键信息。
技术架构方面没搞太复杂。B/S架构web端加移动端APP,后端Java微服务,Nginx做负载。数据库用了MySQL加MongoDB的组合——结构化的资产主数据放MySQL,操作日志、审批流程这种半结构化的扔MongoDB,文件图片走MinIO对象存储。这个组合的好处是中小企业一台服务器就能跑,数据量上去了也能横向扩展,不用一上来就上集群。
选MySQL加MongoDB而不是纯关系型或者纯NoSQL,主要是考虑到资产管理的数据特点。资产台账、分类、组织架构这些是典型的关系数据,关联查询频繁,放MySQL里SQL写起来顺手。但盘点记录、操作日志、审批流程这些数据量增长快、结构经常变,MongoDB的文档模型更灵活,不用每次改需求都去改表结构。
两个踩过的坑
标签选型是第一个坑。一开始用了普通RFID标签,结果贴在金属机柜上的设备读取率只有六成。翻了一下资料,金属表面会反射和吸收射频信号,普通标签的天线阻抗匹配在金属环境下完全偏掉。后来换了抗金属标签——这种标签背面有一层铁氧体材料,能把金属反射的信号屏蔽掉,天线重新做了阻抗匹配。换上之后读取率拉到97%以上,但价格翻了一倍多。
最后的折中方案是按设备类型分标签:贴在金属机柜、金属外壳设备上的用抗金属标签,塑料外壳、木制办公桌这些非金属场景用普通标签。这样成本控制住了,整体读取率也达标。贴之前还做了个小测试——同一个位置不同角度放标签,正面朝向读写器读取率最高,侧过45度就掉到七成。所以部署的时候专门跟客户强调标签朝向要一致。
第二个坑是盘点逻辑。最开始想当然觉得拿着手持机在机房走一圈就完事了,实际操作下来发现有些设备是叠放的——RFID虽然有穿透性,但多层遮挡后信号衰减得厉害,读到后面几层的时候就容易漏。后来加了人工辅助确认环节:手持机扫完自动标记未读取的设备位置,人工去二次核对。
盘点完成后差异比对的核心逻辑其实很简单,数据库里跑一条SQL就出来了:
-- 盘点差异比对:找出未扫描到或位置不一致的资产
SELECT a.asset_id, a.asset_name, a.location, a.last_scan_time, r.scanned_location FROM assets a LEFT JOIN inventory_results r ON a.asset_id = r.tag_id WHERE r.tag_id IS NULL OR a.location <> r.scanned_location ORDER BY a.location;
扫描结果入库之后这条SQL直接把差异项拉出来——没扫到的设备和位置对不上的,一目了然。以前Excel对账手工人肉比对,三千台设备得半天,现在几秒钟出结果。这个逻辑不复杂,但确实省了太多人工。
说个印象深的案例。有个做连锁零售的客户,全国40多个门店,每个门店都有POS机、服务器、空调、货架一堆固定资产。以前总部基本搞不清每家店有多少设备、什么状态,每年审计的时候各地发Excel汇总,数据滞后不说,很多对不上。
给他们部署了首码RFID资产管理系统之后,门店管理员用手机APP就能做日常资产登记和盘点——手持机扫一圈,数据直接上传,总部后台实时看到所有门店资产分布和变动。第一次全面盘点做完他们发现实际资产比账面多了将近6%,之前一直是少算的。这个客户后来把盘点周期从一年一次缩短到每季度一次,审计压力小了不少,财务那边也不用年底突击加班搞盘点了。
当然RFID也不是什么场景都好使。密集金属货架、靠近水管的环境都会干扰信号,这些地方得提前做环境测试,该补人工的还得补。还有就是系统能不能推下去这个问题,技术本身不复杂,真正的难点在于一线同事愿不愿意用——界面不要太重、操作别太繁琐,否则再好的技术方案也白搭。
再说一个容易被忽略的细节:标签打印。资产量大的时候,几百上千张标签不可能手工录入,必须走批量打印。我们的做法是先整理Excel资产清单,导入系统后自动生成关联的RFID标签号,然后批量打印——标签内容里可以把资产编号、名称、所属部门这些关键信息一并编码进去。打印速度很关键,我们用的RFID打印机一分钟能出80张以上,几千台设备的标签半天就能搞定。标签材质也有讲究,普通铜版纸标签在户外或者高温环境下几个月就翘边脱落,得选PET或者陶瓷基材的,虽然贵点但贴上就不用操心了。
权限设计这块也值得提一下。资产管理涉及的角色多——资产管理员、部门负责人、财务、审计,每个人看到的东西和能操作的范围都不一样。我们设计的时候分了数据权限和功能权限两层:数据权限按组织架构划分,部门负责人只能看到自己部门的资产;功能权限按角色划分,比如普通员工只能申请领用和报修,管理员才有盘点、调拨、报废的权限。权限矩阵如果一开始没理清楚,后面改起来很麻烦,这块建议在需求阶段就拉上各角色确认清楚。
总结下来,资产管理这件事技术选型反而不是最难的。RFID的价值不在于技术有多新多炫,在于把以前靠人盯、靠Excel记的活儿,变成数据自动流转、实时可查。省下的不只是盘点那几天的时间,更重要的是日常数据能跟上业务变化的节奏——什么时候该维护了、哪些设备闲置了、哪个部门资产超标了,这些信息及时到位,决策才有依据。