一个制造企业的财务账上登记了1.2万多件固定资产盘点完实际在用的只有8000出头差额接近4000件。这4000件里有些是报废没走流程有些是跨厂区调拨没登记还有100多件是重复入账——同一台设备走了两次采购审批财务挂了两笔账。重复入账的那些资产原值加起来快四40万。这个数字出来的时候客户财务总监自己都愣了。资产管理的漏洞不是一天形成的采购、使用、调拨、报废这几个环节各自为政时间一长账实就脱节。后来给他们做了RFID资产管理系统的部署把从采购入库到报废处置这条线打通这样他们的资产数据包括盘点数据做到了稳准快技术选型条码还是RFID之前聊过条码扫描方案。条码方案成本低盘点机1000出头标签几分钱一个。但有两个硬伤必须挨个儿扫描1万件资产就要至少扫描1万次时间太久标签要是脏了、坏了、看不清就扫不上。还有一个问题客户没提但我觉得很关键——条码扫完之后数据还是孤立的扫了多少台、哪些对不上还得回办公室导出Excel手工比对这个环节比扫码本身还耗时。RFID的批量快速读取是核心优势。拿着RFID盘点机走一圈几米范围内的资产标签自动被读到不用对准射频信号会自己找资产。抗金属标签单价两三块能用好几年综合成本不比反复换条码标签高。频率选超高频UHF860-960MHz读取距离2-8米环境、粘贴位置均会影响读距适合走廊巡检。高频HF频段抗金属性能好但读取距离太短跟扫码枪差不多批量读取的意义就没了。系统架构微服务架构Spring Cloud Spring BootJDK8MySQL 5.7主库MongoDB 4.4存标签读取日志和盘点快照Redis缓存MinIO存附件RocketMQ处理异步消息。前端Vue ElementUI移动端UniApp。MongoDB存读取日志的原因是盘点时同一标签会被读到几十次原始记录量很大写MySQL会拖慢盘点接口MongoDB的写入性能扛得住最终结果再异步写回MySQL。服务按业务域拆分资产档案、采购入库、盘点管理、折旧计算、报废处置各自独立。服务间用RocketMQ做事件通知——资产状态从在用变报废时折旧服务收到消息停计提财务对接服务收到消息生成处置凭证。Redis主要做两件事缓存热点资产数据盘点时做实时去重和比对。盘点任务用分布式锁防止同一批资产被两个人同时操作。审批工作流引擎用的Flowable。不同资产类别的报废流程不一样办公设备走行政审批生产设备要走技术评估加财务审批。客户改了好几次审批规则在流程设计器里拖一下就行没改过代码。审批通过之后触发一连串动作——资产状态变更、标签停用、折旧停计提、财务生成处置凭证——这些全靠RocketMQ事件驱动不用人工干预。关键模块实现采购入库要做标签绑定。批量入库逐个绑定EPC太慢做了批量写入读取器一次写五十张。EPC编码规则是类别码3位厂区码2位年月4位流水号5位写入前查库确认不重复-- 标签绑定校验EPC唯一性SELECT COUNT(*) FROM asset_tagWHERE epc_code #{epc} AND status ACTIVE;-- 绑定资产与标签INSERT INTO asset_tag(asset_id, epc_code, bind_time, status)VALUES(#{assetId}, #{epc}, NOW(), ACTIVE);盘点环节核心是批量读取和差异比对。一万个资产盘点短时间内会产生大量读取记录每条同步写MySQL扛不住。做法是先写Redis攒满100条批量刷入MongoDB比对走Redis。发射功率20dBm读取范围收窄到三四米避免走廊里走一圈把隔壁办公室的标签也扫进来。盘点计划按厂区、楼宇、部门三个维度生成手持机读取的标签EPC通过WiFi实时上传后端拿读取结果跟计划清单做比对盘亏的标记待复核盘点人员切到条码模式去现场补扫。inventory:batch-size: 100 # Redis批量刷入阈值flush-interval: 5000 # 定时刷入间隔(ms)dedup-window: 3000 # 同一EPC去重窗口(ms)power-default: 20 # 默认发射功率(dBm)scan-mode: INVENTORY # 模式: INVENTORY|TRANSFER|AUDIT折旧按月批量跑直线法为主部分生产设备用双倍余额递减法一万个资产月结跑完大概两分钟。报废走审批通过后标签置INACTIVEEPC不回收避免历史记录追溯混乱。报废有个细节花了点时间——客户要求报废资产保留在台账上状态变成已报废但不能直接删审计要追溯折旧停了之后原值和累计折旧还要保留在报表上。性能优化标签去重是第一道关。同一EPC在3秒内重复读取直接丢弃能砍掉九成以上的冗余数据。读取记录先写Redis再批量刷MongoDB比对逻辑也在Redis做MySQL只存最终盘点结果。离线盘点也做了——WiFi覆盖不到的区域读取记录存手持机本地回到有网的地方批量上传后端再做一次去重校验。这个功能踩过一个坑两个盘点人离线盘了同一批资产上传后出现重复记录后来在本地缓存里加了盘点任务ID和EPC的联合去重才解决。场景预设方面仓库、办公区、车间的功率和天线参数各一套盘点人员现场切换不用手动调参。落地效果部署的首码RFID资产管理系统上线后第一次全量盘点两个人一天跑完3个厂区无压力。以前同样的量要花两周去清盘主要时间耗在逐台扫码和事后手工整理差异报告上。差异项从第一次盘点时的300多条降到第三次不到20条大部分是标签脱落和跨厂区调拨没登记补上之后就好了。重复入账在数据清洗阶段就解决了后面再没出现过。月结折旧以前财务手工跑半天现在自动跑完出报表。盘点报告也不用手工整理了系统盘点完直接出盘亏清单、盘盈清单和已盘清单按部门分类汇总导出Excel就能给财务对账。分享几点经验系统上线只是工作量的一半另一半在前期数据清洗整理和标签制作粘贴规划。实施的时候这两件事花的时间比系统部署本身还长。标签选型可别图省事金属资产一定要用抗金属标签普通标签贴上去读取率掉到2成甚至直接丢失后面补标签的人工和时间成本更高。盘点场景预设要做不同厂区环境差异大一套参数走天下行不通。上线后留一个月并行期新旧两套台账同时跑发现问题及时修正。直接切的风险太大标签漏绑或者EPC映射错了盘点结果全乱。